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 WithEn 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 WithBonjour 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
NextBonjour sabV,
C'est absolument parfait, exactement ce que je cherchais ! Merci beaucoup pour ton aide.
Très bonne journée à toi