Range multiple

Calvus

XLDnaute Barbatruc
Bonsoir le forum,

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...

Que faut il faire ?

Merci
 

Calvus

XLDnaute Barbatruc
Bonsoir 00 :):),

Ç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.

Merci et à bientôt ;)
 

eriiic

XLDnaute Barbatruc
Bonjour,

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
 

Discussions similaires