Re : Comment maîtriser RANGE(IVxx) en col ou row ?
Bonsoir à tous
Ces derniers temps j’ai souvent été confronté à des recherches de dernières colonnes
ou rangées vides, le forum m’a bien aidé dans des exemples bien précis
Maintenant j’aimerais bien maîtriser par moi-même car je n'ai pas tout compris ,afin de ne pas déranger de trop les XLnautes … et pouvoir aider les nouveaux membres par la suite
A savoir : .RANGE(IV ?).END(xl ?).COLUMN ( ou ROW)
Comme dans mon exemple joint
DerCol = .Range("IV1").End(xlToLeft).Column
Derlig = .Range("IV2").End(xlUp).Row
J’ai un résultat bon et un mauvais !!
Aide EXCEL sur RANGE(IVxx) , pas trouvé ??
Le but :ajouter en feuille1 la ligne B10 de « Lot jour » plus le titre « Lot7 » en I1 dans cet exemple adaptable dans une autre appli. , comme M1 par exemple
J’ai passé pas mal d’heures avec des exemples différents non concluant pour en déduire une explication !!
Quelqu’un peut-il m’expliquer clairement et détaillé la syntaxe et méthode à utiliser quelque soit l’emplacement des cellules recherchées ? ( donc en général) comme si IV1 pour ROW s’applique toujours à A1 ou encore IV2 s’applique à B1 en COLUMN ?
Je pense que cela aidera aussi bon nombres de développeurs qui sollicitent le forum
C’est peut-être un mini tutorial utile pour tous
A vous messieurs ou dames les experts VBA !!!
Merci d’avance et bonne soirée
Hervé
Salut
comme PascalXLD est déjà passé, je vais juste dommer la manière de visualiser les commandes VBA sous Excel
Range("Ax").end(xldown)
=>Ax = sélectionné => <Ctrl>+<flèche de déplassement vers le bas)
- A(x+1) vide : Sélectionne la première cellule non-vide de A ou sa dernière cellule (ligne 65536 si colonne A vide) en allant vers le bas
- A(x+1) non-vide et Ax non-vide :sélectionne la dermière cellule juste avant la première cellule vide en allant vers la bas
- A(x+1) non-vide et Ax vide => sélectionne A(x+1)
en plus simple : s'arrête à la dernière cellule avant un changement d'état non-vide / vide et à la première qui suit un changement vide / non-vide où la dernière de la colonne dans le sens de recherche
C'est la même chose pour les autres instructions.
Donc, pour trouver la fin d'une liste dans une colonne, il y a deux solution:
A - Range("A1".end(xldown)
B - Range("A65536").end(xlup)
Mais ces deux solutions ne sont pas identiques en résultats, suivant les conditions que présentent les cellules de la colonne A
Si j'ai des données en A1:A10 uniquement, les 2 solutions me donnent A10
Si j'ai des données en A2:A10 uniquement : A me donnera A2 et B me donnera A10
si j'ai des données en A1:A10 et A15:A20 : A me donnera A10 et B me donnera A20
Il faut donc adapter l'instruction à ce qu'on attend. Et faire des tests supplémentaires suivant le but à atteindre
Quand on utilise les constantes XlUp et XlDown, c'est qu'on est en recherche de ligne(row), puisque le déplacement s'effectue dans le sens vertical.
Dans le sens horizontal, les cellules de départ seront celle de la première colonne (A) ou celle de la dernière (IV) (enfin, généralement) et les constante XlToRight (vers la droite) et XlToLeft (vers la gauche) concerneront une colonne (Column)
On peut utiliser les différentes syntaxes de définition de cellules
Pour trouver la dernière colonne utilisée en ligne 12, je pourrais écrire :
Range("IV12").end(xltoleft)
[IV12].end(xltoleft)
cells(12,256).end(xltoleft)
cells(12,"IV").end(xltoleft)
ce qui revient sous Excel à activer la cellule IV12 (la dernière colonne en ligne 12)
Puis à taper les touches <Ctrl>+<flèche de déplacement gauche>
J'espère avoir été compréhensible
Le range sur lequel on applique la méthode End est l'origine à partir de laquelle on recherche dans le sens précisé par la constante Xl
A+