Si je veux sélectionner 2 plages distinctes, ce code fonctionne :
VB:
For Each c In .Range("C2:C20,D2:D20")
Or, avec un tableau nommé, le code suivant me sélectionne les 3 colonnes, de C à E.
VB:
For Each c In .Range([Donnees].Columns(Col).SpecialCells(xlVisible), [Donnees].Columns(Col + 1).SpecialCells(xlVisible))
Ce que je souhaite, évidemment, c'est sélectionner uniquement mes 2 plages distinctes, et non pas de x à y.
J'ai tenté l'écriture avec Cells(), Offset(), Array(), Union(), et chaque fois plantage...
Ça ne fonctionne pas. Comme je le disais, j'ai essayé le Union Range.
Le problème vient du tableau nommé [Donnees]. Je n'arrive pas à trouver la syntaxe correcte.
Du moins la syntaxe fonctionne mais pour une plage continue, pas discontinue.
dans ta syntaxe qui fonctionne tu lui passe des adresses en texte, dans l'autre des Range.
Il n'interprète pas de la même manière, la 2nde correspond à :
Set pl = Range([A1], [B3]) ' qui défini la plage A1:B3
Ce qui devrait aller :
VB:
Set pl = Union([Donnees].Columns(col).SpecialCells(xlVisible), [Donnees].Columns(col + 1).SpecialCells(xlVisible))
Mais méfie-toi de SpecialCells() qui te génère une erreur si la plage est vide. Teste avant
eric