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

sélectionner simultanément la 1ère ligne de 2 tableaux contigus

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 !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonjour,

Dans ma feuille, j'ai 2 tableaux nommés : "Tableau1" & "Tableau2".
Ces 2 tableaux ont la même hauteur et sont séparés par une colonne.
Je voudrais sélectionner simultanément la 1ère ligne des 2 tableaux en excluant la cellule appartenant à la colonne qui les sépare.
J'ai tenté ainsi :

Set BigTableau = Union(Tableau1, Tableau2)
BigTableau.Rows(1).Select

Ça ne me sélectionne que la 1ère ligne du 1er tableau ("Tableau1").

Comment s'y prendre ?
 
Bonjour le fil, le forum

@Magic_Doctor
Toujours cette réticente à joindre un petit fichier XL...
Pourtant ca facilite grandement la résolution des questions, non ?

Testé donc sans PJ
VB:
Sub a()
Dim aa As Range, bb As Range
Set aa = [toto].Item(1).Resize(, [toto].Columns.Count)
Set bb = [titi].Item(1).Resize(, [titi].Columns.Count)
Range(aa.Address & "," & bb.Address).Select
End Sub
 
Dernière édition:
Bonjour à tous,
Si ce sont des tableaux excel (via la commande Insertion/Tableau) ou non, on peut essayer:
VB:
Union(Range("Tableau1").Rows(1), Range("Tableau2").Rows(1)).Select
 
Dernière édition:
Bonjour mapomme

Je connais quelq'un qui m'a dit qu'il fallait éviter d'écrire son code sur une seule ligne
Question lisibilité 😉

Ah ce sacré rhume!
Union([toto].Rows(1), [titi].Rows(1)).Select

PS: Je me demande bien pourquoi il faut passer par un Select ?
 
Bonjour Staple1600,

Pour commencer, j'ai écrit n'importe quoi, j'aurais dû mettre :
Set BigTableau = Union([Tableau1], [Tableau2])
BigTableau.Rows(1).Select

Mais ça ne marche quand même pas (toujours la 1ère ligne du 1er tableau qui est sélectionnée).

Alors, j'ai bidouillé le truc suivant qui marche (pour la 1ère ligne, facile pour les autres, modifier l'Offset) :
Set BigTableau = Union([Tableau1], [Tableau2])
Set BigTableau = Union([Tableau1].Offset(0, 0).Resize(1, col1), [Tableau2].Offset(0, 0).Resize(1, col2))

"col1" étant le nombre de colonnes du tableau "Tableau1"
"col2" étant le nombre de colonnes du tableau "Tableau2"

C'est un peu lourd tout ça...

Puisque tu veux une PJ, je la mets donc.
Voir la macro "SelectTableaux" dans le module standard "Módulo1".
 

Pièces jointes

Re

Chez moi, mon code et celui de mapomme fonctionne.
Et j'ai testé en suivant la contrainte de ta question
Deux tableaux toto et titi, séparés par une colonne.
Dernier code testé et qui fonctionne
Union([toto].Rows(1), [titi].Rows(1)).Select
 
Bonjour,

Pour faire simple :

VB:
' Solution
Dim BigTableau As Range
Set BigTableau = Union([Tableau1], [Tableau2])
Union(BigTableau.Areas.Item(1).Rows(1), BigTableau.Areas.Item(2).Rows(1)).Select

La variable BigTableau contient deux tableaux soit :
- La première plage dans le range Areas(1)
- La deuxième plage dans le range Areas(2)
donc la sélection ci-dessus de la première ligne des deux plages.

Ps : Pour connaitre le nombre de plage avec l'union : MsgBox BigTableau.Areas.Count

Laurent
 
Bonsoir tout le monde et merci pour vos réponses.

J'ai retenu celle de Staple1600, la plus concise à mon sens.
Celle de laurent950 est intéressante aussi, bien que plus longue.
Je ne connaissais pas "Areas.Item(x)". J'imagine qu'il y a autant de x que de fragments du tableau (en fait la plage) qui résulte de l'union de plusieurs tableaux (plages) non contigus.
Quel serait l'intérêt de cette solution par rapport à celle de Staple1600 ?
 
Vous avez choisie qu'elle code pour celui de Staple1600 ?
- il y a deux tableaux distinct avant l'union pour eux

Pour mon code il est court ? et puis une fois l'union faite la sélection se fait via le seul tableau crée si j'ai bien compris votre demande
 
Quel serait l'intérêt de cette solution par rapport à celle de Staple1600 ?
Je propose de faire l'union des deux plages et de faire la sélection directement depuis
cette union ?

Dim BigTableau As Range
' Mise en mémoire des deux plages dans la globalité.
Set BigTableau = Union([Tableau1], [Tableau2])
' Résultat depuis l'union des deux plages.
Union(BigTableau.Areas.Item(1).Rows(1), BigTableau.Areas.Item(2).Rows(1)).Select
 
Dernière édition:
Bonjour laurent950,

Union(BigTableau.Areas.Item(1).Rows(1), BigTableau.Areas.Item(2).Rows(1)).Select

Ta proposition fonctionne. Cependant imaginons que tableau1 et tableau 2 soient alignés mais sans colonne séparatrice, alors ta syntaxe aboutit à une erreur car BigTableau.Areas.Item(2) n'existe pas. Les autres syntaxes fonctionnent dans les deux cas. Mais dans le cas précis de la question de Magic_Doctor, ta solution est bonne.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…