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

VBA Word Discussion :

Alimentation d'un tableau word par une macro


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Alimentation d'un tableau word par une macro
    Bonjour,

    J'ai beau chercher je n'ai pas trouvé de cas similaire au mien

    Je vous explique, je dois alimenter un tableau word par une macro.
    La macro est générée et exécutée à partir d'une application.

    le process est le suivant :
    - ouverture d'un modèle de document (contenant des signets)
    - alimentation de ces signets par des valeurs passées en paramètres

    Mon problème est d'alimenter un tableau contenant un signet (le tableau du modèle à une ligne et x colonne).
    Le signet se trouve dans la première cellule et l'alimentation doit se faire en ligne.
    Sachant que les données sont constituées sous forme de liste, c'est à dire qu'une fois l'alimentation d'une ligne effectuée on crée une nouvelle et on alimente la suivante.

    J'espère avoir été assez clair.

    Merci d'avance de vos futures réponses.

  2. #2
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut YAJ_SKG,

    Tu as presque toute la solution, il ne te manque que le fait de détecter le nombre de fois où tu dois alimenter tes lignes. En effet dans Word, si tu fais tab sur un tableau en fin de tableau, il crée une nouvelle ligne identique à celle du dessus et donc tu peux alors boucler la-dessus.

    @+

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Hello,

    Merci de ta réponse Sepia.
    Mais en fait je crois que j'ai oublié quelque chose dans mon post ... ce qu'il me manque c'est la syntaxe d'alimentation du tableau.

    Pour info la liste contenant mes données a la forme suivante :

    ["Nom du Signet" = ["Valeur 1", "Valeur 2", "Valeur 3", "Valeur 4"]]

  4. #4
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut YAJ_SKG,

    Pour écrire tes valeurs, lis ton signet et effectue un split sur la virgule, à chaque itération, écris la valeur et effectues une tabulation. Voici une base de travail :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    aText = <Lire ta ligne qui correspond à ta liste <=> ["Nom du Signet" = ["Valeur 1", "Valeur 2", "Valeur 3", "Valeur 4"]]>
        aNomSignet = Trim(Mid(aText, 1, InStr(aText, "=") - 1))
        aListeValeurs = Trim(Mid(aText, InStr(aText, "=") + 1))
        aListeValeurs = Trim(Mid(aListeValeurs, InStr(aListeValeurs, "[") + 1, InStr(aListeValeurs, "]]") - InStr(aListeValeurs, "[") - 1)) & ","
     
        Selection.GoTo What:=wdGoToBookmark, Name:=aNomSignet
        While InStr(aListeValeurs, ",")
            Selection.TypeText Text:=Mid(aListeValeurs, 1, InStr(aListeValeurs, ",") - 1)
            Selection.MoveRight Unit:=wdCell
            aListeValeurs = Mid(aListeValeurs, InStr(aListeValeurs, ",") + 1)
        Wend
    Attention, il n'y a pas de contrôle sur la présence du signet ni sur le nombre de cellules du tableau par rapport à la liste des valeurs.
    Cette macro ne fonctionne que s'il n'y a pas de "," dans les valeurs et je n'ai pas utiliser de fonction Trim pour le texte à insérer (car j'ai supposé que des espaces pouvaient faire partie du début ou de la fin des valeurs)
    Si tu es dans les cas précédents, on peut améliorer la macro.
    @+

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup de ta réponse.

    Entretemps j'ai trouvé une solution.

    Je construis le code de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Selection.Goto What:= wdGoToBookmark, Name:=  "Nom du Signet"
    Selection = "Valeur 1"
    Selection.MoveRight Unit:=wdCell
    Selection = ""Valeur 2"
    Selection.MoveRight Unit:=wdCell
    Selection = ""Valeur 3"
    Selection.MoveRight Unit:=wdCell
    Selection = ""Valeur 4"
    J'aurai pu écrire ça dans une boucle (comme tu l'as fait) mais le faire ainsi me permet d'avoir une trace dans le fichier macro que j'écris.

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

Discussions similaires

  1. Découper un gros doc word par une macro
    Par cedricfilien dans le forum VBA Word
    Réponses: 8
    Dernier message: 22/05/2016, 02h51
  2. Commander les filtres / segments d'un tableau pivot par une macro
    Par Babolat dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/07/2015, 13h53
  3. [2013] Remplacement d'un texte dans word par une macro sur excel
    Par Benoit L dans le forum Microsoft Office
    Réponses: 4
    Dernier message: 06/02/2015, 14h39
  4. [XL-2010] Importation de données d'un tableau Exel Par une macro
    Par Kifrag2406 dans le forum Excel
    Réponses: 0
    Dernier message: 06/11/2013, 18h50
  5. Réponses: 1
    Dernier message: 07/02/2008, 00h10

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