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 :

Imbriquer plusieurs If dans une formule de champ via une macro [WD-2003]


Sujet :

Word

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 30
    Points : 11
    Points
    11
    Par défaut Imbriquer plusieurs If dans une formule de champ via une macro
    Bonjour,

    Comme indiqué dans l'intitulé du message je souhaite pouvoir imbriquer plusieurs SI dans une formule mais en passant par une macro.

    c'est cette macro qui sera censé affecter la formule au champ

    Ce champ se situe dans un cellule d'un tableau word

    Essai 1 : Formule ="IF NBR_MENS = 12 1 IF NBR_MENS = 24 2 ".
    Essai 2 : Formule = "=IF(NBR_MENS = 12 , 1 , IF(NBR_MENS = 24 , 2 , 0 ))".
    Essai 3 : Formule = "IF NBR_MENS = 12 , 1 , {IF NBR_MENS = 24 , 2 , 0}".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Doc.Tables(1).Cell(1, 1).Formula Formula:= Formule
    en modifiant le code de champ dans Word j'y arrive mais pas en passant par VBA :s

    si quelqu'un à une idée je suis preneur

    Merci et bonne journée

  2. #2
    Rédacteur/Modérateur

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

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

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

    Pourquoi modifier la formule par macro.

    Je pense qu'il serait plus simple de modifier la donnée directement en VBA.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Salut,

    en fait mon document word est crée de toute pièce par une macro d'un document excel.
    L'une des options que l'utilisateur saisie rempli une liste déroulante présente sur le document word (15 valeurs possible)
    a chacune de ces valeurs un coefficient est affecté.

    Un autre logiciel récupère ce document word pour y coller un certain nombre d'infos sur des signets, une fois cette étape fini il restera a l'utilisateur quelques option à choisir qu'il ne pourra sélectionner qu'a ce moment la et pas en amont.

    du coup je voulais via une série de IF tester la valeur sélectionné sur la liste déroulante pour mettre le coef correspondant sur un champ qui sera utilisé dans une autre formule

  4. #4
    Rédacteur/Modérateur

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

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

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

    Je reste persuadé que ce sera plus simple de faire le test logique en VBA.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Oui le test est plus simple en vba mais le coef a afficher n'est pas calculable les quinzes valeurs de la liste déroulante ont un coef spécifique (chiffre allant jusqu'à 6 chiffre après la virgule) du coup pour le test logique en vba comment je passe les coef de mon fichier excel vers mon doc word, sachant que le fichier excel sert juste a générer le doc word et qu'après il n'y a plus d'accès a ce fichier. :/ c'est la dessus que je bute et pour cette raison que je voulais le mettre dans une formule de champ si choix1 alors coef1 ....

  6. #6
    Rédacteur/Modérateur

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

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

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

    je ne vois pas ce qui coince.

    Il est possible de faire des tests multiples sans imbriquer les If.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {If TestLogique1 "Vrai" ""}{If TestLogique2 "Vrai" ""}
    Et dans ce cas, c'est une simple méthode Add.

    Je ne trouve pas comment utiliser des champs imbriqués en Word.

  7. #7
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par royersebastien Voir le message
    Oui le test est plus simple en vba mais le coef a afficher n'est pas calculable les quinzes valeurs de la liste déroulante ont un coef spécifique (chiffre allant jusqu'à 6 chiffre après la virgule) du coup pour le test logique en vba comment je passe les coef de mon fichier excel vers mon doc word, sachant que le fichier excel sert juste a générer le doc word et qu'après il n'y a plus d'accès a ce fichier. :/ c'est la dessus que je bute et pour cette raison que je voulais le mettre dans une formule de champ si choix1 alors coef1 ....
    Si l'idée c'est juste de s'assurer que Word a accès à la valeur du coefficient, tu peux envisager un simple stockage externe:

    - Le registre Windows:

    SaveSettings dans VBA-Excel pour l'enregistrer
    GetSettings dans VBA-Word pour le récupérer

    - Un banal fichier texte.

    - Ou, ce qui me semble la première chose à essayer, dans ce cas-ci, une banale variable d'environnement avec la fonction Environ.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Déjà merci de vous interesser a mon problème

    Concernant les tests multiples, il est vrai que c'est pas necessaire de les imbriquer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {If TestLogique1 "Vrai" ""}{If TestLogique2 "Vrai" ""}
    ceci fonctionne si j'ecris directement la formule de champ dans word sans passer par une macro car avec ctrl+F9 j'obtiens les accolades par contre si je veux ecrire la formule en vba les accolades "standard" ne fonctionnent pas ....

    clementmarcotte de ton coté je n'aurais pas seulement une valeur à stocker mais 15 puisqu'au moment de créer le document word je ne connais pas encore la valeur choisie et donc son coef associé


  9. #9
    Rédacteur/Modérateur

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

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

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

    Pour ajouter un champ c'est Fields.Add

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.Fields.Add Selection.Range, wdFieldEmpty, .......
    Les simples accolades ne fonctionnent pas que ce soit en VBA ou dans l'interface graphique.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    ahhh je vais tester cela je connaissais pas, merci en tout cas je vous dirais ce qu'il en est

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Alors quelques news

    Je boucle sur mes différentes valeurs puis j'insere le nouveau IF dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Doc.Fields.Add Range:=Doc.Bookmarks("Insert_Coef").Range, Type:=wdFieldEmpty, Text:="IF NBR = " & iNbr & " " & dCoef & " "
    afin d'arriver à mettre une serie de IF dans une cellule d'un tableau word j'ai mis un signet a l'interieure de cette cellule et ensuite en passant par le signet ca fonctionne.

    Merci Heureux-Oli pour ton coup de main

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/09/2014, 13h23
  2. [LibreOffice][Base de données] Recuperer une liste de tables et une liste de champs d'une table sur LibreOffice & OpenOffice
    Par gerard.sauvage dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 08/04/2014, 13h35
  3. Copier champ d'une table vers champ d'une autre table
    Par kepherton dans le forum Débuter
    Réponses: 1
    Dernier message: 10/10/2008, 15h42
  4. Réponses: 8
    Dernier message: 09/07/2008, 14h09
  5. [select dans case] reconnaitre un champ d une table liée
    Par the_edge dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 22/10/2004, 17h47

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