Sélectionner un ensemble de cellules se trouvant sur une seule ligne

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

Je suis à la recherche d'une astuce qui me permettrait d'éviter une corvée.
Dans ma feuille, sur une ligne quelconque, il y a les en-têtes (et uniquement ceux-ci) de plusieurs tableaux qui sont séparés entre eux par une, voir plusieurs colonnes.
Peut-on trouver un moyen simple (et non pas sélectionner toute la ligne et basta...) pour sélectionner tous ces en-têtes et uniquement ceux-ci, sans passer par un "Union" interminable s'il y a beaucoup d'en-têtes ?

Merci pour toute aide.
 

Papou-net

XLDnaute Barbatruc
Re : Sélectionner un ensemble de cellules se trouvant sur une seule ligne

Bonsoir Magic_Doctor,

Une instruction "magique" que je vois malheureusement trop peu employée dans les différents codes proposés sur ce site:

Code:
Rows(1).SpecialCells(xlCellTypeConstants).Select
Sélectionnera toutes les cellules contenant des données, même séparées par des cellules vides, dans la ligne 1.

Attention, ça ne sélectionnera pas les cellules qui contiennent des formules. Il faudrait pour cela remplacer xlCellTypeConstants par xlCellTypeFormulas. L'aide VBA te donnera les différents critères de choix des cellules.

Cordialement.
 

Magic_Doctor

XLDnaute Barbatruc
Re : Sélectionner un ensemble de cellules se trouvant sur une seule ligne

Re

Un commentaire au sujet de la sentence de Papou-net.
Cette méthode est en effet fort pratique. Imaginons qu'il y ait, sur une même ligne de la feuille, plusieurs en-têtes non forcément contigus. Plutôt que d'écrire, par exemple :
VB:
Set celda = [TitreFirstCol] '"TitreFirstCol" est une cellule de l'un des en-têtes des tableaux que l'on a nommée
Set bigplage = Union(celda.Resize(, 2), celda.Offset(, 3).Resize(, 2), celda.Offset(, 6), celda.Offset(, 8).Resize(, 2))
Il est infiniment plus commode d'écrire tout simplement (et ce, quel que soit le nombre d'en-têtes sur une même ligne) :
VB:
Set celda = [TitreFirstCol] '"TitreFirstCol" est une cellule de l'un des en-têtes des tableaux que l'on a nommée
Set bigplage = Rows(celtriproduits.Row).SpecialCells(xlCellTypeConstants)
Car, imaginons un instant qu'il y ait 36 tableaux... Tous à Charenton !
Seulement, voilà, j'ai remarqué ceci. La 1ère syntaxe, bien qu'obèse, marche très bien. Je me suis empressé, dans ma grosse application, de la substituer par la 2ème, et là ce fut un peu le bordel (je suis dirigé au cul du loup, des tris se font tout seul...). Pourquoi ? Je n'en sais rien... Pour y remédier, j'ai écrit ceci :
VB:
Application.EnableEvents = False
Set celda = [TitreFirstCol] '"TitreFirstCol" est une cellule de l'un des en-têtes des tableaux que l'on a nommée
Set bigplage = Rows(celtriproduits.Row).SpecialCells(xlCellTypeConstants)
Application.EnableEvents = true
Et là tout marche correctement.
Donc, ceux qui utiliseraient cette syntaxe et qui seraient confrontés à un problème similaire, le mieux est de l'"encadrer" avec des "EnableEvents".
 

Papou-net

XLDnaute Barbatruc
Re : Sélectionner un ensemble de cellules se trouvant sur une seule ligne

Bonjour Magic_Doctor,

Et là tout marche correctement.
Donc, ceux qui utiliseraient cette syntaxe et qui seraient confrontés à un problème similaire, le mieux est de l'"encadrer" avec des "EnableEvents".
Cela me laisse à penser que tu dois avoir quelque part une procédure du type "Worksheet_SelectionChange", ou autre?

A vérifier.

Cordialement.
 

Magic_Doctor

XLDnaute Barbatruc
Re : Sélectionner un ensemble de cellules se trouvant sur une seule ligne

Bonjour Papou-net,

En effet, exactement !

Mais c'est curieux que cette sentence déclenche les cellules où l'on clique dessus, car TOUTES sont déclenchées simultanément et le résultat... étonnant.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 252
Membres
103 166
dernier inscrit
ZAHRAA