Mise en forme conditionnelle avancé VBA

Résolu
Adrien -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -

Bonjour,

Je souhaite faire une mise en forme conditionnelle "avancé" en VBA.

J'ai un tableau ou je veux séparer d'un trait épais dès que la valeur de la donnée de la cellule précédente de ma première colonne n'est plus la même.(trait épais sur le haut de la cellule A2:L2 si A2<>A1 même chose sur A3:L3 si A3<>A2 ,etc...)

J'arrive à m'en sortir avec une mise en forme conditionnelle traditionnel mais je n'ai pas autant d'options qu'en VBA car je ne peux pas faire de trait d'épaisseur standard alors que mon tableau a déjà des bordures de ce type partout donc il faut que je puisse mettre des bordures plus épaisses pour m'y retrouver.

Merci pour votre aide
Windows / Chrome 109.0.0.0

1 réponse

  1. Adirien Messages postés 86 Statut Membre 2
     

    Bonjour,

    Finalement j'ai trouvé par moi même. Certainement pas la façon la plus adroite de faire mais c'est le résultat qui compte, je bricole le VBA plus que je ne le maitrise mais j'arrive à faire des choses c'est déjà ça :

    Sub Test()
    
    Dim nbrl As Integer
    Dim nom As String
    Dim Position As Integer
    Position = 1
    nom = ActiveSheet.Name
    i = 0
    nbrl = Application.WorksheetFunction.CountA(Sheets(nom).Range("$A:$A"))
    
    'Boucle
    Do Until i = nbrl
    Set MaPlage = Columns("A:L").Rows(Position + 1)
    If Sheets(nom).Range("A" & Position).Value <> Sheets(nom).Range("A" & (Position + 1)).Value Then
    MaPlage.Borders(xlEdgeTop).Weight = xlMedium
    
    End If
    
    Position = Position + 1
    i = i + 1
    Loop
    
    End Sub
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      bonjour,

      L'écriture est un peu lourde, mais l'approche me semble correcte.

      1. Tu n'as pas besoin de deux compteurs, i et Position.
      2. Il est utile d'ajouter "option explicit" en début de module, ce qui te force à déclarer toutes tes variables.
      3. Il est prudent d'utiliser long et pas integer pour les numéros de lignes.
      4. le "set maplage" peut être déplacé à l'intérieur du "if"
      5. dans le set maplage, il est prudent d'ajouter "Sheets(nom)." devant "Columns".
      1
      1. Adirien > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         

        Merci pour ces suggestions.

        Pour le point n°1 tu veux surment dire que je peux supprimer le compteur i mais à condition que ma boucle se termine d'elle même par une condition du type répéter la boucle jusqu'à une cellule vide. Car la en l'état m'a boucle se répète selon le comptage du nombre de lignes que contient le tableau.

        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Adirien
         

        Un seul compteur suffit, tu n'as pas besoin de i et de Position.  Tu peux utiliser Position dans le test de fin de boucle.

        0