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

Excel Discussion :

Copier tableau excel au dessus de bookmark Word [XL-2010]


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    ingenieur calcul structure
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : ingenieur calcul structure
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Copier tableau excel au dessus de bookmark Word
    Bonjour,
    Je cherche à réaliser des rapports de synthèse sous word à partir de calculs réalisés sous excel.
    Je dispose dans mon fichier excel d'un onglet me permettant de synthétiser les informations relatives à un "panneau" (une itération de mon calcul).
    Je souhaite pouvoir réaliser un rapport word collectant la copie en image (pour figer l'information) de mon onglet rapport pour mes différents panneaux les uns après les autres.
    J'ai réalisé pour cela le code suivant :

    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
     
    Sub generer_rapport()
    On Error Resume Next
     
    ouverture_fichier_word
    initialisation_variables
    STR_rapport_panneaux
    ferneture_fichier_word
     
    End Sub
     
    Sub STR_rapport_panneaux()
     
    column_feuille_compo = Application.WorksheetFunction.Match("feuille de composition coque", Range("5:5"), 0)
    For Each cell In Selection.Cells 'pour chaque cellule sélectionnée
        cell.Select
        ligne_active = ActiveCell.Row       ' on retient la ligne
        feuille_panneaux = ActiveSheet.Name ' et la feuille de composition associée
     
        If Cells(ligne_active, 1).Value <> "" Then
            feuille_compo = Cells(ligne_active, column_feuille_compo).Value
            copie_valeur_template           ' on renseigne l'onglet de rapport
     
            'copie de la table rapport dans word : C'est ici que se pose mon soucis
            Worksheets("TEMPLATE_RAPPORT").Range("A1:L39").CopyPicture
            wdDoc.Bookmarks("detail_panneaux_coque").Range.Paste ' je copie toujours mes informations vers le même bookmark, je ne parviens pas à rediriger la copie convenablement pour que les rapports s'enchainent de manière chronologique
     
            nettoyer_template               'remise à 0 de l'onglet de rapport
        End If
    Next
    End Sub
    Ce code me permet bien de copier l'onglet rapport dans word, mais pas de la manières dont je souhaiterai :
    Je sélectionne 5 panneau (1 à 5), et j'obtiens dans word les rapports des panneaux 5 à 1 : A chaque boucle, mon code place le nouveau rapport au dessus précédent. (c'est normal, mon bookmark ne se déplace pas ! )
    Je souhaiterai réaliser quelques chose comme "PasteBeforeBookmark" ou trouver un moyen de repositionner mon bookmark une fois mon une copie de mon onglet rapport réalisée.

    J'espère avoir été assez clair

    Merci de votre aide et de votre attention

  2. #2
    Membre habitué
    Inscrit en
    Décembre 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 115
    Points : 180
    Points
    180
    Par défaut
    Bonjour

    Et pourquoi ne pas déplacer le signet?

    Dans Word, la macro donne ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro1()
    '
    For i = 1 To 3
        Selection.GoTo What:=wdGoToBookmark, Name:="C_la"
        Selection.TypeText Text:="Texte " & i & vbCrLf
        Selection.MoveEnd Unit:=wdSentence, Count:=1
        ActiveDocument.Bookmarks.Add Range:=Selection.Range, Name:="C_la"
    Next i
     
    End Sub
    Le signet "C_la" est déplacé d'une unité (ici c'est wdSentence, soit une phrase) par un "MoveEnd"
    Sinon il y a aussi un forum Word Et il est très bien.

    Cordialement

  3. #3
    Candidat au Club
    Homme Profil pro
    ingenieur calcul structure
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : ingenieur calcul structure
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Merci pour cette réponse

    Et pourquoi ne pas déplacer le signet?
    Parce que je ne suis pas sur de savoir replacer correctement mon bookmark : Il est placé dès le modèle de document à la suite d'un titre. Les images que je colle étant de taille variable en fonction des calculs effectué sur excel, je ne peux replacer le bookmark à l'aide d'une reconnaissance de texte (préconisé dans ta solution si je la comprend bien) ou par positionnement absolu dans le document word (type de solution bien documentée sur le forum).

    J'ai depuis mon dernier post essayé ceci dans le but de garder la position sélectionnée dans word, de revenir à la ligne à la uite de la copie, puis d'insérer une page vierge pour accueillir la copie suivante :


    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
    Sub STR_rapport_panneaux()
    Dim i As Integer
    column_feuille_compo = Application.WorksheetFunction.Match("feuille de composition coque", Range("5:5"), 0)
    wdDoc.Bookmarks("detail_panneaux_coque").Select
    For i = 1 To UBound(lignes_selectionnees)
        If Cells(lignes_selectionnees(i), 1).Value <> "" Then
            feuille_compo = Cells(lignes_selectionnees(i), column_feuille_compo).Value
            copie_valeur_template (lignes_selectionnees(i))          ' on renseigne l'onglet de rapport
     
            'copie de la table rapport dans word
            Worksheets("TEMPLATE_RAPPORT").Range("A1:L39").CopyPicture
            wdDoc.Selection.Paste 
            wdDoc.Selection.TypeParagraph
            wdDoc.Selection.InsertBreak Type:=wdPageBreak
            nettoyer_template               'remise à 0 de l'onglet de rapport
        End If
    Next
    End Sub
    Les lignes " wdDoc.Selection."... posent problème : "Propriété ou méthode non gérée par cet objet".
    Je ne doit pas bien rediriger ma sélection vers word j'imagine, mais je n'ai pas encore trouvé la solution pour faire cela correctement.

    Des idées ?

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 115
    Points : 180
    Points
    180
    Par défaut
    Bonjour (*2)

    En continuant sur mon idée de déplacer un signet, pourquoi ne pas en créer un temporairement?

    Je m'explique, en pseudo-code ()
    Se positionner sur le signet voulu
    En créer un second (C_la)
    Boucle de copie
    copier ce qu'il faut
    déplacer le signet C_la à la fin de la copie
    se positionner sur le signet
    fin de la boucle
    Effacer le signet C_la

    Et avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wdDoc.Application.Selection.Paste
    , ça devrait aller

    Cordialement

  5. #5
    Candidat au Club
    Homme Profil pro
    ingenieur calcul structure
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : ingenieur calcul structure
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse,
    Je regarde ça et poste mon code si je trouve un truc qui tourne.

  6. #6
    Candidat au Club
    Homme Profil pro
    ingenieur calcul structure
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : ingenieur calcul structure
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Effectivement, ça valait le coup de continuer dans ton idée,
    J'ai une solution qui résoud mon problème à l'aide du code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub copie_detail_word(ByVal nom_bookmark As String)
    If indice_signet = 0 Then
                wdDoc.Bookmarks(nom_bookmark).Select
                wdDoc.Application.Selection.Paste
            Else
                wdDoc.Bookmarks(signet).Select
                wdDoc.Application.Selection.InsertBreak Type:=wdPageBreak
                wdDoc.Application.Selection.Paste
            End If
            signet = "signet" & indice_signet
            wdDoc.Bookmarks.Add signet, wdDoc.Application.Selection
            indice_signet = indice_signet + 1
    End Sub
    Merci pour ton aide
    A bientot
    clément

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

Discussions similaires

  1. VBA - Copier tableau excel dans Word en Image
    Par pofito dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/02/2014, 18h20
  2. [WD-2003] Problème pour copier tableau excel sous word
    Par somig dans le forum Word
    Réponses: 3
    Dernier message: 23/02/2013, 11h01
  3. Copier tableau excel dans le cache
    Par Nico820 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/06/2011, 14h31
  4. Copier un tableau excel vers du word
    Par Colbix dans le forum Langage
    Réponses: 4
    Dernier message: 21/04/2010, 08h49
  5. Réponses: 2
    Dernier message: 24/10/2007, 11h44

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