Macro VBA erronée

Résolu/Fermé
Dautomne Messages postés 20 Date d'inscription mercredi 22 juillet 2020 Statut Membre Dernière intervention 30 juillet 2020 - Modifié le 23 juil. 2020 à 18:07
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 - 24 juil. 2020 à 23:17
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.

---------------------------------------------------------
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
A voir également:

5 réponses

yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481
23 juil. 2020 à 20:09
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
0
Dautomne Messages postés 20 Date d'inscription mercredi 22 juillet 2020 Statut Membre Dernière intervention 30 juillet 2020
24 juil. 2020 à 11:33
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 :-)
0
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481
24 juil. 2020 à 12:11
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
0
Dautomne Messages postés 20 Date d'inscription mercredi 22 juillet 2020 Statut Membre Dernière intervention 30 juillet 2020
24 juil. 2020 à 16:09
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
0
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481
24 juil. 2020 à 16:19
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"?
0
Dautomne Messages postés 20 Date d'inscription mercredi 22 juillet 2020 Statut Membre Dernière intervention 30 juillet 2020
24 juil. 2020 à 17:26
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.
0
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481
24 juil. 2020 à 17:35
"ça ne fonctionne visiblement pas dans une macro": qu'as-tu essayé, qu'as-tu observé?
dans quoi se trouve le code que tu as partagé? n'est-il pas dans un module?
commence peut-être par investir quelques heures et apprendre quelques bases en VBA, peut-être via un ou deux tutoriels.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dautomne Messages postés 20 Date d'inscription mercredi 22 juillet 2020 Statut Membre Dernière intervention 30 juillet 2020
Modifié le 24 juil. 2020 à 21:39
Dernière question sur cette thématique.

Le code fonctionne parfaitement mais je n'arrive pas à modifier la couleur verte je veux remplacer par le
couleur = 4 
par
couleur = 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
0
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481
24 juil. 2020 à 23:17
0