Combiner si, recherchev et liste déroulante

badarledur Messages postés 398 Statut Membre -  
badarledur Messages postés 398 Statut Membre -
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!

6 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
  3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    1. badarledur Messages postés 398 Statut Membre 5
       
      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
    2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > badarledur Messages postés 398 Statut Membre
       
      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
    3. badarledur Messages postés 398 Statut Membre 5 > via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    4. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > badarledur Messages postés 398 Statut Membre
       
      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
    5. badarledur Messages postés 398 Statut Membre 5 > via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  4. badarledur Messages postés 398 Statut Membre 5
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. badarledur Messages postés 398 Statut Membre 5
     
    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
  7. badarledur Messages postés 398 Statut Membre 5
     
    Top!!!!!

    Merci énormément pour ton aide!

    Trop content!
    0