EndXlUp

P

pierrot

Guest
Bonsoir à tous.

Qu'est ce qui ne va pas dans cette formule, qui me donne tout le temps la valeur 1 au lieu du nombre de ligne pleine.

Merci du coup de Pouce

With Wformulaire
For no_ligne = 1 To .Range("A1:A6000").End(xlUp).Row ----> =1 ?????
If Cells(no_ligne, 1) <> Numero.Caption Then......
Next no_ligne
End with
 
@

@+Thierry

Guest
Salut Pierrot

Je te suggère :
(sans savoir ce que tu fais ... Wformulaire et Numero...?)

Mais je pense que ce sera mieux ainsi :

With Wformulaire
For no_ligne = 1 To .Range("A6000").End(xlUp).Row
If Cells(no_ligne, 1) <> Numero.Caption Then......
Next no_ligne
End with

... Non ?
Bonne Soirée
@+Thierry
 
P

pierrot

Guest
Merci , cela fonctionne correctement, mais je ne comprends tjrs pas pourquoi ma méthode plantait et pourquoi lorsque l'on fait une recherche en EndXlDown, cela est plus long que dans l'autre sens.

Merci encore

Pierrot
 
@

@+Thierry

Guest
Re Pierrot

Ta méthode plantait car tu indiquais un paroxisme (oups je pense qu'on dit çà lol)....

Enfin tu disais à VBA "Va voir de A1 à A6000 en allant au plus haut"... Donc A1 !!! donc 1 !!!

En général on indique :
Range("A65536").End(xlUp).Row pour être sûr "d'attraper le dernière cellule non vide depuis le bas.... Car Excel a la facheuse tendance à mémoriser les cellules qui viennent d'être vidées quand on lui dit :
Range("A1").End(xlDown).Row (c'est en fait encore plus flagrant quand on utilise xlLastCell)

Voilà pour la petite histoire !
bonne soirée
@+Thierry
 
J

Jacques

Guest
End(xlUp) indique que l'on veut la première cellule de la colonne et la propriété ROW renvoie le numéro de la ligne de la cellule.
donc quand tu mets .Range("A1:A6000").End(xlUp).Row tu demandes le numéro de la 1ère ligne de la plage "a1:a6000" . le résultat est donc forcément 1.
si tu veux avoir le nombre de lignes il te faut écrire :
For no_ligne = 1 To .Range("A1:A6000").Rows.Count
Tu trouveras des explications peut-être plus claires que les miennes dans l'aide en ligne de visual basic.
Bon courage
 
@

@+Thierry

Guest
Bonjour Jaques, et Pierrot et le Forum,


Merci pour tes explications complémentaires, par contre écrire :

For no_ligne = 1 To .Range("A1:A6000").Rows.Count
équivaut à écrire :
For no_ligne = 1 To 6000

Donc pas très utile dans le cas présent...
Sur ce, bonne journée

@+Thierry
 

Discussions similaires

Réponses
1
Affichages
333

Statistiques des forums

Discussions
314 022
Messages
2 104 695
Membres
109 110
dernier inscrit
kld