Mise en forme - VBA
Bonjour tout le monde!
j'ai comme le titre le précise, un soucis de mise en forme de mes données excel.
J'aimerai à partir de la "Feuil1":
- merge les données de la colonne A qui ont la même valeur
- créer les bordures de toutes les lignes en fonction des valeurs de la colonne A (le nombre de valeur peuvent changer avec le temps, c'est ce qui me coince ^^)
- et en bonus colorier un ensemble de ligne, un ensemble sur deux, toujours en fonction de la grandeur du merge de la colonne A.
Alors dis comme ça, je sais c'est un peu barbare, je vous joins le fichier excel pour explication. Ce que j'ai en départ en Feuil1 et le résultat attendu en Feuil2. J'ai épuré toutes les autres feuilles ainsi que le code qui ne concernait pas ce problème.
Pour l'instant j'arrive à merge toutes les valeurs de la colonne A. Je laisse le bout de code dans l'excel.
Mais je bloque vraiment sur la grandeur du merge pour chaque valeur.
Est-ce que je devrais créer une fonction qui bordure la ligne pour chaque date avec en paramètre la grandeur du merge? Mais comment récupérer cette valeur?
Bref, j'ai le cerveau qui fume un peu, certainement la pression du vendredi
Merci d'avance à ceux qui auront des tips pour me dépanner!
Salut Beneroz,
voici ton fichier! Pour démarrer la macro, clique en [A1].
Tu arrangeras bien le déclenchement en fonction de tes besoins!
'
If Target.Address = [A1].Address Then
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'
UsedRange.Borders.LineStyle = xlLineStyleNone
UsedRange.Interior.Color = xlNone
iRow = Cells(Rows.Count, 1).End(xlUp).Row
iStart = 1
For x = 1 To iRow
If Cells(x, 1) <> Cells(x + 1, 1) Or x = iRow Then
Range("A" & iStart & ":E" & x).BorderAround LineStyle:=xlContinuous, Weight:=xlMedium
Range("A" & iStart & ":E" & x).Interior.Color = IIf(iColor = 1, RGB(215, 215, 215), RGB(180, 180, 180))
Range("A" & iStart & ":A" & x).Merge
iColor = IIf(iColor = 1, 0, 1)
iStart = x + 1
End If
Next
Range("B1:B" & iRow).BorderAround LineStyle:=xlContinuous, Weight:=xlMedium
Range("D1:D" & iRow).BorderAround LineStyle:=xlContinuous, Weight:=xlMedium
'
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.EnableEvents = True
End If
'A+
hooooo! hooooooo!
Le résultat est juste parfait! je vais aller étudier ton code de ce pas ^^
Merci infiniment