Code pour effectuer un test

Résolu
duduleray Messages postés 23 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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

4 réponses

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    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
    1. duduleray
       
      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
  2. duduleray
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      le code suggéré doit se mettre à la suite du code que tu montres.
      0
  3. duduleray
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      "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
      1. duduleray > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        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
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > duduleray
         
        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
  4. duduleray
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu alors marquer la discussion comme résolue?
      0