OVH Cloud OVH Cloud

set range

3 réponses
Avatar
Ducados
Bonjour à tous,
Je voudrais pouvoir dans des macro VBA Excel 2003, utiliser le contenu
d'une cellule pour ne pas coder en dur dans la macro.
Exemple j'ai dans une macro :

Sheets("Data AEH").Select
Set MyRange = Range("A2:O44553")

Je voudrais remplacer dans le Set MyRange, 'O44553', par le contenu de
la cellule B2 de la feuille "Data Param" qui contient 44553

donc quelque chose comme :
Sheets("Data Param").Select
MaxLg = MyRange.Cells(1, 2).Value

Set MyRange = Range("A2:O"&MaxLg)

ou tout autre solution qui me permette de ne pas devoir modifier la
macro a chaque fois que le nombre de lignes à traiter a changé.

Merci beaucoup de votre aide ;o)
Daniel

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

3 réponses

Avatar
Thierry
Bonjour Ducados

Je ne réponds pas directement à la question, mais si la cellule Oxxxxx
ets la dernière cellule remplie de la colonne, on peut assez facilement
la retrouver : range ("O65536").end(xlup) (recherhce de la première
cellule vide en partant du bas). Ce test peut etre fait avant le
lancement de la macro

@+ thierry

Bonjour à tous,
Je voudrais pouvoir dans des macro VBA Excel 2003, utiliser le contenu
d'une cellule pour ne pas coder en dur dans la macro.
Exemple j'ai dans une macro :

Sheets("Data AEH").Select
Set MyRange = Range("A2:O44553")

Je voudrais remplacer dans le Set MyRange, 'O44553', par le contenu de
la cellule B2 de la feuille "Data Param" qui contient 44553

donc quelque chose comme :
Sheets("Data Param").Select
MaxLg = MyRange.Cells(1, 2).Value

Set MyRange = Range("A2:O"&MaxLg)

ou tout autre solution qui me permette de ne pas devoir modifier la
macro a chaque fois que le nombre de lignes à traiter a changé.

Merci beaucoup de votre aide ;o)
Daniel



Avatar
AV
Set MyRange = Range("'Data AEH'!A2:O" & ['Data Param'!B2])

PS : c'est pas une bonne idée de laisser des espaces dans les noms...
Exemple : Dans la cas présent ça oblige à mettre une partie des références 3D
entre apostrophes
AV
Avatar
papou
Bonjour
avec quelquechose comme ça :
Dim MyRange As Range
Set MyRange = Range("A1", Range("E65536").End(xlUp))
Où tu remplaceras E par la colonne qui t'intéresse.
Attention toutefois que les données soient uniformes, c'est à dire qu'il y
ait autant de lignes dans ta dernière colonne que dans la 1ère, parce que
s'il y en a moins, la plage de cellules ne sera pas bonne.
Cordialement
Pascal

"Ducados" a écrit dans le message de news:

Bonjour à tous,
Je voudrais pouvoir dans des macro VBA Excel 2003, utiliser le contenu
d'une cellule pour ne pas coder en dur dans la macro.
Exemple j'ai dans une macro :

Sheets("Data AEH").Select
Set MyRange = Range("A2:O44553")

Je voudrais remplacer dans le Set MyRange, 'O44553', par le contenu de la
cellule B2 de la feuille "Data Param" qui contient 44553

donc quelque chose comme :
Sheets("Data Param").Select
MaxLg = MyRange.Cells(1, 2).Value

Set MyRange = Range("A2:O"&MaxLg)

ou tout autre solution qui me permette de ne pas devoir modifier la macro
a chaque fois que le nombre de lignes à traiter a changé.

Merci beaucoup de votre aide ;o)
Daniel

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net