Choix de retour different en fonction de la valeur

Bonjour à tous,

Je ne parviens pas résoudre mon problème avec des SI imbriqué, j'ai beau regarder des tuto rien ne va, mais cela viens de moi.
Dans la cellule C4 on doit mettre A ou B, en fonction du choix la cellule C7, doit retourner la bonne réponse qui se trouve dans les cellules G4 et G5.

Merci par avance pour votre aide.
@+Filou

7tp.xlsx (8.70 Ko)

Essayez un truc comme ceci :

4tp.xlsm (13.97 Ko)

Bonjour à tous !

Une proposition :

=RECHERCHEV(C4;F3:G4;2;0)

Bonjour,

Merci pour vos retours.
La solutions de JFL

=RECHERCHEV(C4;F3:G4;2;0)

ne fonctionne pas.

Par contre celle de Optimix fonctionne, serait-il possible de me l'expliquer de la détaillé.
Je vois que vous avez utilisé une macro.

Merci par avance.
@+ Filou

Bonjour à tous !

La solutions de JFL

=RECHERCHEV(C4;F3:G4;2;0)

ne fonctionne pas.

Pourriez-vous être plus explicite ?

Parce que.......:

0filou80.xlsx (15.32 Ko)

Bonjour,

Euh...un autre moyen sans macro :

A copier dans la cellule "REPONSE" :

=SI(C4=DROITE(F3;1);G3;G4)

Bonne journée

Bonjour tout le monde,

Quelques explications concernant le code VBA attaché à la feuille en question (Feuil1).

1 Option Explicit

2 Private Sub Worksheet_Change(ByVal Target As Range)
3     If Target.Column <> 3 Or Target.Row <> 4 Then Exit Sub

4    Select Case UCase(Target.Value)
5        Case Is = "A": Cells(6, 3) = Cells(3, 7)
6        Case Is = "B": Cells(6, 3) = Cells(4, 7)
7        Case Else: Cells(6, 3) = ""
8    End Select
9 End Sub

1 - On rend obligatoire la déclaration de toutes les variables qu'on va utiliser pour avoir un code propre et plus facile à débugger.
2 - On utilise l'événement Change() de la feuille active ; cet événement se produit lorsqu'on qu'on passe d'une cellule A à une cellule B, la cible (Target) étant la cellule A.
3 - Si la cellule quittée n'est pas la C4 (colonne 3 - ligne 4), on ne fait rien.

4 - La cellule quittée était la C4. Trois cas sont possibles :
41 - l'utilisateur a entré un "a" ou un "A" : on copie la cellule G3 en C6 (Ucase() met la saisie en majuscule) ;
42 - l'utilisateur a entré un "b" ou un "B" : on copie la cellule G4 en C6
43 - dans tous les autres cas de figure, on vide la cellule C6 de son contenu. Au passage, il faudrait aussi vider C4.

Merci pour l'explication Optimix,
Dans mon cas concret les champs à copier son dans une autre feuille comment l'écrire dans le code VBA ?

Merci pour votre aide
@+ Filou

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 3 Or Target.Row <> 4 Then Exit Sub

    Select Case UCase(Target.Value)
        Case Is = "A": Cells(6, 3) = Sheets("Feuil2").Cells(3, 7)
        Case Is = "B": Cells(6, 3) = Sheets("Feuil2").Cells(4, 7)
        Case Else: Cells(6, 3) = "": Cells(4, 3) = ""
    End Select
End Sub

Très simple. En admettant que les appréciations se trouvent dans les mêmes cellules (G6 et G7) mais dans l'onglet Feuil2, il faut donner le nom complet des cellules : Sheets("Feuil2").Cells(x,y).

Tu noteras que si on entre autre chose que "a", "A", "b" ou "B" on vide C4 (Case Else).

Vous êtes super je vais adapté.
Merci pour votre aide.
@+ Filou

Comment on fait pour faire apparaitre la fenetre VBA sur excel ?
Car quand je vais dans macro je ne vois pas votre travail.

Merci par avance pour votre aide.

@+ Filou

Le code ne se trouve pas dans une macro, mais dans la feuille "Feuil1" qui contient la cellule C4. Vous allez dans l'éditeur VBA, tapez Ctrl+R si vous n'êtes pas dans l'éditeur de projet, et faites un double clic sur "Feuil1".

code

Dans l'exemple, vous me dite : Si la cellule quittée n'est pas la C4 (colonne 3 - ligne 4), on ne fait rien.

J'ai peut être trop simplifier mon exemple, je travail sur mon classeur pour établir des devis.
J'ai une feuille ou il y à les infos notamement le moyen de paiement virement paypal cheque etc....
Sur une autre page j'ai mis mon compte paypal dans une cellule et mon compte bancaire dans une autre
Sur ma page devis je réceptionne les infos, tous n'est pas sur la même feuille.
La je bloque sur comment assemblé le tout.

