Macro VBA erronée
Résolu
Dautomne
Messages postés
21
Statut
Membre
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
J'ai un souci avec la macro vba ci-dessous. Visiblement le code est erroné.
Je souhaite obtenir le résultat suivant
Si cellules D216-D218 de Fiche de contrôle vides = couleur grise
Si cellules D216-D218 de Fiche de contrôle = "OUI pour les 3 cellules "= couleur verte
Si cellules D216-D218 de Fiche de contrôle = "NON pour les 3 cellules "= couleur rouge
Si cellules D216-D218 de Fiche de contrôle = "1 OUI 2 NON / 1 NON 2 OUI "= couleur orange
Je vous remercie par avance pour votre aide :-)
Cordialement.
---------------------------------------------------------
EDIT : Ajout des balises de code
J'ai un souci avec la macro vba ci-dessous. Visiblement le code est erroné.
Je souhaite obtenir le résultat suivant
Si cellules D216-D218 de Fiche de contrôle vides = couleur grise
Si cellules D216-D218 de Fiche de contrôle = "OUI pour les 3 cellules "= couleur verte
Si cellules D216-D218 de Fiche de contrôle = "NON pour les 3 cellules "= couleur rouge
Si cellules D216-D218 de Fiche de contrôle = "1 OUI 2 NON / 1 NON 2 OUI "= couleur orange
Je vous remercie par avance pour votre aide :-)
Cordialement.
---------------------------------------------------------
Sub Macro17()
'TESSI ICSB S1
Range("H5").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"='Fiche de contrôle'!$D$216:$D$218="""""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.349986266161974
End With
Range("H5").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=NB.SI(D216:D218;""OUI"")<1>3"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = -0.249946592608417
End With
Range("H5").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=NB.SI(D216:D218;""NON"")<2>4"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 192
.TintAndShade = 0
End With
End Sub
EDIT : Ajout des balises de code
Configuration: Windows / Firefox 78.0
5 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
suggestion:Option Explicit Sub cc() Dim rg As Range, cl As Range, noui As Integer, nnon As Integer, couleur As Integer Set rg = Range("$D$216:$D$218") noui = 0 nnon = 0 For Each cl In rg Select Case cl.Value Case "NON": nnon = nnon + 1 Case "OUI": noui = noui + 1 End Select Next cl If noui = 3 Then couleur = 4 'vert Else If nnon = 3 Then couleur = 3 'rouge Else If noui + nnon = 3 Then couleur = 46 'orange Else couleur = 16 'gris End If End If End If rg.Interior.ColorIndex = couleur End Sub -
Bonjour,
Merci pour ton aide :-)
Je suis novice en vba et donc en incapacité d'exploiter la macro que tu as eu la gentillesse de mettre à ma disposition.
Peux tu m'expliquer :
Où se trouve la référence à la case H5 (case à renseigner avec le résultat) ?
Est-ce que la macro ci-dessus doit être modifiée pour faire apparaître la référence à la feuille (Fiche de contrôle'!$D$216:$D$218) où sont contenues les cellules à exploiter ? Dans l'affirmatif, peux-tu m'indiquer comment faire?
Enfin dernière question le terme "Option Explicit" correspond à quoi ? la macro vba ne le prend pas en compte quand je copie/colle.
Merci encore pour cette aide et pour les explications à venir :-)-
veux-tu dire que tu veux changer la couleur de H5? dans quelle feuille? j'ai adapté le code, vois ci-dessous:
"option explicit", en début de module, sert à préciser que les variables doivent être explicitement déclarées (via DIM). cela permet de détecter rapidement les fautes de frappe dans les noms de variables.Sub cc() Dim rg As Range, cl As Range, noui As Integer, nnon As Integer, couleur As Integer, ncel As Long Set rg = sheets("Fiche de contrôle").Range("$D$216:$D$218") noui = 0 nnon = 0 ncel = rg.Count For Each cl In rg Select Case cl.Value Case "NON": nnon = nnon + 1 Case "OUI": noui = noui + 1 End Select Next cl If noui = ncel Then couleur = 4 'vert Else If nnon = ncel Then couleur = 3 'rouge Else If noui + nnon = ncel Then couleur = 46 'orange Else couleur = 16 'gris End If End If End If sheets("Fiche de contrôle").Range("H5").Interior.ColorIndex = couleur End Sub
-
-
Bonjour,
Je veux changer la cellule H5 de la feuille "Synthèse résultats ctrl période" en fonction des éléments indiqués dans les cellules D216 à D218 de la feuille "Fiche de contrôle".
Comme pour mon autre problématique peux-tu m'indiquer comment intégrer ce code dans VBA. Je n'y arrive pas.
Merci encore-
veux-tu changer la couleur de fond de H5? si oui, pourquoi ne l'écris-tu pas?
et pourquoi n'expliques-tu pas tout cela dés le début?
prends ton temps pour rédiger des demandes précises.
en ligne 28, tu dois donc préciser le nom de la feuille où se trouve H5.
tu emploies un vocabulaire bizarre, essaie peut-être avec des mots plus simples. cela veut dire quoi "intégrer du code dans VBA"?
-
-
Tu as effectivement raison je ne parle pas le langage "informatique" d'où les incompréhensions.
A la question 1, oui je souhaite changer la couleur de fond de la cellule H5.
A la question 2, je n'arrive tout simplement pas à coller le code fournit dans ma macro VBA n°17.
Comme je l'indiquais je n'ai jamais fait de VBA de ma vie donc pour moi c'est "obscure". Tout ce que je veux c'est juste que :
la cellule H5 de la feuille "Synthèse résultats ctrl période" soit remplit en gris si les cellules
D216-D218 de le feuille "Fiche de contrôle" sont vides
la cellule H5 de la feuille "Synthèse résultats ctrl période" soit remplit en rouge si les cellules D216-D218 de le feuille "Fiche de contrôle" sont toutes à "NON"
la cellule H5 de la feuille "Synthèse résultats ctrl période" soit remplit en vert si les cellules D216-D218 de le feuille "Fiche de contrôle" sont toutes à "OUI"
Enfin, que la cellule H5 de la feuille "Synthèse résultats ctrl période" soit remplit en orange si par exemple les cellules D216-D218 de le feuille "Fiche de contrôle" contiennent 1 OUI et 2 NON ou encore 1 NON et 2 OUI.
Je veux par ailleurs que tu m'expliques en langage simple où je dois coller le code car ça ne fonctionne visiblement pas dans une macro. Il faut peut être que je le colle dans un module ?
J'espère être plus claire :-) Merci encore pour ton aide.
Cordialement. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Dernière question sur cette thématique.
Le code fonctionne parfaitement mais je n'arrive pas à modifier la couleur verte je veux remplacer par lecouleur = 4
parcouleur = 5287936
as tu une solution ?
Sub TESSI_ICBS_S1()
Dim rg As Range, cl As Range, noui As Integer, nnon As Integer, couleur As Integer, ncel As Long
Set rg = Sheets("Fiche de contrôle").Range("$D$216:$D$218")
noui = 0
nnon = 0
ncel = rg.Count
For Each cl In rg
Select Case cl.Value
Case "NON":
nnon = nnon + 1
Case "OUI":
noui = noui + 1
End Select
Next cl
If noui = ncel Then
couleur = 4 'vert
Else
If nnon = ncel Then
couleur = 3 'rouge
Else
If noui + nnon = ncel Then
couleur = 46 'orange
Else
couleur = 16 'gris
End If
End If
End If
Sheets("Synthèse résultats ctrl période").Range("H5").Interior.ColorIndex = couleur
End Sub
Merci encore pour cet accompagnement.
Cordialement-
lis alors ceci: https://www.excel-pratique.com/fr/vba/couleurs
-