• Initiateur de la discussion Initiateur de la discussion Calvus
  • Date de début Date de début

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 !

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

Réponses
2
Affichages
451
Réponses
1
Affichages
444
  • Question Question
Microsoft 365 créer un macro vba
Réponses
0
Affichages
361
Réponses
22
Affichages
3 K
Réponses
19
Affichages
2 K
Réponses
1
Affichages
796
Réponses
2
Affichages
733