Combiner si, recherchev et liste déroulante

Fermé
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 - Modifié le 25 nov. 2020 à 21:58
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 - 29 nov. 2020 à 16:14
Bonjour,

j'aimerais savoir s'il est possible d'avoir une formule qui permettrait de faire l'action suivante :

1: a
2: b
3 : pourrait être "c", pourrait être "d"

la formule permettrait de donner soit la constante associée à la valeur, soit une liste déroulante qui permettrait de saisir la variable.

si j'ai 1 en A1 , alors ça m'affiche "a" en B1
si j'ai 2, en A1 alors ça m'affiche "b" en B1
si j'ai 3 en A1 alors ça donne accès à une liste déroulante en B1 où je peux sélectionner "c" ou "d"

Par avance merci!
A voir également:

6 réponses

via55 Messages postés 14401 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 17 avril 2024 2 701
Modifié le 26 nov. 2020 à 01:24
Bonjour

Tu ne peux pas avoir dans une même cellule une formule et une liste déroulante

Pour ce que tu veux faire il faut passer par une macro qui se déclenche à l'entrée d'une valeur en A1
Macro à mettre dans la worksheet de la feuille concernée 'Alt + F11 pour ouvrir l'éditeur VBA - double-cliquer sur la feuille dans l'arborescence VBA Projetc à gauche - Copier-coller la macro - Fermer l'éditeur)
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
Range("B1").Validation.Delete
Range("B1") = ""
Select Case Target.Value
Case 1
Range("B1") = "a"
Case 2
Range("B1") = "b"
Case 3
Range("B1").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="c,d"
End Select
End If
End Sub

Cdlmnt
Via

1
via55 Messages postés 14401 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 17 avril 2024 2 701
26 nov. 2020 à 13:53
Bonjour

Si tu n'y arrives pas, notamment si le cas est plus complexe que comme tu l'as exposé, poste un exemple de ton fichier (avec des noms bidons si nécessaire) sur cjoint.com, copie le lien créé et reviens le coller, en indiquant exactement quelles cellules sont concernées et quelles valeurs doivent contenir la liste déroulante, je regarderai ça

Cdlmnt
Via
1
via55 Messages postés 14401 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 17 avril 2024 2 701
28 nov. 2020 à 14:51
Bonjour

Ton fichier en retour avec la macro adéquate
https://www.cjoint.com/c/JKCnXUiolNI

Elle se base sur la liste nommée fonctions que j'ai mise en colonne R de Paramètres où tu pourras la modifier

Cdlmnt
Via
1
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5
28 nov. 2020 à 22:14
je rencontre un petit problème.

Lorsque je clique sur le bouton "rafraichir le formulaire", j'ai une fenêtre d'erreur qui s'ouvre.

J'ai bien essayé de refaire la macro de rafraichissement du formulaire, sans pour autant, toucher à la cellule contenant l'information "Intervenant" mais rien à faire, le message d'erreur apparaît toujours.

En dehors de ça, c'est vraiment super. C'est exactement ce que je voulais.

Mille fois merci encore!
0
via55 Messages postés 14401 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 17 avril 2024 2 701 > badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023
28 nov. 2020 à 23:19
Ah oui je n'avais pas pensé au rafraichissement ! (c'est le ClearContents de C qui occasionne l'erreur)

Dans le module 10 remplace cette ligne
Range("C9:D9,C11:D11,C13:D13,C15:D15,C17:D17,C19:D19,C21:D21").Select
par ces 2 ci :
Range("C11:D11,C13:D13,C15:D15,C17:D17,C19:D19,C21:D21").Select
Range("C9") = ""

Cdlmnt
Via
0
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5 > via55 Messages postés 14401 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 17 avril 2024
29 nov. 2020 à 08:12
Bonjour Via,

Ca fonctionne presque!

Les informations contenues dans "C11:D11", "C17:D17" et "C19:D19" ne sont pas effacées.

Mais peut être que j'ai mal modifié le code. Voici celui utilisé dans le module 10 maintenant :

Sub RAFRAICHIR_FORMULAIRE()
'
' RAFRAICHIR_FORMULAIRE Macro
'

'
Range("C11:D11,C13:D13,C15:D15,C17:D17,C19:D19,C21:D21").Select
Range("C9") = ""
Range("C15").Activate
Selection.ClearContents
Range("C9:D9").Select
End Sub

Je ne comprends pas pourquoi ça ne s'efface pas ><. Les champs font bien partis de la première ligne du code
0
via55 Messages postés 14401 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 17 avril 2024 2 701 > badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023
29 nov. 2020 à 13:43
Bonjour badarledur

Au temps pour moi, je n'avais pas fait l'essai !
Il faut mettre Range("C9") = "" avant Range("C11:D11,C13:D13,C15:D15,C17:D17,C19:D19,C21:D21").Select

D'autre part je ne vois pas à quoi sert l' instruction Range("C15").Activate, elle peut être supprimée je pense

Cdlmnt
Via
0
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5 > via55 Messages postés 14401 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 17 avril 2024
29 nov. 2020 à 15:28
Bon ben là, c'est fantastique.

Tout fonctionne parfaitement.

Merci énormément pour l'attention et les solutions apportées à mes questions.

Tu déchires!
0
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5
26 nov. 2020 à 13:30
Bonjour,

merci beaucoup pour la réponse apportée.

j'y comprends pour le moment pas grand chose mais je vais étudier la solution!
0

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

Posez votre question
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5
Modifié le 28 nov. 2020 à 07:04
Bonjour,

J’ai essayé la solution que tu m’as proposé. Avec l’exemple que je t’ai donné, tout fonctionne bien mais quand dans la macro j’essaie de faire les correspondances avec mes données réelles en effet ça ne fonctionne plus.

Du coup, voici le lien vers mon fichier.
https://www.cjoint.com/c/JKCfZzGMEtD

Et voilà ce que j’aimerais pouvoir faire.

Dans l’onglet, formulaire, la liste des activités proposées évolue en fonction du choix du financement.

Ce que je voudrais c’est , quand il s’agit d'une activité relevant d'un financement 1 ou 3, que l’intervenant de l'activité s’affiche directement, comme c’est le cas actuellement avec la fonction index combinée à equiv.

Mais quand l’activité choisie relève du financement 2, j’aimerais que dans l’espace réservé à l’information « intervenant », une liste déroulante apparaisse afin de pouvoir sélectionner manuellement la fonction qui correspond à l’intervenant.

La liste déroulante en question est celle que j’ai fait apparaître sur le côté du formulaire « liste des fonctions : fonction 1, fonction 2, fonction 3, etc… »

J’ai essayé d’enlever les données « sensibles » de mon fichier. A ce titre là, la liste des fonctions proposées dans le fichier n’est pas la liste finale . A terme, je serai amené à remplacer « fonction 1 », « fonction 2 », etc.. par de vraies noms de fonction.

J’espère que ma demande est assez claire…

En te remerciant par avance….
0
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5
28 nov. 2020 à 18:18
Top!!!!!

Merci énormément pour ton aide!

Trop content!
0