Une macro qui se refuse curieusement de reconnaître une colonne d'un tableau

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 !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonjour,

J'ai une difficulté avec une macro qui accepte de reconnaître l'ensemble d'un tableau mais pas qu'une seule colonne de ce même tableau.
Dans la PJ je pense avoir tout bien expliqué.
Le problème se trouve dans la macro "CheckItems" où je le détaille.

Merci pour toute aide et m'expliquer pourquoi cette curiosité excelienne.
 

Pièces jointes

Dernière édition:
Re : Une macro qui se refuse curieusement de reconnaître une colonne d'un tableau

Bonjour,

peut être ainsi, si j'ai bien compris... à adapter :
Code:
Dim c As Range
For Each c In [Tableau].Columns(2).Cells
    c.Select
Next c
bon après midi
@+
 
Re : Une macro qui se refuse curieusement de reconnaître une colonne d'un tableau

Re,

permet de boucler sur la collection des cellules de la colonne concernée... mais effectivement on peut se poser la question alors qu'habituellement on boucle sur les items de façon implicite...
 
Re : Une macro qui se refuse curieusement de reconnaître une colonne d'un tableau

En effet, c'est curieux.
Si, je nomme la 1ère colonne de "Tablo2", par exemple, "Tablo2Col1", qui est ni plus ni moins que l'équivalent de "[Tablo2].Columns(1)", et que j'écrive :
VB:
For Each c In [Tablo2Col1]
    blablabla
Next c
ça marche sans problème.

En revanche, si j'écris :
VB:
For Each c In [Tablo2].Columns(1)
    blablabla
Next c
ça plante !

Bizarre, very bizarre mon cher Watson !
 
Re : Une macro qui se refuse curieusement de reconnaître une colonne d'un tableau

Bonjour Magic_Doctor, Pierrot,

oui.. petit bogue Excel..

Je ne le pense pas.

Quand on écrit :

Code:
Sub a()
Dim r As Range
For Each r In Columns("B:E")
  MsgBox r.Address
Next
End Sub
il est logique (et ce serait embêtant qu'il en soit autrement) que ce soient les colonnes qui soient traitées.

C'est à dire les éléments de la collection Columns.

Il est donc logique que cette macro fonctionne sur le même principe :

Code:
Sub b()
Dim r As Range
For Each r In Columns(2)
  MsgBox r.Address
Next
End Sub
Là il y a un seul élément dans la collection.

A+
 
- 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