Excel-VBA - Macro s’exécutant sans mise en forme conditionnelle

excelfresh

XLDnaute Nouveau
Bonjour!
J’ai un problème avec une macro qui s’exécute sans application de la mise en forme conditionnelle.
Pouvez-vous m’aider à adapter la formule suivante dans mon code ?
"=NON(MOD(SOMME(N($B$2:$B2<>$B$3:$B3));2))"
La macro l’inscrit bien dans la formule de MFC. Mais rien ne se passe.
Lorsqu’on exécute la macro, enregistre le fichier et le ferme. À la réouverture du fichier, La MFC s’applique bien.
J’aimerai qu’elle s’applique directement après la validation du bouton <<Nvlle Ligne>>.
Aidez-moi, je vous en prie.
 

Pièces jointes

  • mise en forme auto.xlsm
    21.7 KB · Affichages: 87

Staple1600

XLDnaute Barbatruc
Re

@excelfresh
1) On se sait toujours ce que tu cherches à faire avec ta formule
(marquer des doublons peut-être?)

2) je ne sais pas ce que tu penses de ma version "light"
(je ne parle pas de la formule)
mais du reste de la macro, est-ce que ma version newline2 produit les même effets que newline ?

3) Pourquoi n'utilises-tu pas la fonctionnalité Tableau ?
(ListObject)
 

excelfresh

XLDnaute Nouveau
Re

@excelfresh
1) On se sait toujours ce que tu cherches à faire avec ta formule
(marquer des doublons peut-être?)

2) je ne sais pas ce que tu penses de ma version "light"
(je ne parle pas de la formule)
mais du reste de la macro, est-ce que ma version newline2 produit les même effets que newline ?

3) Pourquoi n'utilises-tu pas la fonctionnalité Tableau ?
(ListObject)
A l'intérieur du tableau je souhaiterais que dès qu'il y a changement de valeur en colonne B, la couleur de remplissage des lignes change, alternativement, un coup sans remplissage, un coup orange clair, ainsi de suite. D'où la formule "=NON(MOD(SOMME(N($B$2:$B2<>$B$3:$B3));2))" dans la macro. Et j'aimerais aussi ajouter des lignes à ce tableau par le haut (ligne3).
Merci
A+
 

excelfresh

XLDnaute Nouveau
Re

Dans ce cas, utilises la fonctionnalité Tableau
Le changement de couleur se fait automatiquement ;)
Je te laisse découvrir ce dont je parle avec cette vidéo
https://support.office.com/fr-fr/ar...rmations-1c3d9852-4b0b-4496-a1fc-30c5121fb05e

PS: je précise que je n'ai pas de lien particulier avec Microsoft
Je viens juste de faire un G..gl..g ;)
Merci pour la vidéo. Elle ne m'aide pas.
Dans mon tableau, les lignes ayant les valeurs identiques qui se suivent en colonne B doivent avoir le même remplissage. Du coup on porrait avoir 2 lignes avec sans remplissage, ensuite 3 lignes avec un remplissage orange clair, ensuite une ligne sans remplissage, ensuite 2 lignes avec un remplissage orange clair.
En fait le remplissage du tableau doit dépandre des valeurs en colonne B
 

Staple1600

XLDnaute Barbatruc
Re

Alors pour qu'on finisse par avancer
joins un nouveau fichier exemple mais avec deux onglets
•le premier étant la situation initiale (de départ donc)
•le second onglet étant le résultat à obtenir après l'insertion d'une ligne
(donc mettre en forme manuellement sur l'onglet ce qu'on doit obtenir après l’exécution de la macro)
 

excelfresh

XLDnaute Nouveau
Re

Alors pour qu'on finisse par avancer
joins un nouveau fichier exemple mais avec deux onglets
•le premier étant la situation initiale (de départ donc)
•le second onglet étant le résultat à obtenir après l'insertion d'une ligne
(donc mettre en forme manuellement sur l'onglet ce qu'on doit obtenir après l’exécution de la macro)
Ci-Joint un nouveau fichier
Merci
a+
 

Pièces jointes

  • mise en forme auto.xlsm
    22.9 KB · Affichages: 25

Staple1600

XLDnaute Barbatruc
Re

Une nouvelle macro
(LA formule s'adapte aprés l'insertion d'une ligne)
VB:
Sub new_line3()
Dim DL&, DB&
DL = Sheets("Tabelle1").Cells(Application.Rows.Count, 2).End(xlUp).Row + 1
Range("B3:F3").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
DB = Range("B2").End(xlDown).Row
Formule = "=NON(MOD(SOMME(N($B" & DB & ":$B" & DB & "<>$B" & DB + 1 & ":$B" & DB + 1 & "));2))"
With Sheets("Tabelle1").Range("B" & DB & ":F" & DL)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:=Formule
.FormatConditions(.FormatConditions.Count).SetFirstPriority
.FormatConditions(1).Interior.ThemeColor = xlThemeColorAccent2
.FormatConditions(1).Interior.TintAndShade = 0.799981688894314
.FormatConditions(1).StopIfTrue = False
End With
End Sub
 

excelfresh

XLDnaute Nouveau
Re

Une nouvelle macro
(LA formule s'adapte aprés l'insertion d'une ligne)
VB:
Sub new_line3()
Dim DL&, DB&
DL = Sheets("Tabelle1").Cells(Application.Rows.Count, 2).End(xlUp).Row + 1
Range("B3:F3").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
DB = Range("B2").End(xlDown).Row
Formule = "=NON(MOD(SOMME(N($B" & DB & ":$B" & DB & "<>$B" & DB + 1 & ":$B" & DB + 1 & "));2))"
With Sheets("Tabelle1").Range("B" & DB & ":F" & DL)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:=Formule
.FormatConditions(.FormatConditions.Count).SetFirstPriority
.FormatConditions(1).Interior.ThemeColor = xlThemeColorAccent2
.FormatConditions(1).Interior.TintAndShade = 0.799981688894314
.FormatConditions(1).StopIfTrue = False
End With
End Sub
Merci!
Mais votre code a un petit souci. Assayez d'ajouter deux lignes de suite et vous verrez.
 

Pièces jointes

  • mise en forme auto.xlsm
    23.6 KB · Affichages: 39

Staple1600

XLDnaute Barbatruc
Re

Les petits soucis sont de bon augure.
Cela permets de remettre l'ouvrage sur le métier ;)
Je teste des bouts de code.
Je les propose au demandeur pour qu'il les teste à son tour.

Depuis le début tu dis que ta formule n'a pas de problème.

Je fais donc ma macro avec ce postulat de base.
 
Dernière édition:

excelfresh

XLDnaute Nouveau
Re

Les petits soucis sont de bonne augure.
Cela permets de remettre l'ouvrage sur le métier ;)
Je teste des bouts de code.
Je les propose au demandeur pour qu'il les teste à son tour.

Depuis le début tu dis que ta formule n'a pas de problème.

Je fais donc ma macro avec ce postulat de base.
Essayez svp de placer la formule de facon manuelle dans la MFC. Vous verrez ensuite que la formule est bonne.
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 180
Messages
2 085 993
Membres
103 081
dernier inscrit
jeromeolivier.raymond@wat