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 :

VBa, Lignes d'en-tête d'un tableau copié de Excel vers Word


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Jeune diplomé - Ingénieur généraliste
    Inscrit en
    Septembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Jeune diplomé - Ingénieur généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut VBa, Lignes d'en-tête d'un tableau copié de Excel vers Word
    Bonjour, je rencontre un problème. Je copie un tableau de Excel vers Word via VBa et j'aimerais que le tableau collé dans Word ait comme en-tête les deux premières lignes du tableau.
    L'intérêt est que lorsque le tableau s'étend sur plusieurs pages cette en-tête soit répétée à chaque haut de page où le tableau continue. Je voudrais pouvoir le définir dans ma procédure VBa sous Excel.


    Je ne rencontre pas de problème à la copie, le tableau se colle à un signet dans mon fichier Word.

    La difficulté que je rencontre dans mes recherches est due à la proximité avec les termes "en-tête et pied de page" qui monopolisent le sujet et j'ai du mal à trouver les propriétés VBa se rapportant aux en-têtes de tableaux (s'il y en a).

    Merci par avance de votre aide, dîtes moi si je ne suis pas clair !

  2. #2
    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 ppleon Voir le message
    Bonjour, je rencontre un problème. Je copie un tableau de Excel vers Word via VBa et j'aimerais que le tableau collé dans Word ait comme en-tête les deux premières lignes du tableau.
    L'intérêt est que lorsque le tableau s'étend sur plusieurs pages cette en-tête soit répétée à chaque haut de page où le tableau continue. Je voudrais pouvoir le définir dans ma procédure VBa sous Excel.
    À ma connaissance, tu ne peux pas le faire, du moins facilement, par programmation. Un tableau dans Word n'est pas scindé par un saut de page dans Word. Donc, un tableau Word qui déborde sur plusieurs pages reste un tableau unique. Même qu'une cellule de plusieurs lignes peut se retrouver à cheval sur deux pages à l'impression. Il faudrait que tu détectes le saut de page de Word, que tu remontes au début de la cellule, que tu scindes ton tableau, que tu te rendes au début de ton nouveau tableau, que tu y ajoutes une ligne et que tu y colles ton entête. Et, dès que ta mise en page sera modifiée, tout sera à refaire, et tu seras peut-être même obligé de rescinder ton premier tableau, de fusionner la nouvelle partie obtenue avec ton ancienne deuxième partie et de rescinder quelques cellules plus bas.

    La mise en page finale d'un document Word moindrement important doit être faite à la main avec un contrôle visuel constant; autant de qui précède que de ce qui suit. Sinon, c'est courir au désastre.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Jeune diplomé - Ingénieur généraliste
    Inscrit en
    Septembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Jeune diplomé - Ingénieur généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Tout d'abord merci de ta réponse clementmarcotte.
    J'avais bien compris que le tableau bien qu'à cheval sur plusieurs pages ne se scinde pas il reste en effet "un".
    L'idéal aurait été d'attribuer à ces deux premières lignes la propriété HeadingFormat qui existe sur Word...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.Rows(1:2).HeadingFormat = True
    Apparemment ce n'est pas possible, tu me confirmes également. Scinder les tableaux comme tu le décris paraît en effet laborieux et peu "flexible".. Sachant que pour une autre utilisation (style, copier-coller manuel...) il est souvent bien pratique de sélectionner en une fois tout le tableau...

    Donc apparemment la solution existe de Word pour Word mais pas de Excel pour Word "du moins facilement, par programmation" et je ne veux pas non plus créer une usine à gaz. Au pire je mettrai une macro dans Word mais je n'aime pas distribuer des fichiers avec macro. Je préfère un générateur de fichiers avec macro (ici Excel) -> Fichiers pour utilisateurs sans macros.

    Le sujet a été déplacé dans "Word", pourtant le travail (VBa) se situe au niveau du fichier excel. Dans le Word je n'ai mis que des signets car je veux éviter les macros.

    Cela m'étonne quand même que le sujet soit si peu traité, je me pose des fois la question du pourquoi je suis le seul à vouloir utiliser ce moyen. Comme si tout le monde faisait autrement... Dans ce cas dîtes moi !

  4. #4
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,
    il faut un peu modifier l'idée de sélection en étendant celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    'Sélection de la preière ligne
    Selection.Tables(1).Rows(1).Select
    'On étend la sélection d'une ligne
        Selection.MoveDown wdLine, 1, wdExtend
    'On applique la propriété "Répéter la ligne"
        Selection.Rows.HeadingFormat = True

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Jeune diplomé - Ingénieur généraliste
    Inscrit en
    Septembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Jeune diplomé - Ingénieur généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour Christophe,
    Merci de ta réponse. Si je ne me trompe la syntaxe comprenant "movedown", "Rows.HeadingFormat" est propre à Word. Je cherche vraiment une solution à partir d'Excel.

    A partir de Word je pense en effet ne pas avoir de problèmes avec le code, cependant j'essaie d'éviter de mettre du VBa dans mon fichier Word.

    C'est pourquoi j'avais placé mon sujet dans le forum Excel car je veux mettre tout le code (VBa) dans mon fichier Excel.

    Je vais préciser le contexte : je prépare un fichier Excel qui sera à remplir par les utilisateurs. Un tableau par feuille. Ensuite après l’exécution de la macro (VBa) sous Excel les tableaux viennent s'intégrer à des rapports types (fichiers Word) à l'emplacement de leur signet respectif.

    Ma conclusion après mes recherches et votre aide est que je pense tout simplement abandonner Excel.
    Pour une question essentiellement de temps je pense adopter une solution que je trouve moins "propre" mais qui satisfera mes besoins rapidement.

    Je pense que je vais faire remplir les tableaux (6 au total) par les utilisateurs sur Word pour pouvoir ensuite bénéficier de la propriété Rows.HeadingFormat qui me simplifiera la vie. Je pourrai alors exporter les tableaux avec les propriétés d'en-tête des tableaux vers mes fichiers types. Du moins je l'espère, je m'y mets...

  6. #6
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 526
    Points : 16 463
    Points
    16 463
    Par défaut
    Bonjour

    On peut dans Word déclarer une ou plusieurs lignes du tableau comme en-tête afin qu'elles se répètent de page en page sur un tableau long..

    Il faut utiliser le langage VBA Word mais rien ne t'empêche depuis ta macro Excel d'invoquer le VBA de Word et j'imagine que tu le fais pour coller dans le signet. Je ne comprends donc pas où se situe ton problème pour intégrer le code de carden.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Jeune diplomé - Ingénieur généraliste
    Inscrit en
    Septembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Jeune diplomé - Ingénieur généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour 78Chris,
    C'est vrai qu'a priori je devrais pouvoir utiliser le VBa de Word mais en pratique je n'y arrive pas... Je peux en effet utiliser le code de Carden en y ajoutant un prefixe "WordApp." avec WordApp de type Word.application.
    L'utilisation de Tables(1) pose également problème car j'ai des cellules fusionnées (je pourrais m'en passer mais je veux prendre le cas où il y en a).

    Le tableau se colle, je n'ai pas d'erreur mais l'en-tête du tableau ne se répète pas... J'ai peut être un problème dans l'ordre des instructions ou dans le collage (le simple collage paraît bien pour les tableaux).
    Rien de plus clair que le code en lui même, grosso modo :

    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
    29
    30
    31
    32
     
    Dim WordApp1 As Word.Application
    Set WordApp1 = CreateObject("Word.Application")
    Dim Plage1 As Range
     
    'Ouvrir le document Word
    WordApp1.Documents.Open "C:\Users\Ppleon\Documents\blabla.docx"
     
    'Rend le document Word visible
    WordApp1.Visible = True
     
    'Boite de séléction de la plage par l'utilisateur
    Set Plage1 = Application.InputBox(prompt:="Sélectionnez la plage à copier", Type:=8)
     
    'Sélection des lignes d'en-tête du tableau
    Plage1.Rows("1:2").Select
    WordApp1.Selection.Rows.Select
     
    'On applique la propriété "Répéter la ligne"
    WordApp1.Selection.Rows.HeadingFormat = True
     
    'Copie du tableau sélectionné
    Plage1.Copy
     
    'Cherche le signet dans la feuille word
    WordApp1.Selection.GoTo What:=wdGoToBookmark, Name:="SgntX"
     
    'Coller la plage dans Word
    WordApp1.Selection.Paste
     
    'Annuler le mode couper/copier
    Application.CutCopyMode = False

  8. #8
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 526
    Points : 16 463
    Points
    16 463
    Par défaut
    Bonjour

    Oui c'est une fois le tableau collé dans Word que tu peux en paramétrer le contenu, car avant c'est un tableau Excel...

Discussions similaires

  1. [XL-2007] Export d'un tableau dimensionné (à partir de vba Excel) vers Word
    Par hedidev1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/02/2015, 21h02
  2. Réponses: 2
    Dernier message: 12/02/2007, 14h39
  3. [VBA-Word] Exportation Excel vers Word
    Par le_sonic dans le forum VBA Word
    Réponses: 6
    Dernier message: 20/12/2006, 18h18
  4. [VBA-A]Copier des données d'Excel vers Word
    Par soad029 dans le forum VBA Word
    Réponses: 15
    Dernier message: 16/03/2006, 12h56
  5. [VBA-E]Copie graphique de excel vers word
    Par conconbrr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/02/2006, 11h49

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