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 :

Macro VBA word pour automatiser un rapport


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    charge d'etudes
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : charge d'etudes
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Macro VBA word pour automatiser un rapport
    Bonjour à tous,

    J'ai automatisé via une macro VBA Excel la production de plusieurs fichiers excel contenant des graphes et des tableaux en fonction de 2 paramètres.
    Pour un tableau ou un graphique donné, j'ai autant de versions que de valeurs pour mes paramètres..
    je suis débutante avec vba Word et j'aurais besoin de votre aide pour automatiser un rapport word intégrant ces tableaux et ces graphes. L'idée étant de pouvoir générer autant de rapports que de valeurs associées à mes paramètres..
    Ces éléments sont toujours situés au même endroit dans la maquette de mon document word.

    J'espère que je suis claire dans mon explication..

    pour copier ma table ou mon graphe depuis excel vers word ça va mais mon souci est de pouvoir définir précisément à quel endroit de mon document je dois taper un texte ou coller mon graphe..
    (faut il passer par une indexation ?)

    je suis perdue!!!

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur

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

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

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

    J'ai pas tout compris, mais si tu souhaites ajouter quelque chose à un endroit précis de ton document, le plus simple est de passer par des signets (Bookmarks)
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    charge d'etudes
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : charge d'etudes
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    hello,

    Merci d'avoir pris le temps de me répondre.

    En fait dans ma maquette du rapport word j'ai défini des signets pour les images, tableaux et graphiques qui seront mis à jour à chaque lancement de la macro word.
    Du coup pour la syntaxe, j'ai trouvé sur le forum comment insérer du texte à l'emplacement indiqué par le signet, mais pas uine image .png ou un tableau excel..

    merci pour ton aide.

  4. #4
    Rédacteur/Modérateur

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

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

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

    J'ai pas tout compris.

    Aurais-tu plus d'explications ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    charge d'etudes
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : charge d'etudes
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Salut,

    je vais essayer d'etre plus claire : en fait j'ai un rapport à produire en plusieurs versions. chaque version dépend d'un paramètre donné : pour chaque paramètre j'aurais une version différente de mon rapport.

    La différence entre toutes les versions figurent dans la version des cartes, graphiques et tableaux excel produits.

    J'essaie donc d'automatiser la production du rapport pour mettre à jour automatiquement les éléments ci-dessus, il n'y aura ensuite plus qu'à taper les commentaires.

    pour le moment, à partir de la maquette word de mon rapport et à l'aide des signets, j'ai réussi à automatiser le titre du rapport, la date de production la première image de mon rapport.

    Le souci c'est que je dois mettre en fait en place une fonction qui se chargera de supprimer l'image déjà existante à l'emplacement du signet colle l'image voulu à cet emplacement et la redimensionner..

    je devrais faire la même chose pour les graphiques et les tableaux avec une fonction prenant en paramètres : le chemin et le nom du fichier, le signet, les dimensions de l'objet

    Merci

  6. #6
    Rédacteur/Modérateur

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

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

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

    Mis à part la version des données externes, seuls les commentaires du document changent.

    Dans tous les cas, le nombre de carte, figures, tableaux, graphiques sera le même et toujours au même endroit ?

    Si c'est le cas, il est plus simple de construire le document à chaque fois que de modifier un document existant.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    charge d'etudes
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : charge d'etudes
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    oui c'est bien cela seules les données externes changent, les commentaires sont ensuite adaptés à chaque version du rapport.

    du coup dans la maquette Word, j'ai déjà défini les emplacements des cartes..

    J'ai introduit une fonction pour insérer les cartes avec pour paramètres : le chemin et le nom du fichier, le signet, les dimensions de l'objet

    le problème c'est que ça bug..
    voici ma fonction que j'appelle dans mon programme principal :

    Sub insertcarte(rep As String, carte As String, signet As String, h As Double, l As Double)

    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
      '¤¤¤ Teste si le signet existe ¤¤¤'
        If .Bookmarks.Exists(signet) Then  'me renvoie l' erreur "référence incorrecte ou non qualifiée"
        Set Rg = .Bookmarks(signet).Range
        '¤¤¤ supprimer les images si déjà présentes dans le signet ¤¤¤'
        With Rg
        While .InlineShapes.Count > 0
        .InlineShapes(1).Delete
        Wend
        Set Img = .InlineShapes.AddPicture(rep & carte, False, True)
        End With
        End If
        '¤¤¤ on redimensionne la taille de l'image ¤¤¤'
        With Img
            .Height = CentimetersToPoints(h)
            .Width = CentimetersToPoints(l)
        End With
        Doc.Bookmarks.Add signet, Rg
        End With
    
    End Sub
    ci dessous mon programme principal :


    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Sub MEFWord()
        
        Dim Wd As Word.Application, Dc As Word.Document
        Dim Chemin As String, Fichier As String
        Dim FichierImage As String, Rg As Word.Range
        Dim Img As Word.InlineShape
        
        Application.ScreenUpdating = False
    
        Set Wd = CreateObject("Word.Application")
        
      '¤¤¤ Pour afficher Word
        Wd.Visible = True
        
      '¤¤¤ Ouverture de la maquette docx ¤¤¤'
        Set Dc = Wd.Documents.Open(Constantes.RepFinal & Constantes.maquette)
        
      '¤¤¤ Sauveagarde sous un nouveau nom docx ¤¤¤'
        ChangeFileOpenDirectory Constantes.RepFinal
        ActiveDocument.SaveAs2 FileName:=Constantes.RepFinal & Constantes.NomFicWord & "_" & Constantes.annee1 & Constantes.annee2 & ".docx", FileFormat:= _
        wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
           :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
           :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False, CompatibilityMode:=14
        
    
        
       '¤¤¤ La date de production du document ¤¤¤'
       
        With Dc
        Dc.Bookmarks(Constantes.sign_date).Range.Text = Format(Now, "dd.mm.yyyy")
        End With
        With Dc
        Dc.Bookmarks(Constantes.sign_date2).Range.Text = Format(Now, "dd/mm/yyyy")
        End With
        
       '¤¤¤ PARTIE 1 : INSERTION DES CARTES à l'emplacement des signets prédéfinis dans la maquette ¤¤¤'
        
     
        Fonctions.insertcarte Constantes.RepCartes, Constantes.ind1_carte_br_1, Constantes.sign_ind1_carte_br_1, 9.9, 13.75
     
        
        '¤¤¤ fermer le document Word avec sauvegarde ¤¤¤'
        Dc.Close True
        '¤¤¤ Fermer l'instance Word ¤¤¤'
        Wd.Quit
        
        '¤¤¤ Libérer la mémoire des objets ¤¤¤'
        Set Rg = Nothing: Set Img = Nothing
        Set Dc = Nothing: Set Wd = Nothing
        Application.ScreenUpdating = True
    
    End Sub

  8. #8
    Rédacteur/Modérateur

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

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

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

    Mon premier conseil est de ne pas partir d'un document, mais partir d'un modèle.
    Il suffit que les signets soient présent, mais pas les images ou autres objets graphiques, il suffit alors de remplir le document.

    Il est délicat de supprimer les images en étant certain que les signets soient toujours présents.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

Discussions similaires

  1. macro VBA Excel pour MAC
    Par ericdev67 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/08/2009, 08h44
  2. Php et macro vba word
    Par neuneu1 dans le forum Langage
    Réponses: 4
    Dernier message: 19/08/2009, 18h48
  3. Réponses: 1
    Dernier message: 27/11/2008, 16h47
  4. Réponses: 3
    Dernier message: 08/10/2008, 00h33
  5. Réponses: 0
    Dernier message: 06/08/2007, 12h46

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