Bonjour,
J'ai du mal à comprendre le code suivant. Bug de VBA Excel ou alors il y a un truc que je n'ai pas compris dans la propriété Range.
Si quelqu'un peut éclairer ma lanterne, je le remercie d'avance.
La plage r est constituée d'une plage rectangulaire de 15 cellules à laquelle est accolée une 16ème cellule (B6).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Sub Bizarre() Dim r As Range Set r = Range("$A$1:$C$5, $B$6") Debug.Print r.address Debug.Print r.count, r.item(16).address, r.item(17).address, r.item(18).address End Sub
r.count renvoie bien la bonne réponse : 16
Mais r.item(16) a pour résultat $A$6.
Encore plus surprenant : r.item(17) et r.item(18) ne provoquent aucune erreur et renvoient respectivement $B$6 et $C$6.
C'est gênant car je voulais parcourir la plage avec une boucle For i = 1 to r.count ... traiter(r.item(i)... Next i et bien sûr le résultat est erroné.
A noter que la boucle For each cel in r ... traiter(cel) ... Next cel fonctionne normalement.
NB. J'ai pensé un instant que ce serait dû à une mauvaise utilisation de Range. Mais si je refais l'expérience en remplaçant la ligne 3 par
et en exécutant la procédure après avoir sélectionné manuellement la région qui m'intéresse, j'obtiens exactement le même résultat !
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set r = Selection
Partager