OVH Cloud OVH Cloud

Définir un range dynamiquement

8 réponses
Avatar
François Racine
Est-il possible de définir un range de manière dynamiquement au lieu de
statiquement tel l'exemple ci-dessous?

With Worksheets(1).Range("a1:a500")

Ainsi si la colonne a des valeurs dans 600 lignes au lieu des 500, on a pas
à modifier le code.

8 réponses

Avatar
Patrick Penet
Si on connait avant le nombre des lignes et que
certaines cellules sont vides :

Dim nL As Long
nL = 600
With Worksheets(1).Range("a1:a" & nL)

Si aucune cellule n'est vide :
With Worksheets(1).Range("a1:" & Range("A1").End(xlDown).Row)

P.


"François Racine" a écrit dans le message de news: %23ISF%
Est-il possible de définir un range de manière dynamiquement au lieu de statiquement tel l'exemple ci-dessous?

With Worksheets(1).Range("a1:a500")

Ainsi si la colonne a des valeurs dans 600 lignes au lieu des 500, on a pas à modifier le code.





Avatar
Jacky
Oui, quand on ajoute les formalités d'usage
Avatar
François Racine
Merci, j'apprécie beaucoup votre aide. Je ne suis pas très ferré mais
j'apprend grâce à vous.
Votre code est intéressant.
Supposons que les lignes sont toutes pleines dans un zone donné mais
non-défini.
Je m'explique: Lundi, j'ai 500 lignes dans mon tableau et mardi 600 puis
mercredi 400. N'existerait-il pas une manière de "découvrir" combien de
lignes sont valides puis de définir mon range?

"Patrick Penet" a écrit dans le message de
news: 456db939$0$21149$
Si on connait avant le nombre des lignes et que
certaines cellules sont vides :

Dim nL As Long
nL = 600
With Worksheets(1).Range("a1:a" & nL)

Si aucune cellule n'est vide :
With Worksheets(1).Range("a1:" & Range("A1").End(xlDown).Row)

P.


"François Racine" a écrit dans le message de
news: %23ISF%
Est-il possible de définir un range de manière dynamiquement au lieu de
statiquement tel l'exemple ci-dessous?

With Worksheets(1).Range("a1:a500")

Ainsi si la colonne a des valeurs dans 600 lignes au lieu des 500, on a
pas à modifier le code.









Avatar
MichDenis
| combien de lignes sont valides puis de définir mon range?


Ceci te donne la dernière ligne occupée
de la feuil1

Dim DerLig As Long
On Error Resume Next
With Worksheets("Feuil1")
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
End With
Avatar
Garette
Bonsoir,

La macro suivante utilise la zone en cours qui commence en A1.
On peut la faire commencer où on veut ne changeant A1.

Sub Macro1()
Mazone = Range("A1").CurrentRegion
End Sub
ou
Sub Macro2()
With Range("A1").CurrentRegion
'etc ....
End Sub
Avatar
Patrick Penet
"N'existerait-il pas une manière de "découvrir" combien de
lignes sont valides ?"

Cela dépend de ce que tu entends pas valide.

Si dans une colonne quelconque toutes les cellules sont
remplies, la méthode 2 fait l'affaire.

P.

"François Racine" a écrit dans le message de news: uEC%
Merci, j'apprécie beaucoup votre aide. Je ne suis pas très ferré mais j'apprend grâce à vous.
Votre code est intéressant.
Supposons que les lignes sont toutes pleines dans un zone donné mais non-défini.
Je m'explique: Lundi, j'ai 500 lignes dans mon tableau et mardi 600 puis mercredi 400. N'existerait-il pas une manière de
"découvrir" combien de lignes sont valides puis de définir mon range?

"Patrick Penet" a écrit dans le message de news:
456db939$0$21149$
Si on connait avant le nombre des lignes et que
certaines cellules sont vides :

Dim nL As Long
nL = 600
With Worksheets(1).Range("a1:a" & nL)

Si aucune cellule n'est vide :
With Worksheets(1).Range("a1:" & Range("A1").End(xlDown).Row)

P.


"François Racine" a écrit dans le message de news: %23ISF%
Est-il possible de définir un range de manière dynamiquement au lieu de statiquement tel l'exemple ci-dessous?

With Worksheets(1).Range("a1:a500")

Ainsi si la colonne a des valeurs dans 600 lignes au lieu des 500, on a pas à modifier le code.













Avatar
François Racine
Wow! C'est parfait!
Une fois que l'on a cela comment on fait pour concaténer la valeur dans With
Worksheets(2).Range("a1:" & DerLig)?

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

| combien de lignes sont valides puis de définir mon range?


Ceci te donne la dernière ligne occupée
de la feuil1

Dim DerLig As Long
On Error Resume Next
With Worksheets("Feuil1")
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
End With






Avatar
François Racine
Oublie ma question cela fonctionne. ("a1:a" & DerLig
"François Racine" a écrit dans le message de
news: ew3k9G%
Wow! C'est parfait!
Une fois que l'on a cela comment on fait pour concaténer la valeur dans
With Worksheets(2).Range("a1:" & DerLig)?

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

| combien de lignes sont valides puis de définir mon range?


Ceci te donne la dernière ligne occupée
de la feuil1

Dim DerLig As Long
On Error Resume Next
With Worksheets("Feuil1")
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
End With