union(.range( = limité ???

  • Initiateur de la discussion Initiateur de la discussion steve
  • 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 !

S

steve

Guest
bonsoir
j'ai ce code qui me permet de selectionner des colonne non adjacentes.mais mon proble et qu'il y en a presque 100 et quand je rentre mon code au bout d'un certain nombre l'ecriture se met en rouge !! comment je peux faire?

dim r as long
r = selection.row
with activesheet
union(.range('a'& r), . range('b'& r) .....etc...jusqu'au momen ou ......
Merci.
 
Bonsoir STeve, le Forum

Tel que je vois on dirait qu'UNion est limité à Trente arguments...

Ceci dit on peut 'barbatruquer' facilement 😉

Option Explicit

Sub TestUnionOnUnion()
Dim Cell As Range
Dim MyRangePart1 As Range
Dim MyRangePart2 As Range
Dim MyBigRange As Range

Set MyRangePart1 = Union(Range('A1'), Range('A10'), Range('TOTO'))
Set MyRangePart2 = Union(Range('B1'), Range('B10'))
Set MyBigRange = Union(MyRangePart1, MyRangePart2)


   
For Each Cell In MyBigRange
        Cell.Interior.ColorIndex = 3
   
Next


End Sub


Tu noteras que TOTO est une plage nommée de cellules non-contigues ce qui est aussi en soit une autre solution...

Bonne Soirée
[ol]@+Thierry[/ol]
 
tu veux dire que sur ma feuille si je selectionne mes cellule sur une ligne au hazard et que je nomme cette plage apres lors de l'execution de la macro ca pourrait marcher.? ca serait tellement plus simple.
 
Bonsoir steve, _Thierry,

En complément du post de _Thierry, mise à part la plage nommée (sans aucun doute la meilleure solution), je pense qu'il peut être aussi très simple de procéder par une boucle, du style :
Dim Plage As Range
Dim r As Long
Dim
i As Integer, Colonne As Integer
      r = Selection.Row
      With ActiveSheet
            'Définition de la première cellule de la plage souhaitée
            Set Plage = .Cells(r, 1)      '(à adapter)
            'Union avec les autres cellules à l'aide d'une boucle
            For i = 1 To 99                    '(pour une plage de 100 cellules)
                  'Détermination de la colonne de chaque cellule voulue
                  Colonne = Choose(i,1,2,5,15,27,28,36,.....)           '(à adapter et compléter)
                  'Union
                  Set Plage = Union(Plage, .Cells(r, Colonne))
            Next i
            Plage.Select
      End With
Cordialement,


PS : Heu...😱   _Thierry, je suppose que c'était juste pour donner un exemple à notre ami steve, mais...

Au lieu de :
For Each Cell In MyBigRange
      Cell.Interior.ColorIndex = 3
Next
moi, j'aurais bien vu :
MyBigRange.Interior.ColorIndex = 3
C'est plus simple et plus rapide, non ?
 
Bonsoir Didier, re Steve

Heu :unsure: Didier je pense que c'est une blague ? non 😉


Oui c'était pour éviter la MsgBox et un 'claquage de souris' à Steeve !!


Bonne soirée
[ol]@+Thierry[/ol]


PS très sympa ta boucle 😉
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
12
Affichages
606
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
902
Réponses
0
Affichages
654
Retour