IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Word Discussion :

Formule IF avec une liste déroulante comme résultat


Sujet :

Word

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut Formule IF avec une liste déroulante comme résultat
    Bonjour,

    Est-il possible de subordonner une liste déroulante de formulaire à la valeur d'un signet ?
    En effet, dans mon document word, je souhaiterais qu'une liste déroulante apparaisse en fonction de la valeur d'un signet (qui lui aussi est une liste déroulante comprenant 2 valeurs) :
    du style {IF {monsignet} = "voili voilou" mon_champ_de_liste_déroulante ""}

    Est-ce faisable ?

    D'avance merci pour votre assistance.

  2. #2
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Bonjour,

    Vu ceci quelque part

    Soit ListeDeroulante1 le nom du signet de la première liste déroulante et ListeDeroulante2 le nom du signet de la deuxième liste déroulante, voici le code à copier dans ThisDocument et à adapter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Sub Synchro_deux_listes()
     
    Dim ListeDeroulante2 As ListEntries, ListeDeroulante1 As Byte
    Set ListeDeroulante2 = ActiveDocument.FormFields("ListeDeroulante2").DropDown.ListEntries
    ListeDeroulante1 = ActiveDocument.FormFields("ListeDeroulante1").DropDown.Value
     
    ListeDeroulante2.Clear
    If ListeDeroulante1 = 1 Then
     
    With ListeDeroulante2
    .Add Name:="ChoixDeListe1"
    .Add Name:="ChoixDeListe2"
    .Add Name:="ChoixDeListe3"
    End With
    ElseIf ListeDeroulante1 = 2 Then
    With ListeDeroulante2
    .Add Name:="ChoixDeListe4"
    .Add Name:="ChoixDeListe5"
    .Add Name:="ChoixDeListe6"
    End With
    ElseIf ListeDeroulante1 = 3 Then
    With ListeDeroulante2
    .Add Name:="ChoixDeListe7"
    .Add Name:="ChoixDeListe8"
    .Add Name:="ChoixDeListe9"
    End With
    End If
    End Sub
    Une fois la macro insérée, double-cliquez sur la liste déroulante ListeDeroulante1, et sélectionnez cette macro dans la liste déroulante "Exécuter la macro à la sortie."

  3. #3
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Bonsoir messieurs,

    Merci pour vos réponses.

    Comme vous vous en doutez, je ne m'en sors pas. Mais peut-être me suis-je une fois de plus mal exprimée.
    Ma liste déroulante1 contient 2 choix. Je souhaite que si liste déroulante1 = choix1 alors apparition de la liste déroulante2 sinon rien (liste déroulante2 est invisible)

    Bonne nouvelle, j'ai compris vos propositions mais cela ne correspond à ce que je souhaite obtenir, si tant est que cela soit possible..

    Une idée ?

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Ca ne fonctionnera pas avec un IF dans un champ.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  6. #6
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    OK.
    Je suppose que cela aurait été possible avec un contrôle de liste de déroulante et du code derrière du style If .... visible = true ?

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Ou avec un .Font.hidden
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  8. #8
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Salut,

    Ou avec un .Font.hidden
    Gloups !
    Je vais renifler cette piste...

    Cela suppose t-il que toutes mes listes déroulantes (la 1 et la 2) soient des contrôles ? Ou seulement la 2ème (celle qui doit être invisible en fonction d'une des valeurs de la 1ère, sinon visible par défaut) ?

    Si tel est le cas, cela implique t-il que tous les autres champs qui dépendent de cette liste déroulante1 doivent être des contrôles ?

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Bonjour,
    Désolée mais je ne m'en sors pas.
    Peux-tu m'aiguiller avec ton font.hidden ?

    Merci par avance

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Voilà un exemple.

    Et le code que le document contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub SoriteCombo1()
    Select Case ActiveDocument.FormFields(1).Result
    Case "Caché"
        ActiveDocument.FormFields("Dropdown2").Range.Font.Hidden = True
    Case "Visible"
        ActiveDocument.FormFields("Dropdown2").Range.Font.Hidden = False
    End Select
     
     
    End Sub
    Fichiers attachés Fichiers attachés
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  11. #11
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Bonjour Oli,

    Je n'ai pas compris ce que tu as fait. Que se passe t-il quand je sélectionne "caché" ou "visible" ?
    Je ne vois aucune modif, en revanche j'ai un message d'erreur "cette méthode ou propriété n'est pas disponible car l'objet fait référence à une zone protégée" quand je tabule après avoir choisi la première liste.

    Par ailleurs, peux-tu me dire à quoi fait référence le (1) de formFields dans le code ?

    Merci d'avance

  12. #12
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Sans rien changer, j'ouvre le document et tout fonctionne.
    Le choix visible dans la liste affiche la seconde, caché la masque.

    Ce que j'ai fait, c'est juste les quelques lignes de code que j'ai mis dans le post et qui sont dans le document.

    Et (1) c'est l'index du champ de formulaire, (2) pour le second et ainsi de suite.

    J'ai sauvegardé en .doc au lieu d'un docm.
    Fichiers attachés Fichiers attachés
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  13. #13
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Je vais devenir chèvre.

    Sans rien toucher, j'ai ouvert ton fichier au format docm et j'avais tous les champs d'affichés....

    Là, le fichier que tu viens de joindre fonctionne.

    Je ne vois pas ce qu'il a différent avec l'autre (en dehors du format)

    J'ai ensuite copié-collé ton code en remplaçant le nom du signet dropdown2 par le mien, les valeurs "caché" et "visible" par les miennes mais rien n'y faisait !

    J'ai failli devenir folle !

    Car ...... figure-toi que chez moi (word 2010) ça fonctionne et pas au travail (word 2003).
    Un rapport ?

  14. #14
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Bonjour,

    Je confirme : sous word 2003 le code ne fonctionne pas. Chez moi, c'est parfait mais au bureau, impossible.

    D'où cela vient-il dans le code ?

    Merci

  15. #15
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Je pense que sous 2003, il faut désactiver la protection du document.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  16. #16
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Mais si je désactive la protection, je ne pourrai pas utiliser mes champs, ma liste déroulante maîtresse en l'occurence

    Je ne comprends pas comment cela fonctionnerait

  17. #17
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Il faut la réactiver ensuite.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  18. #18
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Pour insérer mon code, ma protection est désactivée de toute façon donc à quelle moment veux-tu que je la désactive si elle l'est déjà ?
    Désolée d'être un boulet mais là...

    Je désactive, je place mon code puis j'active la protection, non ?
    C'est ce que j'ai fait au bureau quand tu m'as donné le code. Je situe pas bien ce que je dois faire de plus ou de différent.

  19. #19
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Tu vas faire insérer le code par les utilisateurs ?

    Le document, on le crée avec le code avant de le distribuer.
    Mais avec le code, on désactive la protection, on agit sur les contrôles de formulaire et on reprotège.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  20. #20
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Salut,

    Tu vas faire insérer le code par les utilisateurs ?
    Non, c'est moi qui le fais. Eux, ils n'ont qu'à renseigner le document point barre et ne doivent rien toucher/bouger/modifier.

    Citation Envoyé par Heureux-oli Voir le message
    Le document, on le crée avec le code avant de le distribuer.
    Mais avec le code, on désactive la protection, on agit sur les contrôles de formulaire et on reprotège.
    oui donc je ne vois ce que je peux faire de plus. C'est comme ça que je procède depuis le départ : je crée, je mets mes codes / formules etc et je protège. Je teste et si qqch ne fonctionne pas (en l'occurence ton code qui fonctionne impec sous word 2010), je désactive, je modifie et je réactive ma protection.

    Que te dire ?

Discussions similaires

  1. Réponses: 7
    Dernier message: 17/10/2006, 12h32
  2. [Débutant] problème avec une liste déroulante
    Par stan21 dans le forum Access
    Réponses: 3
    Dernier message: 12/07/2006, 14h52
  3. Réponses: 2
    Dernier message: 03/05/2006, 17h00
  4. Réponses: 17
    Dernier message: 03/05/2006, 14h01
  5. Remplir 3 champs textes différents avec une liste déroulante
    Par azorol dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/12/2005, 00h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo