explications pour Macro

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 !

Excel_lent

XLDnaute Impliqué
Bonjour à tous (tous incluant toutes bien sûr),

J'ai adapté une macro relevée dans un post (l'auteur se reconnaîtra sûrement).
Elle consiste à trier et mettre en évidence des numéros choisis.
Un cas me pose problème (voir fichier joint).

Qui peut m'apporter des éclaircissements ?
Merci et bonne journée
 
rebonjour excel_lent

oui oui, l'auteur c'est reconnu 🙂

Dans le fichier initiale, toutes les données partaient de la colonne A, c'est donc très logiquement que je recherchais la dernière cellule non vide dans cette colonne.

Ceci ne fonctionne plus si la dernière ligne non vide ne commence pas en A.

Ce qui est le cas dans ton fichier pour la troisième ligne.

Il faut donc définir précisément la plage complete des entrées, pour ceci, je connais 3 méthodes :

1) on peut lancer la boucle d'une manière arbitraire du style for each c in range('a1:a100'). mais ceci implique de modifier la macro dès que l'on rajoute des lignes, ou fait travailler la macro sur 100 lignes alors que 3 auraient pu suffire.

2) on définit la plage par usedrange (qui va nous donner l'ensemble des cellules de la feuille) puis redéfinir cette plage par un resize :

Dim plage As Range
Set plage = ActiveSheet.UsedRange
Set plage = plage.Resize(plage.Rows.Count, 10)

puis ensuite boucler sur cette plage : for each c in plage.

3) rechercher précisément la colonne la plus longue afin de trouver la dimension exact de la plage pour lancer notre boucle, c'est cette méthode que j'ai utilisé dans la macro :

Dim max As Integer

max = Cells(65536, 1).End(xlUp).Row
For i = 2 To 10
If Cells(65536, i).End(xlUp).Row > max Then max = Cells(65536, i).End(xlUp).Row
Next i

For Each c In Range(Cells(1, 10), Cells(max, 10))
numero = 1

le reste de la macro reste inchangé.

de plus, en regardant ta macro RAZ, je me permet de te préciser que l'on est pas obligé de sélectionner une plage pour travailler avec :
Range('A1:J4').ClearContents

ceci suffit amplement.

en espérant t'avoir aidé.

salut

edition : oups salut baptiste 🙂

Message édité par: Hervé, à: 31/10/2005 15:20
 
- 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

Discussions similaires

Retour