Sur la feuille infos c'est les infos sur moi notament iban et cpt paypal
Feuille prestations mes services
Feuille clients les renseignement sur les futurs clients
Feuille base devis je selectionne en ligne 5 l reference client et en ligne 10 le moyen de paiement, de ligne 13 à 18 je selectionne avec 1 si il prend le service et de la ligne 18 à 21 je met les nombres heure.
La feuille Devis qui en fonction de la cellule L5 récupere le moyen de paiement, et en cellule C40 et C41 numero de compte et bic en fonction du moyen choisi ou le paypal en cellule C40.
Je sais pas si comme cela c'est mieux.

Pourriez m'aider ou m'expliquer comment faire.

12tp.xlsm (68.42 Ko)

Merci pour votre aide.
@+ Filou

La j'ai fait ceci mais cela ne fonctionne pas.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column <> 12 Or Target.Row <> 5 Then Exit Sub

Select Case UCase(Target.Value)

Case Is = "Virement": Cells(40, 4) = Sheets("infos").Cells(23, 2)

Case Is = "Virement": Cells(41, 4) = Sheets("infos").Cells(24, 2)

Case Is = "Paypal": Cells(40, 4) = Sheets("infos").Cells(26, 2)

Case Else: Cells(40, 4) = "": Cells(41, 4) = ""

End Select

End Sub

@+ Filou

1 Option Explicit

2  Private Sub Worksheet_Change(ByVal Target As Range)
3       If Target.Column <> 12 Or Target.Row <> 5 Then Exit Sub
4            Select Case Ucase(Target.Value)
5               Case Is = "VIREMENT": Cells(40, 4) = Sheets("Infos").Cells(23, 2)  
6               Case Is = "BIC": Cells(41, 4) = Sheets("Infos").Cells(24, 2)     
7               Case Is = "PAYPAL": Cells(40, 4) = Sheets("Infos").Cells(26, 2)
8               Case Else: Cells(40, 4) = "": Cells(5, 12) = ""
9       End Select
10 End Sub

Ligne 4, toute saisie dans la cellule L5 va être mise en majuscules, les cas "VIREMENT", "BIC" et "PAYPAL" doivent être en majuscules
Ligne 5 : vous avez écrit "infos" au lieu de "Infos", le respect de la casse est obligatoire dans un nom de feuille, le "i" minuscule ne passe pas
Ligne 6, vous avez écrit à nouveau "Virement" au lieu de "Bic" (étourderie)

Pour la suite, vous avez mis un peu partout des formules pour gérer les erreurs, il faudra les retirer et les gérer dans votre code VBA. Je vous invite à étudier le cours VBA qui est très bien fait.
Conclusion : au lieu de simplifier le pb, votre exemple initial n'a fait que le compliquer. Les simplifications sont un faux ami sur ce site

Fin d'exercice pour moi et bon vent pour la suite.

Merci pour les infos.
Juste un dernier petit point, de base vous me dite : On utilise l'événement Change() de la feuille active ; cet événement se
produit lorsqu'on qu'on passe d'une cellule A à une cellule B, la cible
(Target) étant la cellule A.
Comment on fait pour que cela se produit quand on arrive sur la feuille ?

Promis je ne vous embête plus.

Milles mercis pour votre aide.

PS : Vous auriez un site de référence pour les cours en VBA

@+ Filou

Au lieu d'utiliser l'événement Change() on utilise Activate()

Bonjour,
Juste pour info :

1 Option Explicit

2 Private Sub Worksheet_Change(ByVal Target As Range)
3     If Target.Column <> 3 Or Target.Row <> 4 Then Exit Sub

4    Select Case UCase(Target.Value)
5        Case Is = "A": Cells(6, 3) = Cells(3, 7)
6        Case Is = "B": Cells(6, 3) = Cells(4, 7)
7        Case Else: Cells(6, 3) = ""
8    End Select
9 End Sub

à la ligne 5 Cells(6,3) = C6
Cells(3,7) = G3

On inverse bien les (x et y) ?
@+ Filou

Car voici mon code :

Option Explicit

Private Sub Worksheet_Activate(ByVal Target As Range)
    If Target.Column <> 12 Or Target.Row <> 5 Then Exit Sub

    Select Case UCase(Target.Value)
        Case Is = "VIREMENT": Cells(40, 4) = Sheets("EasyKode").Cells(23, 2)
        Case Is = "VIREMENT": Cells(41, 4) = Sheets("EasyKode").Cells(24, 2)
        Case Is = "PAYPAL": Cells(40, 4) = Sheets("EasyKode").Cells(26, 2)
        Case Else: Cells(40, 3) = "": Cells(41, 3) = ""
    End Select
End Sub

et voila l'erreur que j’obtiens quand je change j'arrive sur la feuille ou VBA est activé.

Erreur de compilation:

La déclaration de la procédure ne correspond pas à la description de l'événement ou de la procédure de même nom

@+ Ludo

Rechercher des sujets similaires à "choix retour different fonction valeur"