Fusion de plusieurs plages

Bonjour à tous !

Je suis confrontée à un problème dont, je pense, la solution est toute bête, mais bizarrement voilà plusieurs heures que je suis dessus, que je parcoure internet, et je ne trouve rien qui répond à ma demande...

J'aimerais fusionner et appliquer une mise en forme sur plusieurs plages d'une même feuille en un seul coup. Voici un exemple, qui marche et fait exactement ce que je souhaite :

Set plage = Range("I1:J1, K1:P1, Q1:S1")
With plage
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .MergeCells = True
        .Font.Bold = True
        .Font.Size = 11
        .Borders.Weight = xlMedium
        .EntireColumn.AutoFit
End With

En revanche, et là est tout mon problème, les colonnes sont en réalité des variables. J'ai donc essayer de changer ma variable plage de la manière suivante :

'Dans ce cas précis, derniere_colonne = 7 pour retrouver les colonnes précédentes
Set plage = Application.Union(Range(Cells(1, derniere_colonne + 2), Cells(1, derniere_colonne + 3)), Range(Cells(1, derniere_colonne + 4), Cells(1, derniere_colonne + 9)), Range(Cells(1, derniere_colonne + 10), Cells(1, derniere_colonne + 13)))

En faisant un plage.Select, les plages qui m'intéressent sont bien sélectionnées, cependant elles ne sont pas indépendantes les unes des autres, comme elles l'étaient avec mon premier code : la fusion de ces plages en 3 cellules distinctes n'est de fait pas possible...

J'ai ensuite essayé de partir dans des formules farfelues du style ci-dessous, mais comme c'était à prévoir, ce code n'est pas concluant...

Set plage = Range(Columns(derniere_colonne + 2) & "1:" & Columns(derniere_colonne + 3) & "1," & Columns(derniere_colonne + 4) & "1:" & Columns(derniere_colonne + 9) & "1," & Columns(derniere_colonne + 10) & "1:" & Columns(derniere_colonne + 13) & "1")

Je suis à la recherche des bonnes idées, si quelqu'un en a...

Je vous remercie d'avance !

LaulauB

Bonjour,

à tester,

a = Range(Cells(1, derniere_colonne + 2), Cells(1, derniere_colonne + 3)).Address
b = Range(Cells(1, derniere_colonne + 4), Cells(1, derniere_colonne + 9)).Address
c = Range(Cells(1, derniere_colonne + 10), Cells(1, derniere_colonne + 13)).Address
Set plage = Union(Range(a), Range(b), Range(c))
With plage
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .MergeCells = True
        .Font.Bold = True
        .Font.Size = 11
        .Borders.Weight = xlMedium
        .EntireColumn.AutoFit
End With

Bonjour sabV,

Merci beaucoup pour ta réponse très rapide !

J'ai testé, malheureusement le problème reste le même : toutes mes plages sont fusionnées en une seule cellule, et non trois...

désolé, je n'avais pas vu qu'il fallait séparer les plages,

a = Range(Cells(1, derniere_colonne + 2), Cells(1, derniere_colonne + 3)).Address
b = Range(Cells(1, derniere_colonne + 4), Cells(1, derniere_colonne + 9)).Address
c = Range(Cells(1, derniere_colonne + 10), Cells(1, derniere_colonne + 13)).Address
addr = Array(a, b, c)
For i = 0 To 2
  With Range(addr(i))
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .MergeCells = True
        .Font.Bold = True
        .Font.Size = 11
        .Borders.Weight = xlMedium
        .EntireColumn.AutoFit
  End With
Next

Bonjour sabV,

C'est absolument parfait, exactement ce que je cherchais ! Merci beaucoup pour ton aide.

Très bonne journée à toi

Rechercher des sujets similaires à "fusion plages"