Mise en forme VBA

Bonjour,
plutôt novice en vba, je cherche à mettre en forme un document excel et surtout que cette mise en forme évolue en fonction du nombre d'entrées dans le fichier.
Je voudrais pouvoir changer la couleur des lignes toutes le 3 lignes, et séparer ce bloc de ligne par une bordure.
Je joint un fichier exemple de ce que j'aimerai obtenir.
7misene-forme.zip (170.49 Ko)


Merci pour votre aide.
Faroyo

Bonsoir Allmo,

Voici le code de la feuille ou se trouvent les lignes

Private Sub Worksheet_Change(ByVal Target As Range)
  ' Si selection multiple on sort
  If Target.Rows.Count > 1 Then Exit Sub
  If Target.Columns.Count > 1 Then Exit Sub
  ' Vérifier si saisie du Gmid level en colonne A
  If Target.Column = 1 And Target.Value <> "" Then Call MàJ3Lignes(Target)
End Sub

Voici celui de la mise en forme, mis dans un module, mais il n'y a pas d'obligation

Sub MàJ3Lignes(Rng As Range)
  Dim IntColor As Long
  Dim PlgColor As Range
  Dim PlgBorder As Range
  ' Après saisie de Gmid level
  ' Vérifier la couleur précédemment appliquée
  IntColor = Rng.Offset(-3, 0).Interior.Color
  ' Selon la couleur
  If IntColor = 14277081 Then IntColor = 16777215 Else IntColor = 14277081
  ' Mise en couleur des cellules
  With Range(Rng.Offset(-1, 0), Rng.Offset(1, 7))
    .Interior.Color = IntColor
  End With
  ' Mis een forme de la bordure
  With Range(Rng.Offset(1, 0), Rng.Offset(1, 7))
    With .Borders(xlEdgeBottom)
      .LineStyle = xlContinuous
      .ColorIndex = xlAutomatic
      .Weight = xlMedium
    End With
  End With
End Sub

Et enfin, voici le fichier avec tout ça

@+

10mis-en-forme.zip (181.21 Ko)

fais un essai avec ce fichier, il suffit de lancer la macro "mise_en_page

Désolé pour les réponses aussi tardivement.

je vais tester tout cela.

Un grand merci à vous pour votre aide

j'ai oublié de préciser que la feuille sur laquelle se fait la mise en page doit être sélectionnée

Bonjour Gullaud,

je ne voudrais pas abuser mais je me permets tout de meme de te recontacter afin de t'exposer un nouveau pb.

Je voudrais créer une boucle VBA afin de remplacer la formule excel ci-dessous.

J'ai fais plusieurs essais, mais je n'arrive à rien.

{=IF(A3="","",IFERROR(INDEX($A3:$A$118,SMALL(IF($C2:$C$117=$C2,ROW($A3:$A$118)-(ROW()-1)),2)),"Inconnue"))}

{=IF(A6="","",IFERROR(INDEX($A6:$A$118,SMALL(IF($C5:$C$117=$C5,ROW($A6:$A$118)-(ROW()-1)),2)),"Inconnue"))}

etc,...

Je te joins le fichier au cas ou.

Merci

Faroyo

3misene-forme.zip (169.91 Ko)

je n'ai pas le temps ces jours-ci je regarde en fin de semaine ou la semaine prochaine

Bonjour Allmo,

Quand une autre proposition (comme la mienne) a été donnée, si elle ne convient pas, il serait bien de l'indiquer

@+

Bonjour BrunoM45,

désolé de répondre si tardivement mais je rentre juste de congé.

J'ai testé votre solution, elle fonctionne tout à fait et convient parfaitement et je vous en remercie.

Cordialement,

allmo

Rechercher des sujets similaires à "mise forme vba"