Conditions si *3 critères

Bonjour,

Je dois réaliser sous VBA une action résultante de 3 critères, j'ai réussi en partie à me débrouiller grace à l'aide du forum mais le résultat ne fonctionne pas ...

Qq1 pourrait-il m'aider svp ?

Merci d'avance (je joins pour cela le code simplifié en pj)

11classeur1.zip (6.81 Ko)

Bonjour,

Modifie le code ainsi :

Sub affichage()

Sheets("Feuille de calcul").Select
If Range("D38") < "5" Then
    Range("a1").Select
ElseIf Sheets("Feuille de calcul").Range("D38") > "5" And Sheets("Feuille de calcul").Range("D38") <= "10" Then
    Range("a2").Select
ElseIf Sheets("Feuille de calcul").Range("D38") > "10" Then
    Range("a3").Select
End If

End Sub

Par contre, si tu veux que cela se déclenche lors de chaque changement de ta cellule D38, il ne faut pas mettre le code dans un module mais dans le code de la feuille (click droit sur le nom de l'onglet => visualiser le code)

Ensuite cela dépend si ta valeur en cellule 38 est saisie ou calculée, mais si c'est une saisie, mettre le code suivant dans le code vba de la feuille "Feuille de calcul" :

Private Sub Worksheet_Change(ByVal Target As Range)

if Target = Range("D38") then

If Range("D38") < "5" Then
    Range("a1").Select
ElseIf Sheets("Feuille de calcul").Range("D38") > "5" And Sheets("Feuille de calcul").Range("D38") <= "10" Then
    Range("a2").Select
ElseIf Sheets("Feuille de calcul").Range("D38") > "10" Then
    Range("a3").Select
End If

End If

End Sub

Cordialement,

Merci zirak,

J'ai fait la modif, mais ca ne marche pas totalement.

Quand c'est inf à 5, ca fonctionne; mais pour le reste des valeurs, ca fait n'importe quoi ?????

Je vois pas ce qui cloche ...

(pour info, la valeur en D38 est le résultat d'une somme)

Re,

Si ta cellule D38 est le résultat d'une somme, il ne faut pas utiliser un évènement Worksheet_Change, mais un évènement Worksheet_Calculate :

Private Sub Worksheet_Calculate()

If Range("D38") < 5 Then
        Range("a1").Select
ElseIf Sheets("Feuille de calcul").Range("D38") > 5 And Sheets("Feuille de calcul").Range("D38") <= 10 Then
        Range("a2").Select
ElseIf Sheets("Feuille de calcul").Range("D38") > 10 Then
        Range("a3").Select
End If

End Sub

Exemple dans ton fichier en retour.

Cordialement,

12classeur1-v2.zip (7.23 Ko)

Merci bcp, là ca marche impec.

Cependant, tu as mis le code dans la feuille.

Dans mon fichier réel, j'execute cette action à la suite d'un click dans un USF, comment faire car si je mets

Private Sub Worksheet_Calculate()

dans le code de mon bouton USF, ca va me créer une autre macro ?

Donnes tous les éléments d'un coup aussi ^^

Si c'est sur un click dans un userform, mets juste ce code la dans le code du controle sur lequel tu click dans le code de ton userform et pas dans le code de la feuille:

If Range("D38") < 5 Then
        Range("a1").Select
ElseIf Sheets("Feuille de calcul").Range("D38") > 5 And Sheets("Feuille de calcul").Range("D38") <= 10 Then
        Range("a2").Select
ElseIf Sheets("Feuille de calcul").Range("D38") > 10 Then
        Range("a3").Select
End If

Sachant que si tu appelles ton userform d'un autre onglet ou que tu le fait aller sur d'autre onglet pendant le traitement, il faudra rajouter les Worksheets("nom de ta feuille").range("D38") partout, idem pour les cellules A1 à A3.

Cordialement,

désolé de ne pas avoir précisé

malgré tout, quand je met ce code dans mon USF, les conditions ne sont toujours pas respectées (meme résultat qu'avec la macro affichage de mon classeur ...

Y a un bug mais où ?

Joins ton fichier avec l'userform, cela sera plus simple de voir d'où provient l'erreur.

en mp, c'est bon ?

Ton fichier envoyé par mp corrigé.

Cela ne fonctionnait pas car tu déchargeait ton userform3 avant de faire ce code. Et j'ai pas testé avec les guillemets, mais quand c'est des nombres, tu n'es pas obligé de les mettre.

Cordialement,

Impeccable, merci bcp ZIRAK, super sympa !

De rien

Rechercher des sujets similaires à "conditions criteres"