Proposer différent choix de liste avec la fonction SI

Bonjour,

Dans mon tableau, j'aimerais que SI la cellule de ma colonne A possède la valeur 1; alors ma cellule de colonne B propose la liste x; SI ma celluleA possède la valeur 2; alors ma cellule de colonne B propose la liste y ... ainsi de suite

Pouvez-vous m'éclairer?

Merci beaucoup!

Bonjour,

Plusieurs sujets similaires ont déjà été traités. Je t'invite à commencer par une recherche sur le forum...

Voilà quelques pistes :

https://forum.excel-pratique.com/viewtopic.php?f=2&t=123162

https://forum.excel-pratique.com/viewtopic.php?f=2&t=115065

https://forum.excel-pratique.com/viewtopic.php?f=2&t=115062

PS : voir autres sujets similaires en bas de cette page

Bonjour Keodius, Pedro, bonjour le forum,

Tu en dis tellement peu qu'il est difficile de t'aider... En pièce jointe une proposition à adapter.

Tape une valeur dans n'importe quelle cellule de la colonne A de l'onglet Feuil1 et la cellule de la colonne B sera mise à jour... Les listes se trouvent dans l'onglet Feuil2.

le code :

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'ongelt
Dim OL As Worksheet 'déclare la variable OL (Onglet des Listes)
Dim COL As Integer 'déclare la variable COL (COLonne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim L As String 'déclare la variable L (Liste)

If Target.Column <> 1 Then Exit Sub 'si le changement a lieu ailleurs que dans la colonne 1 (=A), sort de la procédure
If Target.Value = "" Then Target.Offset(0, 1).Clear: Exit Sub 'si la cellule de la colonne A est effacée, efface la cellule de la colonne B sort de la procédure
Set OL = Worksheets("Feuil2") 'définit l'onglet des listes OL
COL = Target.Value 'définit la colonne COL (la valeur tapée en A)
TV = OL.Range(OL.Cells(2, COL), OL.Cells(Application.Rows.Count, COL).End(xlUp)) 'définit le tableau des valeurs (à partir de la ligne 2)
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs
    L = IIf(L = "", TV(I, 1), L & "," & TV(I, 1)) 'définit la liste L
Next I 'prochaine ligne de la boucle
If L = "" Then Target.Offset(0, 1).Clear: Exit Sub 'si L est vide, efface la cellule en colonne B et sort de la procédure
With Target.Offset(0, 1).Validation 'prend en compte la validation de données de la cellule colonne B
    .Delete 'supprime une éventuelle validation de données existante
    .Add xlValidateList, Formula1:=L 'ajoute la liste L comme liste de validation de données
End With 'fin de la prise en compte la validation de données de la cellule colonne B
End Sub

Le fichier :

Bonjour,

Merci pour ton aide

Je suis peu avancé sur Excel. Quand j'écris quelque chose en colonne A, j'obtiens le message

capture d ecran 2019 07 31 a 11 49 02

Je suis sur mac, possible que ce soit la raison?

Merci!

Bonjour Keodius, Pedro, bonjour le forum,

Tu en dis tellement peu qu'il est difficile de t'aider... En pièce jointe une proposition à adapter.

Tape une valeur dans n'importe quelle cellule de la colonne A de l'onglet Feuil1 et la cellule de la colonne B sera mise à jour... Les listes se trouvent dans l'onglet Feuil2.

le code :

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'ongelt
Dim OL As Worksheet 'déclare la variable OL (Onglet des Listes)
Dim COL As Integer 'déclare la variable COL (COLonne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim L As String 'déclare la variable L (Liste)

If Target.Column <> 1 Then Exit Sub 'si le changement a lieu ailleurs que dans la colonne 1 (=A), sort de la procédure
If Target.Value = "" Then Target.Offset(0, 1).Clear: Exit Sub 'si la cellule de la colonne A est effacée, efface la cellule de la colonne B sort de la procédure
Set OL = Worksheets("Feuil2") 'définit l'onglet des listes OL
COL = Target.Value 'définit la colonne COL (la valeur tapée en A)
TV = OL.Range(OL.Cells(2, COL), OL.Cells(Application.Rows.Count, COL).End(xlUp)) 'définit le tableau des valeurs (à partir de la ligne 2)
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs
    L = IIf(L = "", TV(I, 1), L & "," & TV(I, 1)) 'définit la liste L
Next I 'prochaine ligne de la boucle
If L = "" Then Target.Offset(0, 1).Clear: Exit Sub 'si L est vide, efface la cellule en colonne B et sort de la procédure
With Target.Offset(0, 1).Validation 'prend en compte la validation de données de la cellule colonne B
    .Delete 'supprime une éventuelle validation de données existante
    .Add xlValidateList, Formula1:=L 'ajoute la liste L comme liste de validation de données
End With 'fin de la prise en compte la validation de données de la cellule colonne B
End Sub

Le fichier :

Bonjour,

En fait, je souhaite que si sur ma cellule de colonne A est écrit "Internet" , alors ma celulle de colonne me propose la liste (Amazon;Ebay...) Si il est écrit "GMS", alors il me propose la liste (Carrefour; Auchan)

Or le fichier que tu m'as envoyé ne fonctionne pas pour moi (message ci-dessus). J'utilise mac, peut être est-ce la raison

Aussi, je sais globalement utiliser les macros sur microsoft mais sur mac tout est changé je ne suis pas sûr qu'elles soient activées...

Merci beaucoup en tout cas

Re,

Si tu daignais nous envoyer ton fichier (compatible PC), on pourrait voir... Le premier code proposé n'est pas fonctionnel, il faudra l'adapter à ce fichier...

Rechercher des sujets similaires à "proposer different choix liste fonction"