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

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.
Voici le fichier joint!
MERCI!
 

Pièces jointes

  • mise en forme auto.xlsm
    21.6 KB · Affichages: 24

excelfresh

XLDnaute Nouveau
Bonjour,
As-tu essayé de coller ta formule dans des cellules pour voir le résultat !?
Essaye et tu comprendras
A+
La formule donne FAUX. Là n'est pas le problème. J'ai certainement mal adapter la formule "=NON(MOD(SOMME(N($B$2:$B2<>$B$3:$B3));2))" dans ma macro.
Je tiens à rappeller que je débute en VBA. Et je vous prie de m'aider.
Merci
 

Pièces jointes

  • mise en forme auto.xlsm
    21.5 KB · Affichages: 27

excelfresh

XLDnaute Nouveau
Voici le code de ma macro

Sub new_line()
Dim DL As Integer
DL = Sheets("Tabelle1").Cells(Application.Rows.Count, 2).End(xlUp).Row + 1
Rows("3:3").Select
Selection.Insert Shift:=xlDown
Selection.ClearFormats
Sheets("Tabelle1").Range("B3:F" & DL).Select
Cells.FormatConditions.Delete
Sheets("Tabelle1").Range("B3:F" & DL).Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=NON(MOD(SOMME(N($B$2:$B2<>$B$3:$B3));2))"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = 0
.ThemeColor = xlThemeColorAccent2
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("B3").Select
End Sub
 
C

Compte Supprimé 979

Guest
Salut

La formule donne FAUX. Là n'est pas le problème
Si justement là est le problème, si le retour est FAUX la MFC n'est pas appliquée

J'ai certainement mal adapter la formule "=NON(MOD(SOMME(N($B$2:$B2<>$B$3:$B3));2))" dans ma macro.
Oui mais tu ne nous dis pas ce que tu veux faire exactement avec cette formule !?

Je tiens à rappeller que je débute en VBA. Et je vous prie de m'aider.
Pour bien être aidé, il faut bien formuler sa problématique, or ce n'est pas le cas pour ton post

A+
 

excelfresh

XLDnaute Nouveau
Salut


Si justement là est le problème, si le retour est FAUX la MFC n'est pas appliquée


Oui mais tu ne nous dis pas ce que tu veux faire exactement avec cette formule !?


Pour bien être aidé, il faut bien formuler sa problématique, or ce n'est pas le cas pour ton post

A+
Je veux faire une macro qui crée une MFC avec la formule "=NON(MOD(SOMME(N($B$2:$B2<>$B$3:$B3));2))"
 

Staple1600

XLDnaute Barbatruc
Re

Je n'ai jamais écrit que c'était la solution
Mais l'usage veut qu'on Dim DerLigne ou DL as Long

Pour revenir à ta macro
J'ai fait ces autres petits changements
(car là aussi la coutume veut qu'on évite les Select, Selection et autre Activate)
VB:
Sub new_line2()
Dim DL As Long
DL = Sheets("Tabelle1").Cells(Application.Rows.Count, 2).End(xlUp).Row + 1
Rows("3:3").Insert Shift:=xlDown: Rows("3:3").ClearFormats
With Sheets("Tabelle1").Range("B3:F" & DL)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=NON(MOD(SOMME(N($B3:$B3<>$B4:$B4));2))"
.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

Je n'ai jamais écrit que c'était la solution
Mais l'usage veut qu'on Dim DerLigne ou DL as Long

Pour revenir à ta macro
J'ai fait ces autres petits changements
(car là aussi la coutume veut qu'on évite les Select, Selection et autre Activate)
VB:
Sub new_line2()
Dim DL As Long
DL = Sheets("Tabelle1").Cells(Application.Rows.Count, 2).End(xlUp).Row + 1
Rows("3:3").Insert Shift:=xlDown: Rows("3:3").ClearFormats
With Sheets("Tabelle1").Range("B3:F" & DL)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=NON(MOD(SOMME(N($B3:$B3<>$B4:$B4));2))"
.FormatConditions(.FormatConditions.Count).SetFirstPriority
.FormatConditions(1).Interior.ThemeColor = xlThemeColorAccent2
.FormatConditions(1).Interior.TintAndShade = 0.799981688894314
.FormatConditions(1).StopIfTrue = False
End With
End Sub
Il faut adapter dans la macro la formule "=NON(MOD(SOMME(N($B$2:$B2<>$B$3:$B3));2))" et non "=NON(MOD(SOMME(N($B3:$B3<>$B4:$B4));2))"
A+
 

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 189
Membres
112 679
dernier inscrit
Yupanki