VBA "if"

Résolu/Fermé
Glady994 Messages postés 447 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 - Modifié par irongege le 15/12/2011 à 15:48
Glady994 Messages postés 447 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 - 15 déc. 2011 à 16:29
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

Stringman621 Messages postés 1308 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 septembre 2012 338
15 déc. 2011 à 15:17
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 ...

@+
0
Glady994 Messages postés 447 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
15 déc. 2011 à 15:23
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"
0
Glady994 Messages postés 447 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
15 déc. 2011 à 15:29
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 :'(( !
0
Stringman621 Messages postés 1308 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 septembre 2012 338
15 déc. 2011 à 15:37
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
0
Stringman621 Messages postés 1308 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 septembre 2012 338
15 déc. 2011 à 15:41
bien sur dans le second if : l'un doit prendre la valeur "fort" et l'autre.... J'ai laisser "fort" uniquement pour l'exemple ;)
0
Glady994 Messages postés 447 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
15 déc. 2011 à 15:47
Oui j'ai remarqué, merci ! :)
0

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

Posez votre question
Glady994 Messages postés 447 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
Modifié par Glady994 le 15/12/2011 à 15:48
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
0
Stringman621 Messages postés 1308 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 septembre 2012 338
15 déc. 2011 à 15:48
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"
0
Glady994 Messages postés 447 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
15 déc. 2011 à 15:53
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 ..
0
Stringman621 Messages postés 1308 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 septembre 2012 338
15 déc. 2011 à 15:56
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 ;)
0
Glady994 Messages postés 447 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
15 déc. 2011 à 15:59
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.
0
Glady994 Messages postés 447 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
Modifié par Glady994 le 15/12/2011 à 16:13
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?
0
Stringman621 Messages postés 1308 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 septembre 2012 338
15 déc. 2011 à 16:13
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
0
Glady994 Messages postés 447 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
15 déc. 2011 à 16:19
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)
0
Glady994 Messages postés 447 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
15 déc. 2011 à 16:22
deuxième tentative et ça fonctionne mercibeaucoup !!
0
Stringman621 Messages postés 1308 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 septembre 2012 338
15 déc. 2011 à 16:22
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 ?
0
Glady994 Messages postés 447 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
15 déc. 2011 à 16:29
deuxième tentative et ça fonctionne mercibeaucoup !!
ps: Tout fonctionne comme il faut maintenant merci à toi!
0