XL 2013 Boucle For

Antony38

XLDnaute Nouveau
Bonjour,

Débutant en vba, je cherche une solution à un problème que je n'arrive pas à résoudre.

Dans une boucle :

For i=1 to MaVariable

Mon code de ma boucle

Next


Ma variable est la dernière cellule remplie d'une colonne.

Quelle est l'instruction pour que MaVariable a cette valeur ?

je cherche avec ça :

ActiveSheet.Range(Cellule & ActiveSheet.Rows.Count).End(xlUp)

mais sans résultat.

Avez-vous une solution ?

Merci d'avance
 
Solution
Bonjour
Chargez l'ensemble de la plage à considérer dans un tableau TDon(), comme ça ce sera UBound(TDon, 1)
VB:
Dim TDon(), L As Long, CelDéb as Range, Valeur
Set CelDéb = Selection ' (exemple)
TDon = CelDéb.Resize(CelDéb.Offset(1000000).End(xlUp).Row - CelDéb.Row + 1).Value
For L = 1 To UBound(TDon, 1)
   Valeur = TDon(L, 1)

Dranreb

XLDnaute Barbatruc
Bonjour
Chargez l'ensemble de la plage à considérer dans un tableau TDon(), comme ça ce sera UBound(TDon, 1)
VB:
Dim TDon(), L As Long, CelDéb as Range, Valeur
Set CelDéb = Selection ' (exemple)
TDon = CelDéb.Resize(CelDéb.Offset(1000000).End(xlUp).Row - CelDéb.Row + 1).Value
For L = 1 To UBound(TDon, 1)
   Valeur = TDon(L, 1)
 
Dernière édition:

Antony38

XLDnaute Nouveau
Bonjour Dranreb

Merci
Je ne connais pas les tableaux dans vba

Selection revient à definir un range( "C1":"C35") ?
et OFFset(1000000) défini par la case où l'instruction commence ?

Je pourrais mettre offset(35) puisque les colonnes n'affichent que des jours d'un mois (Max 31 Jours)

Merci de cette promptitude
 

Dranreb

XLDnaute Barbatruc
Oui et non. Selection est souvent un Range représentant la plage sélectionnée avant exécution de la macro. La méthode Offset d'un Range renvoie un autre Range représentant la plage représentée par celui concerné, décalée d'un certain nombre de lignes et éventuellement de colonnes spécifiées.
La méthode Resize d'un Range renvoie un autre Range représentant la plage représentée par celui concerné, redimensionnée d'un certain nombre de lignes et éventuellement de colonnes spécifiées.
1000000 c'est juste un peu moins que ActiveSheet.Rows.Count.
 
Dernière édition:

Statistiques des forums

Discussions
312 215
Messages
2 086 322
Membres
103 178
dernier inscrit
BERSEB50