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 :

Export Word ne marche plus suite à obtention Office 2016 [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Gestionnaire de bases de données
    Inscrit en
    Février 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de bases de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2018
    Messages : 6
    Par défaut Export Word ne marche plus suite à obtention Office 2016
    Bonjour à toutes et à tous,

    Je vous explique rapidement mon problème (qui vous paraîtra peut-être évident...mais je galère ! ^^).
    J'ai une macro (que je vous montre en fin de post) qui a pour but de me créer un document Word à partir d'un fichier Excel (en gros, 1 feuille Excel = 1 page Word).
    Elle marchait très bien jusqu'à ce que l'informatique me change mon PC (et donc me passe sous Office 2016 - j'étais sous 2010 avant il me semble).
    En gros, j'obtiens le message d'erreur Excel "Microsoft Excel attend la fin de l'exécution d'une action OLE d'une autre application", je clique sur "OK" et le message réapparaît indéfiniment.
    Je résussis à aller dans le débogeur difficlement, qui me surligne la ligne WrdDoc.Close ou WrdDoc.Quit. Et lorsque je vais dans mon gestionnaire de tâches (Ctrl + Alt + Suppr), je vois bien qu'un enregistrement Word est en cours d'exécution mais il n'arrive pas à le finaliser.
    A noter que j'ai bien activé la référence Microsft Word 16.0 Object Library.
    Est-ce que ma déclaration d'objets Word est correcte pour une version 2016 ? Une autre piste ? C'est peut-être tout simple, hein...

    Un immense merci pour votre aide.

    Voici mon code (la partie qui m'intéresse):

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    Sub ExportWord()
     
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim l As Integer
    Dim ws As Worksheet
     
    Dim wrdApp As Word.Application
    Dim wrdDoc As Word.Document
    Dim sChemin As String
    Dim sCheminFinal As String
    sChemin = ThisWorkbook.Path & "\"
    sCheminFinal = ThisWorkbook.Path & "\Fiches Générées\"
    Dim sNomRapport As String
    Dim StartTime As Double
    Dim SecondsElapsed As Double
     
    StartTime = Timer   'petit bonus : lance un chrono
     
    Application.ScreenUpdating = False
     
    On Error Resume Next
     
    'Export de chaque fiche
    For i = 10 To ThisWorkbook.Worksheets.Count
    ThisWorkbook.Sheets(i).Select
    If ThisWorkbook.Sheets(i).Range("A4").Value <> "                " Then
    sNomRapport = ThisWorkbook.Sheets(i).Range("A1") & "_" & ThisWorkbook.Sheets(i).Name
    ThisWorkbook.Sheets(i).Range("Intro_" & i).Copy     'copie le tableau d'intro de chaque onglet
     
    Set wrdApp = CreateObject("Word.Application")     'ouvre une session Word
    wrdApp.Visible = False
    Set wrdDoc = wrdApp.Documents.Add    'crée un nouveau document
    wrdApp.Selection.PasteAndFormat (wdPasteDefault)
     
    ThisWorkbook.Sheets(i).Range("Recap_" & i).Copy     'copie le tableau de chaque onglet
    wrdDoc.Paragraphs.Add   'ajoute un paragraphe de type ligne blanche
    wrdDoc.Paragraphs(wrdDoc.Paragraphs.Count).Range.PasteAndFormat (wdPasteDefault)  'colle après le paragraphe
     
    ThisWorkbook.Sheets(i).Range("Graphs_" & i).CopyPicture     'copie en image les graphiques de chaque onglet
    wrdDoc.Paragraphs.Add   'ajoute un paragraphe de type ligne blanche
    wrdDoc.Paragraphs(wrdDoc.Paragraphs.Count).Range.PasteAndFormat (wdChartPicture)    'colle en image les graphiques après le paragraphe
     
    ThisWorkbook.Sheets(i).Range("NC_" & i).Copy    'copie le tableau des NC
    wrdDoc.Paragraphs.Add   'on ajoute un paragraphe
    wrdDoc.Paragraphs(wrdDoc.Paragraphs.Count).Range.PasteAndFormat (wdPasteDefault)  'on le colle après le paragraphe
     
    ThisWorkbook.Sheets(i).Range("Conclusion_" & i).Copy    'copie l'encadré des commentaires
    wrdDoc.Paragraphs.Add   'ajoute un paragraphe (une ligne blanche)
    wrdDoc.Paragraphs(wrdDoc.Paragraphs.Count).Range.PasteAndFormat (wdPasteDefault)  'colle après le paragraphe
     
    For j = 1 To wrdDoc.Tables.Count
        wrdDoc.Tables(j).AutoFitBehavior wdAutoFitWindow    'ajustement à la page de chaque tableau
    Next j
     
    For k = 1 To wrdDoc.Paragraphs.Count
        wrdDoc.Paragraphs(k).SpaceAfter = 0     'enlève les espaces après les paragraphes (c'est + esthétique)
    Next k
     
    For l = 1 To wrdDoc.Tables.Count
        wrdDoc.Tables(l).Rows.Height = 0.3  'mise en forme
    Next l
     
    wrdDoc.InlineShapes.AddPicture Filename:=ThisWorkbook.Path & "\Fiches Générées\_Logo.png"
     
    With wrdDoc.InlineShapes(1)
            .ConvertToShape
    End With
     
    With wrdDoc.Shapes(1)
          .LockAspectRatio = True
          .WrapFormat.Type = wdWrapBehind
          .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
          .RelativeVerticalPosition = wdRelativeVerticalPositionPage
          .Top = wdShapeTop
          .Left = wdShapeRight
    End With
     
    Application.CutCopyMode = False
    wrdDoc.SaveAs sCheminFinal & sNomRapport    'enregistre la fiche sous son bon nom
     
    wrdDoc.Save
    wrdDoc.Close
    wrdApp.Quit
     
    Set wrdDoc = Nothing
    Set wrdApp = Nothing
     
    End If
    Next i

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Dans le VBE, va dans le menu Outils > Références.
    Normalement, tu devrais avoir une des référence cochée (quelque chose comme "Microsoft Word XX.0 Object Library") signalé "Manquant".

    Tu la décoches et tu vas cocher dans la liste son équivalent (avec un numéro différent).

  3. #3
    Membre du Club
    Homme Profil pro
    Gestionnaire de bases de données
    Inscrit en
    Février 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de bases de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2018
    Messages : 6
    Par défaut
    Bonjour Menhir,

    Merci pour ta réponse (rapide, qui plus est). Je ne vois pas de référence (MANQUANTE), et ma référence Microsoft Word 16.0 Object Library est bien cochée.
    Si ça peut t'aiguiller, les 5 cochées sont :
    - Visual Basic For Applications
    - Microsoft Excel 16.0 Object Library
    - OLE Automation
    - Microsoft Office 16.0 Object Library
    - Microsoft Word 16.0 Object Library
    Mais je ne vois rien en manquant (coché ou décoché)...

  4. #4
    Membre du Club
    Homme Profil pro
    Gestionnaire de bases de données
    Inscrit en
    Février 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de bases de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2018
    Messages : 6
    Par défaut
    Un immense pardon...pour la perte de temps.

    J'avais déplacé mon fichier Excel et donc le chemin n'était plus bon...le ThisWorkbookPath ne contenait donc plus le dossier "Fichiers générées".
    Je suis vraiment désolé (et un boulet, un !)
    Merci beaucoup en tout cas,

    Je passe le sujet en résolu.

    Alex

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Par défaut Réference Manquante vers MS Word 16.0 Object Library
    Les macros Excel n’aiment pas les changements de version Excel. Ouvrir une feuille dans une version plus récente d’Excel peut poser des problèmes si l’on revient à la version précédente. Notamment avec les références vers les librairies VB qui ne se mettent pas à jour. Ces références sont définies dans l’onglet Outils > Références de la fenêtre VB (ie l’environnement de programmation VB). En revenant de Office 365 à Office 10, je me suis retrouvé avec une référence marquée Manquante vers MS Word 16.0 Object Library. Cela causait des problèmes à l’ouverture d’Excel, notamment des messages « Erreur de chargement de la DLL » et l’impossibilité d’afficher certains modules.

    Dans un monde parfait, il aurait suffit de décocher cette référence manquante et de cocher celle vers MS Word 14.0 OL qui se trouve plus bas dans la liste des références disponibles. Mais cela ne marchait pas et donnait un message d’erreur. Or la fenêtre des Références indique heureusement en bas le chemin de la librairie, ce qui m’a permis de vérifier dans le répertoire C:\Program Files\Microsoft Office\Office14 (qui contient Excel10), que le fichier de librairies recherché était MSWORD.OLB.

    J’ai alors copié cette librairie MSWORD.OLB depuis C:\Program Files\Microsoft Office\Office14 vers C:\Program Files (x86)\Microsoft Office\root\Office16, en créant ce répertoire qui était indiqué en bas de la fenêtre des Références pour MS Word 16.0 OL. Cela a résolu les problèmes automatiquement lorsque j’ai fermé puis rouvert Excel: Ô miracle, la référence vers Word 14 OL s’était toute seule substituée à celle vers Word 16 OL sans avoir à rien décocher puis cocher, et tout remarchait.

    Puisse cela vous aider.

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

Discussions similaires

  1. ispConfig suite maj création bdd ne marche plus
    Par cuisto44000 dans le forum Debian
    Réponses: 1
    Dernier message: 22/04/2015, 11h30
  2. Export Excel et PDF ne marche plus avec le msi
    Par peemoney dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 18/12/2012, 10h44
  3. Réponses: 3
    Dernier message: 17/04/2012, 14h59
  4. Réponses: 1
    Dernier message: 25/08/2011, 19h33
  5. Ordinateur ne marche plus suite installation webcam
    Par monseudo dans le forum Windows Vista
    Réponses: 4
    Dernier message: 27/05/2008, 09h53

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