Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

DoubleZero

XLDnaute Barbatruc
Bonjour, Calvus , le Forum,

Je crains de ne pas comprendre le besoin... Un essai, malgré tout, en pièce jointe.

A bientôt
 

Pièces jointes

  • 00 - Calvus - Plage, palmes, masque et tuba !.xlsm
    19 KB · Affichages: 30

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
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…