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!

12classeur1.xlsm (17.04 Ko)

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+

12tips.xlsm (18.74 Ko)

hooooo! hooooooo!

Le résultat est juste parfait! je vais aller étudier ton code de ce pas ^^

Merci infiniment

Rechercher des sujets similaires à "mise forme vba"