Selectionner plusieurs plages de cellules dans plusieurs feuilles d'un classeur

jupiter312 Messages postés 2 Date d'inscription mardi 2 février 2010 Statut Membre Dernière intervention 2 février 2010 - 2 févr. 2010 à 16:24
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 2 févr. 2010 à 18:16
Bonjour à tous,
Je débute dans VBA sur Excel et je coince sur la macro suivante (juste à titre d'exemple) :

Sub test()

Dim dad, mom, son As Range

Set dad = Sheet1.Range("A1:H37")
Set mom = Sheet2.Range("A1:H37")

Set son = Union(mom, dad)

End Sub

J'aimerais sélectionner différentes plages de cellules sur plusieurs feuilles et définir la sélection comme un range.
Et là, j'ai "Run-time error 1004", "Method 'Union' of object'_Global'failed".
L'intérêt pour moi est de sélectionner toutes mes plages simplement en pointant mon range "son" par exemple.

Question bonus : peut on contourner cette erreur en nommant les différentes plages?

Votre aide sera vraiment appréciée car je sèche sévère depuis ce matin.

Merci beaucoup

3 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
2 févr. 2010 à 17:39
Bonjour,
1) écris
Dim dam as range, mom as range, son as Range
(Comme tu l'as fait, seule son est définie en Range
2) où as-tu défini Shhet1 et Sheet2 ?
3) de toutes manières : la propriété Union ne peut concerner que des cellules (ou plages) d'une même feuille.
Que pourrait d'ailleurs signifier une plage de cellules appartenant à des feuilles différentes ? Rien ! Imagine donc un peu : si la chose était possible, tu pourrais avoir dans une telles plage des cellules de même adresse mais de feuilles différentes (et c'est en plus pile poil ton cas ! )

Et si tu nous expliquais la finalité recherchée ?

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
jupiter312 Messages postés 2 Date d'inscription mardi 2 février 2010 Statut Membre Dernière intervention 2 février 2010
2 févr. 2010 à 18:00
Bonjour Ucfoutu,

Merci de me répondre.
1) je suis en "option explicit" et donc ne peut me permettre de ne pas déclarer une variable et c'est passé. J'ai changé comme tu me l'as dit mais j'ai toujours le même problème.
2) ce sont mes deux feuilles du classeur que je n'ai pas renommé, étant donné que je travaille sur le classeur actif je n'ai pas pousser plus loin la référence
3)là ça fait mal mais peut être il y en a t-il une autre adaptée à mon besoin? Je travaille sur des données réparties sur plusieurs feuilles.
L'intérêt pour moi est de pouvoir agir sur toutes ces cellules en une fois. C'est dans un but comptable, pas évident à expliquer mais je veux pouvoir copier ou supprimer ces différentes plages. Seulement celles ci n'ont pas les même références d'une feuille à l'autre.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
2 févr. 2010 à 18:16
je suis en "option explicit" et donc ne peut me permettre de ne pas déclarer une variable et c'est passé

oui, mais (me relire) ==>> en Variant ! Le set a clarifié le type, mais... à éviter !

ce sont mes deux feuilles du classeur que je n'ai pas renommé, étant donné que je travaille sur le classeur actif je n'ai pas pousser plus loin la référence 

Non ... mais ainsi oui :
Set dad = Sheets(1).Range("A1:H37")
ou
Set dad = Sheets("nom_feuille").Range("A1:H37")
sauf si tu as défini par ailleurs (et on voit mal ppourquoi) Sheet1 et Sheet2 !

L'intérêt pour moi est de pouvoir agir sur toutes ces cellules en une fois. C'est dans un but comptable, pas évident à expliquer mais je veux pouvoir copier ou supprimer ces différentes plages. Seulement celles ci n'ont pas les même références d'une feuille à l'autre.

Tu ne peux pas (me relire)
Une plage par feuille
Tu peux par contre (mais en as-tu vraiment besoin ?) utiliser un tableau de plages et l'utiliser en boucle sur son contenu ...
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0