VBA "if"

Résolu
Bonjour à tous!
Dans le cadre d'un travail je dois créer un code vba. Celui ci devra mettre l'intitulé "fort" dans une colonne("typedetaux") si le chiffre dans une autre colonne (montant) est inférieure à 4000... Quelqu'un pourrait m'aider svp?? c'est urgent pour demain et les gens de mon groupe ont décidé de me laisser dans la m***.
Normalement ce code doit faire une quinzaine de ligne mais je me disais qu'une fois débloqué je pourrai l'augmenter avec d'autre montant et des "elseif" ?

Merci d'avance !!

Voilà un screen pour rendre ça plus visible.
http://hpics.li/42b2c0e

8 réponses

  1. Parce qu'il ne peut avoir qu'une Sub Worksheet_change, si tu souhaites metre de la couleur il suffit de faire ca :

    Private Sub Worksheet_Change(ByVal Target As Range)
    
        If Target.Column = 4 And Target.Value <> "" Then
    
            If Target.Value < 4000 Then
                Cells(Target.Row, 10) = "fort"
                Cells(Target.Row, 10).Interior.ColorIndex = 3
            Else
                Cells(Target.Row, 10) = "faible"
                Cells(Target.Row, 10).Interior.ColorIndex = 4
    
            End If
            
        End If
    
    End Sub
    1. J'ai suivi ton conseil mais malheureusement rien ne se colore (y'a -t il une option a activer ou quoi que ce soit?)
      (Merci merci merci pour ton aide)
    2. deuxième tentative et ça fonctionne mercibeaucoup !!
    3. rien n'est à activer si tu as juste rajouter la ligne :
      Cells(Target.Row, 10).Interior.ColorIndex = 3

      après "fort", normalement cela devrait fonctionner...

      Rassure moi le texte "Fort" et "Très faible" fonctionne encore, c'est bien la coloration qui ne fonctionne pas ?
    4. deuxième tentative et ça fonctionne mercibeaucoup !!
      ps: Tout fonctionne comme il faut maintenant merci à toi!
  2. J'ai rajouter ceci pour colorier certaines cases
    Sub Worksheet_Change2(ByVal Target As Range) 
        If Target.Column = 10 And Target.Value <> "" Then 
             
            If Target.Value = "Fort" Then cell.Interior.ColorIndex = 3 
            ElseIf Target.Value = "Très faible" Then cell.Interior.ColorIndex = 4 
            End If
        End If
    
    
    End Sub 
    


    mais à mon grand "désétonnement" ça n'a pas fonctionné :p (il ne se passe rien). Quelqu'un sait pourquoi?
    1. Oui, je me basais sur la sub suivante :

      Private Sub Worksheet_Change(ByVal Target As Range)
      
          If Target.Column = 4 And Target.Value <> "" Then
      
              If Target.Value < 4000 Then
                  Cells(Target.Row, 10) = "fort"
              Else
                  Cells(Target.Row, 10) = "faible"
      
              End If
              
          End If
      
      End Sub


      qui prend une valeur en paramètre "Target"
      1. Ouuh je connais pas du tout ce code :p. J'ai essayer de le copier tel quel pour être honnête et en l'exécutant, s'ouvre la fameuse fenêtre où l'ont doit choisir la macro à exécuter ........;
        Le vba reste pour moi une énigme ..
      2. tu n'as rien a exécuter tout se fait automatiquement ;)
        Tu as juste à copier la sub dans la feuille et essaie de saisir une valeur dans la colonne "montant" et la colonne "type de taux" va se mettre a jour automatiquement dès que tu va valider la saisie du montant ;)
      3. Génial! :p. Merci à toi ça me rendait dingue !

        ps: je laisse le sujet ouvert car je doit encore le rallonger un petit peu :p.
    2. Merci beaucoup!

      , je l'ai mise dans une variable, ai-je fais une erreur? il m'affiche "erreur 424 : ob

      jet requis"" ....... Aucune idée de ce que cela veut dire.. Quelqu'un a une idée? :p

      Sub bou()
      If Target.Column = 4 And Target.Value <> "" Then

      If Target.Value < 4000 Then
      Cells(Target.Row, 10) = "fort"
      Else
      Cells(Target.Row, 10) = "faible "

      End If
      End If

      End Sub
      1. Ceci devrait t'aller alors :
            If Target.Column = 4 And Target.Value <> "" Then 'correspondant à la colonne montant
            
                If Target.Value < 4000 Then
                    Cells(Target.Row, 10) = "fort"
                Else
                    Cells(Target.Row, 10) = "fort"
                
                End If
            End If
        
        1. bien sur dans le second if : l'un doit prendre la valeur "fort" et l'autre.... J'ai laisser "fort" uniquement pour l'exemple ;)
        2. Oui j'ai remarqué, merci ! :)
      2. d'ailleurs quand j'exécute cette commande, j'ai oublié de préciser qu'il n'y avais pas d'erreur mais que rien ne se passait... perduu :'(( !
        1. Je voudrai ne pas avoir à programmer chaque ligne car ce ne serait pas bon... Il faut que ça devienne automatique chaque fois qu'on rajoute une ligne j'avais pensé à un truc du genre "if montant <4000 then typedetaux = fort"
          1. Bonjour,

            En mettant une formule dans la case du type :
            =SI(D2<4000;"fort","")
            =SI(D3<4000;"fort","")

            Et en copiant la formule pour chaque ligne du tableau ca devrait fonctionner ...

            @+