Mise en forme conditionnelle avancé VBA
Résoluyg_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
-
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-
bonjour,
L'écriture est un peu lourde, mais l'approche me semble correcte.
- Tu n'as pas besoin de deux compteurs, i et Position.
- Il est utile d'ajouter "option explicit" en début de module, ce qui te force à déclarer toutes tes variables.
- Il est prudent d'utiliser long et pas integer pour les numéros de lignes.
- le "set maplage" peut être déplacé à l'intérieur du "if"
- dans le set maplage, il est prudent d'ajouter "Sheets(nom)." devant "Columns".
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.
-