• Initiateur de la discussion Initiateur de la discussion pierrot
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
703
Réponses
4
Affichages
580
Réponses
10
Affichages
530
Réponses
5
Affichages
477
Retour