Code pour effectuer un test

Résolu/Fermé
duduleray Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 16 février 2020 - 5 févr. 2020 à 18:32
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 11 févr. 2020 à 16:41
Bonsoir a tous, forum,

Configuration: Windows 10/ Internet Explorer 11.0

Je suis sous Windows 10 et Excel 2007

J'ai une cellule O35 qui a une somme solde Ex 1400€
Et une cellule P35 qui m'affichera les messages.

Je souhaiterai svp en VBA un petit code pour effectuer un test sur la cellule O35

Ex Si la somme cellule O35 est inférieur a zéro alors on affiche en P35 "RETARD" en Rouge
Ex Si la somme cellule O35 est supérieur a zéro alors on affiche en P35 "SOLDE" en Vert

Svp Pas mise en forme conditionnel, merci a vous pour votre savoir partagé.

bonne soirée a tous et merci a vous.

Cdlt Ray
A voir également:

4 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
5 févr. 2020 à 19:19
Bonsoir Ray, bonsoir le forum

Si O35 est une formule le code ci-dessous agira chaque fois que la formule sera recalculée (à placer dans le composant VBA de l'onglet concerné) :
Private Sub Worksheet_Calculate()
Select Case Range("O35").Value
    Case Is < 0
        With Range("P35")
            .Value = "RETARD"
            .Font.ColorIndex = 3
        End With
    Case Is > 0
        With Range("P35")
            .Value = "SOLDE"
            .Font.ColorIndex = 4
        End With
    Case Is = 0
        With Range("P35")
            .Value = ""
            .Font.ColorIndex = xlNone
        End With
End Select
End Sub


Si O35 n'est pas une formule, le code ci-dessous agira chaque fois que O35 sera modifiée, éditée ou remplacée (à placer au même endroit) :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$O$35" Then Exit Sub
Select Case Target.Value
    Case Is < 0
        With Target.Offset(0, 1)
            .Value = "RETARD"
            .Font.ColorIndex = 3
        End With
    Case Is > 0
        With Target.Offset(0, 1)
            .Value = "SOLDE"
            .Font.ColorIndex = 4
        End With
    Case Is = 0
        With Target.Offset(0, 1)
            .Value = ""
            .Font.ColorIndex = xlNone
        End With
End Select
End Sub



1
Salut Thau Theme,

J'ai fait des essais en essayant d'intégrer le code avec le mien mais ca fonctionne pas , j'ai erreur dépassement de pile et le tableau de ma compta merdouille.

Bonne soirée a toi et merci et bon W-end également.

Cdlt Ray
0
Salut ThauTheme,

merci pour le code, c'est sympa a toi.

je ne sais pas ou intégrer le code car ca ne fonctionne pas comme voulu.

je te mets la partie de mon code qui fonctionne

ma cellule O35 contient une formule (Somme) O30:O34 résultat dans O35
Public Sub Worksheet_Calculate()
    
    C = Month(Now) + 4
    R = [Z1].Value: If R < 2 Then R = 1
    Cells(R, 17).Font.ColorIndex = 10       'Vert fonc?
    Cells(R, 17).Interior.ColorIndex = 15

    With Cells(R, 17).Interior
                     .ColorIndex = 15       'Gris affiche barre rep?re Gris clair

        If Cells(20, C).Text <> Cells(R, 17).Text Then

            Application.EnableEvents = False
               R = R + 1: If R > 26 Then R = 2
               [Z1].Value = R
               Cells(R, 17).Value = Cells(20, C).Value
              .ColorIndex = xlNone
            Application.EnableEvents = True

        End If
    End With
         Cells(R, 17).Font.ColorIndex = 5    'Bleu
End Sub


Merci d'avance pour ton aide, bonne après midi a toi

Cdlt Ray
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
7 févr. 2020 à 21:34
le code suggéré doit se mettre à la suite du code que tu montres.
0
Salut yg_be, forum,

Merci pour ta réponse, c'est sympa a toi.

J'ai bien insérer le code suggéré juste avant le SUB et dans le code suggéré je n'ai pas mis la première et dernière ligne de code puisque déjà présent dans mon code.

mais toujours cette erreur que je mets en lien voir ci-dessous svp

Mon code est un bout de ma compta dont je me sers tous les jours et pas de soucis avec mais avec le code suggéré ca fontionne pas.

Bon W-end a toi et merci.

https://www.cjoint.com/c/JBig63squZY

Cdlt Ray

<gras</gras>
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
8 févr. 2020 à 09:32
"je n'ai pas mis la première et dernière ligne de code": sans doute utile que tu nous montres ce que tu as fait.
0
duduleray > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
8 févr. 2020 à 10:34
Re yg_be,

Voila le code suggéré incorporer au mien .

j'ai essayer de decaler ailleurs dans le code mais le résultat est toujours l'erreur de pile comme sur la photo
envoyer ce matin.

pas trouver comment faire.

Merci de ton aide,

Cdlt Ray


Public Sub Worksheet_Calculate()

C = Month(Now) + 4
R = [Z1].Value: If R < 2 Then R = 1
Cells(R, 17).Font.ColorIndex = 10 'Vert fonc?
Cells(R, 17).Interior.ColorIndex = 15

With Cells(R, 17).Interior
.ColorIndex = 15 'Gris affiche barre rep?re Gris clair

If Cells(20, C).Text <> Cells(R, 17).Text Then

Application.EnableEvents = False
R = R + 1: If R > 26 Then R = 2
[Z1].Value = R
Cells(R, 17).Value = Cells(20, C).Value
.ColorIndex = xlNone
Application.EnableEvents = True

End If
End With
Cells(R, 17).Font.ColorIndex = 5 'Bleu

'############## Private Sub Worksheet_Calculate() 'code déjà en premiere ligne
Select Case Range("O35").Value
Case Is < 0
With Range("P35")
.Value = "RETARD"
.Font.ColorIndex = 3
End With
Case Is > 0
With Range("P35")
.Value = "SOLDE"
.Font.ColorIndex = 4
End With
Case Is = 0
With Range("P35")
.Value = ""
.Font.ColorIndex = xlNone
End With
End Select
'############# End Sub 'ligne deja presente ci-dessous
End Sub
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > duduleray
8 févr. 2020 à 11:11
merci d'utiliser les balises de code, en précisant "basic" pour du VBA.
moi j'essaierais en modifiant Application.EnableEvents en début et en fin de la sub, et pas au milieu.
0
Re Salut,

Désoler pour les balises mais a chaque fois que je vais sur CCM, il y a toujours quelque chose qui va pas.

les soucis rencontrer sont divers, comme.

je peux pas répondre aux gens
je ne peux pas recopier des codes
j'utilise les balises mais ca marche pas, c'est toi qui m'avait dit voici un moment, en précisant "basic" pour VBA

Je ne sais pas d'où ca vient.

Alors, c'est bon ça fonctionne bien, plus d'erreur de pile, ni autres d'ailleurs.

Je te remercie pour ton intervention et a l'ami ThauTheme merci pour le code.

Bien des remerciements a vous deux et bon W-end.

Au plaisir d'une prochaine discussion, bye bye

Bien cordialement Ray
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
11 févr. 2020 à 16:41
peux-tu alors marquer la discussion comme résolue?
0