Re : Recherche dans tableau excel
bonjour Zepeto, Le forum,
je n'étais pas là hier alors....je n'ai pas tout suivi.
Je vais répondre ici à test deux questions du message #35
1 :
que représente :c.Address dans le code?
c.Address représente l'adresse de la première cellule
trouvée de la plage de recherche qui correspond à la valeur cherchée. En fait si tu ne retiens pas l'adresse de cette première cellule pour la comparer aux suivantes en fin de boucle. La méthode Find pourrait continuer A Vitae aeternam. Elle permet de savoir que la méthode Find a fait une boucle entière sur la plage et est renvenu à la première cellule, prête comme un bon petit soldat, à repartir. A la fin de la boucle on a la ligne 'While not c is nothing and c.Address<>Adr1' qui elle fait le test.
2 :
Et je ne comprend pas pourquoi on part de "A1"
dans :
Set plage = Feuil1.Range("A1:A" & Feuil1.Range("A65536").End(xlUp).Row)
Décomposons la ligne qui aurait pu se décomper en plusieurs:
Set Cellule1=Feuil1.Range("A1") 'Position de la première cellule de la plage
Set Cellule2=Feuil1.Range("A65536").End(xlup) ' position de la première cellule non vide en partant de "A65536" et en remontant la colonne. Equivalent à se positionner en bas de la colonne et faire CTRL+Touche vers le haut
Set Plage=Feuil1.Range(Cellule1,Cellule2) 'Enregistre la plage aux coordonnée (A1:An)
Imagine pour une raison ou une autre, la possibilité qu'il n'y ait rien en ligne 2. La plage finale serait "A2:A1" avec rien en A2. Incohérent. C'est pourquoi on par de A1. Dans notre cas, que l'entête soit incluse ou pas dans la plage ce n'est pas un problème. Mais pour indication on peut ôter l'entête en faisant Set plage=Plage.offset(1,plage.Rows.count-1). Ce qui décale la plage d'une ligne tout en lui enlevant une ligne.
Pour les question suivante, laisse moi le temps d'examiner cela.
A bientôt