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

Macros et VBA Excel Discussion :

Sortir d'un tableau - Excel à Word édition [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 4
    Par défaut Sortir d'un tableau - Excel à Word édition
    Bonjour à toutes et à tous j'espère que vous passez une agréable journée en ce mois de juin,

    Je viens vers vous aujourd'hui pour un petit problème qui me fait tourner en rond depuis hier matin, tout d'abord je m'excuse pour la quantité de texte d'explication qui va suivre mais je pense qu'un max d'infos est indispensable pour résoudre mon problème.

    Pour commencer j'ai été engagé en temps que stagiaire dans une petite startup afin de créer dans macro en VBA sur Excel-Word, mon problème actuel se situe je dirais entre les deux, alors si je ne suis pas dans la bonne section veuillez m'en pardonner je suis un peu perdu car je viens de m'inscrire (mais ça fait déjà un moment que je viens lire des sujets ici, qui d'ailleurs m'ont facilité grandement la vie un grand merci au dev et au personne qui prennent du temps pour nous répondre vous êtes au top !).

    A partir d'un classeur Excel je fais une macro afin de reprendre certaines données afin d'automatiser la prise de données qui se faisait manuellement par mon boss. Tout se passait sans aucun soucis j'ai quelques bonnes bases en programmation VB donc m'adapter pour de l'application n'était pas bien compliqué, sauf que mes limites viennent d'être atteinte visiblement .

    Je m'explique :

    Je prend des données dans ce classeur Excel (qui en passant fait des dizaines de milliers de lignes donc assez complexe à mettre en oeuvre) et je les stocke dans des variables de type tableau et/ou Integer/String. Avec ces données je dois créer/éditer un document word en plaçant ces données dans des tableaux ou bien juste en brut avec des titres et des champs de texte. J'ai un problème léger et un problème assez important que je dois régler afin de continuer ma macro.

    Donc j'édite mon tableau, je place toutes les valeurs dans les cellules voulu et là impossible de sortir de mon tableau afin de continuer l'édition.

    Je ne vous met pas mon code en entier (si certain sont intéressé par ce genre de processus je vous enverrais mon code avec grand plaisir, il fera 1000-1500 lignes environs) car beaucoup trop long je vous met que l'essentiel :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    'Création du document word et lancement
    Dim appword As Object
    Dim docword As Object
    Application.WindowState = xlMinimized
    Set appword = CreateObject("word.application")
    appword.Visible = True
    Set docword = appword.documents.Add(template:="c:\Users\charly\Documents\1.docx")
     
    appword.Selection.TypeText Text:="bonjour"
    appword.Selection.TypeParagraph
     
    'Création du tableau
    Dim nbColonne As Integer
    Dim nbLigne As Integer
     
    'nbColonne et nbLigne seront affecté à une valeur via une boucle mais pour l'instant je le laisse comme ça
    nbColonne = 3
    nbLigne = 6
     
    Dim tableau As Object
    Set tableau = docword.Tables.Add(Range:=appword.Selection.Range, NumRows:=nbLigne, NumColumns:=nbColonne)
     
    'Mise en forme du tableau
        With tableau
            If .Style <> "Grille du tableau" Then
                .Style = "Grille du tableau"
            End If
            .ApplyStyleHeadingRows = True
            .ApplyStyleLastRow = False
            .ApplyStyleFirstColumn = True
            .ApplyStyleLastColumn = False
            .ApplyStyleRowBands = True
            .ApplyStyleColumnBands = False
        End With
     
    'Mise en place des valeurs dans les cellules
    tableau.Cell(1, 1).Range.ParagraphFormat.Alignment = wdAlignParagraphRight
    tableau.Cell(1, 1).Range.Text = "Poste"
     
    tableau.Cell(1, 2).Range.Text = "Consommation (kWh énergie finale)"
    tableau.Cell(1, 3).Range.Text = "Coût calculé (€ TTC/an)"
    Premier problème :

    Comment sortir le "curseur" de mon tableau ? Car du coup le reste de ma macro s'écrit dans la dernière cellule je vous explique pour le bordel lol (excusez mon langage).

    J'ai déjà éssayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    appword.Selection.EndKey Unit:=wdStory
    Mais ça place le curseur seulement à la fin de la cellule sélectionnée et le paramètre "Unit" n'est pas prit en compte dans Excel ça me met dans le débogage..

    J'ai éssayé le moins possible d'utiliser Selection mais parfois je n'ai pas le choix de par l'utilisation d'une macro Excel qui édite un document Word.

    Deuxième problème (par grave si non résolu je m'arrangerai autrement) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tableau.Cell(1, 1).Range.ParagraphFormat.Alignment = wdAlignParagraphRight
    Cette ligne ne marche malheureusement pas avez vous une autre solution pour aligné le texte d'une cellule ?

    Je vous remercie d'avance pour votre aide, je suis dispo à toute heure pour plus de précision si je ne suis pas clair mis à part les heures de sommeil .

    Ps : je peux surement dire des ânneries quelques fois n'hésitez pas à me corriger je ne suis clairement pas un expert en VBA j'ai dû m'adapter en à peine deux semaines.

    J'ajoute aussi qu'avant de poster ce message j'ai cherché toute la journée sur ce forum et ailleurs mais mon problème est assez spécifique car j'édite un doc word depuis excel .

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut

    pour ton premier problème, j'utiliserai une feinte pour avoir ton tableau entre 2 paragraphes

    Le code peut être récupéré via l'enregistreur de macros, mais l'idée serait :
    - tape du texte
    - saute une ligne
    - saute une ligne
    - remonte d'une ligne
    - insere ton tableau
    - sort le curseur de ton tableau

    Pour ton second problème :
    - je crois voir que tu passes par du late binding, et j'en déduis que la référence Word n'est pas disponible, aussi ta constante
    wdAlignParagraphRight
    n'est pas connue et te retourne 0 (valeur par defaut)

    Remplace la constante par sa valeur (ici 2) et refais un test.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 4
    Par défaut
    Jean-Philippe sincèrement je te remercie du fond du coeur,

    En effet j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    With appword.Selection
       .TypeText Text:="Toto"
       .TypeParagraph
       .TypeParagraph
       .MoveUp
    End With
     
    'J'insere mon tableau
     
    appword.Selection.MoveDown Count:=nbLigne
    Et ça a marché nickel, je pense même que je n'ai pas besoin des sauts de ligne au début juste le MoveDown avec un count en fonction du nombre de ligne du tableau suffit, mais tu m'as mit sur la piste sans toi jamais je n'aurais trouvé.

    Pour mon deuxième problème c'est moi qui suis un peu mou du genou ahah j'écris des ref Word alors que je suis sur Excel ça ne risque pas de marcher, j'ai prit l'index "2" et ça marchait nickel aussi.

    Si tu passes dans le jura un jour n'hésite pas à me contacter que je te paye un verre !

    Un grand merci, je clos le sujet.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/10/2007, 11h44
  2. export tableau excel vers word
    Par camzo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/10/2007, 18h53
  3. lier un tableau word + tableau excel
    Par dado91400 dans le forum VBA Word
    Réponses: 4
    Dernier message: 31/08/2007, 19h38
  4. Tableau dans Word + Fichier Excel
    Par dado91400 dans le forum VBA Word
    Réponses: 1
    Dernier message: 20/07/2007, 19h57
  5. Tableau excel et document Word
    Par Zimzimut dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 13/06/2007, 14h40

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