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 :

Projet VBA se génèrent en doublon


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2022
    Messages : 6
    Par défaut Projet VBA se génèrent en doublon
    Bonjour,

    Je crée un code VBA permettant de copier un morceau de tableau sur Excel et de le coller sur un document Word, sur un signet bien précis.

    Mon code fonctionne bien malgré qu'il soit surement un peu maladroit.

    Mais lorsque je le lance, il ouvre un fichier Excel (autre que celui de ma macro), le referme immédiatement puis apparaît dans l'interface VBA comme une copie de mon fichier principal au nom de : "Classeur 1" (cf pièce-jointe).

    En isolant mon code, je remarque que ça doit provenir d'ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveWorkbook.Worksheets("Compte de résultat").Range("CptTabl").Copy
    WordDoc.ActiveWindow.Document.Bookmarks("CptTabl").Range.PasteSpecial DataType:=wdPasteBitmap
    Le code m'ouvre autant de nouveaux classeurs que de lignes de code comme au-dessus...


    Je n'arrive pas à comprendre pourquoi il m'ouvre plusieurs fichiers... Pouvez-vous m'aider ??






    Si jamais voici le code en entier :


    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
    54
    55
    56
    57
    Sub Graph()
     
    'nécessite d'activer la référence Microsoft Word xx.x Object Library
     Dim WordApp As Object
     Dim WordDoc As Object
     
     'Dim MF As Word.Field
     Dim DocName As String
     Dim repertoire As String
     Dim MFName As String
     Dim MFIndex As String
     Dim i As Integer
     
     
    'Boite de dialogue pour connaitre l'année choisie
    annee = InputBox("Pour quelle année voulez-vous saisir les chiffres ?", "Année", Year(Now) - 1) 'La variable reçoit la valeur entrée dans l'InputBox
     
     
     
    Set WordApp = CreateObject("word.application") 'ouvre session word
    WordApp.Visible = True 'word masqué pendant l'operation
    Set WordDoc = WordApp.Documents.Open("O:\Test.docm") 'ouvre document Word
     
     
    WordDoc.Bookmarks("annee").Range.Text = annee
     
    Workbooks("Rapport d'activité 2021.xlsm").Worksheets("Accueil").Activate
     
            'Copier coller un graphique
            ActiveWorkbook.Worksheets("Accueil").ChartObjects("EvolCA").Copy
            WordDoc.ActiveWindow.Document.Bookmarks("EvolCA").Range.PasteSpecial (wdPasteBitmap)
     
            Application.CutCopyMode = False
     
    ActiveWorkbook.Worksheets("Compte de résultat").Activate
     
     
        'Copier coller les tableaux
            'Tableau Compte de résultat : CptTabl et DetTabl
     
            ActiveWorkbook.Worksheets("Compte de résultat").Range("CptTabl").Copy
            WordDoc.ActiveWindow.Document.Bookmarks("CptTabl").Range.PasteSpecial DataType:=wdPasteBitmap
     
            Application.CutCopyMode = False
     
     
    WordApp.Visible = True 'affiche le document Word
    repertoire = ThisWorkbook.Path
    repertoire = repertoire & "\"
    DocName = "Rapport activité " & annee
    DocName = DocName & ".docx"
    WordDoc.SaveAs Filename:=repertoire & DocName 'ferme le document word en sauvegardant les données
    'WordApp.Quit 'ferme la session Word
     
     
     
    End Sub

    Merci d'avance pour votre aide !
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    Hello,
    sous quelle version d'Excel travailles-tu ?
    Moi sous Excel 2016 avec ton code, j'ai à peu près le même comportement, sauf que je n'ai pas le temps de voir ce qui s'ouvre et ce qui s'ouvre, se referme aussitôt et ne réapparaît plus.
    Cela se produit sur l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WordDoc.Bookmarks("EvolCA").Range.PasteSpecial DataType:=wdPasteBitmap
    et si je n'ai pas fait de point d'arrêt après cette instruction, en mode pas à pas, le programme se déroule jusqu'à la fin sans s'arrêter.
    D'après ce que j'ai pu constaté c'est le wdPasteBitmap qui produit l'ouverture d'un nouveau document.
    Alors si ton but est de copier un graphique et un tableau sous forme graphique dans Word (le tableau pas en tableau) tu peux utiliser un CopyPicture à la place du Copy et un simple Paste pour coller dans Word.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ActiveWorkbook.Worksheets("Accueil").ChartObjects("EvolCA").CopyPicture
    WordDoc.Bookmarks("EvolCA").Range.Paste 
    Application.CutCopyMode = False
        'Copier coller les tableaux
         'Tableau Compte de résultat : CptTabl et DetTabl 
    ActiveWorkbook.Worksheets("Compte de résultat").Range("CptTabl").CopyPicture
    WordDoc.Bookmarks("CptTabl").Range.Paste
    '
    Avec ce code je n'ai pas d'ouverture intempestive de document Office pendant le coller et les fichiers graphiques présents dans le fichier document Word créé sont des emf donc optimisés pour du graphique.

    Ami calmant, J.P

Discussions similaires

  1. [Excel]Projet VBA protégé, comment déprotéger ?
    Par tonf dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/06/2006, 19h05
  2. [VBA-E]Probleme de doublons
    Par lolo_bob2 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/04/2006, 17h59
  3. "Nettoyer" Un PROJET VBA ??
    Par samlepiratepaddy dans le forum Access
    Réponses: 4
    Dernier message: 30/10/2005, 17h58
  4. Migrer un projet VBA Excel vers VB
    Par Phoon0 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/10/2005, 11h09
  5. [VBA-E] Reconnaissance de doublons
    Par eilonwy dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/02/2004, 23h08

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