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 :

Excel commande word


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Bonjour,

    Voici que je souhaite obtenir :

    J'ai des fiches avec des photos + descriptions de petites voitures. Ces fiches sont en format Word.
    J'ai fait une boucle, qui répertorie toutes les fiches, les ouvre, copie/colle le document word et extrait le contenu pour le mettre sous format tableau : colonne/ligne.
    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    Sub MAJ()
        Dim Chemin As String
        Dim Fichier As String
        Dim WordApp As Word.Application
        Dim WordDoc As Word.Document
     
        Dim DerniereLignefichiers As Integer
        Dim DerniereLignefiches As Integer
     
        Dim i As Integer
        Dim j As Integer
        Dim k As Integer
     
     
        'efface données Liste
        DerniereLignefiches = Sheets("Liste").Range("A65536").End(xlUp).Row
        Range(Cells(2, 1), Cells(DerniereLignefiches, 68)).Select
        Selection.ClearContents
        Range("A2").Select
     
         'efface données Fichiers
         Sheets("Fichiers").Select
        Cells.Select
        Selection.ClearContents
        Range("A1").Select
     
        'Efface données Temp
         Sheets("Temp").Select
        Cells.Select
        Selection.Delete Shift:=xlUp
        Range("A1").Select
     
     
        'lecture des fichiers
     
        'Définit le répertoire contenant les fichiers
        Chemin = ThisWorkbook.Path & "\Fiches"
     
        Fichier = Dir(Chemin & "\*.doc")
     
     
     
        Do While Len(Fichier) > 0
           i = i + 1
     
            Sheets("Fichiers").Cells(i, 1) = Fichier
             Fichier = Dir()
        Loop
     
     
        ' Lecture / Ecriture des fiches
     
     
        DerniereLignefichiers = Sheets("Fichiers").Range("A65536").End(xlUp).Row
     
        'Boucle sur fichiers
        For j = 1 To DerniereLignefichiers
     
     
     
        Fichier = ThisWorkbook.Path & "\Fiches\" & Sheets("Fichiers").Cells(j, 1)
     
        'creation session Word
        Set WordApp = New Word.Application
        'pour que word reste masqué pendant l'opération
        WordApp.Visible = False
        'ouverture du fichier Word
        Set WordDoc = WordApp.Documents.Open(Fichier)
     
        'copie le premier tableau Word
        WordDoc.Range.Copy
     
        'Enleve message alerte
        Application.DisplayAlerts = False
     
        'colle
        Sheets("Temp").Paste
            Stop
        'ferme le document Word sans sauvegarde
        WordDoc.Close False
        'ferme l'application Word
        WordApp.Quit
     
        'ajout dans "fiches"
        DerniereLignefiches = Sheets("Liste").Range("A65536").End(xlUp).Row
     
        k = j 'DerniereLignefiches + 1 'incrémente
     
    ‘Différentes formules’ pour récupérer les cases de word’’’’’’’
     
      'Efface données Temp
         Sheets("Temp").Select
        Cells.Select
        Selection.Delete Shift:=xlUp
        Range("A1").Select
     
        Next
     
        MsgBox ("Fini")
    End Sub
    .

    J'aimerai qu'en même temps, c'est à dire lorsque le document word est ouvert, que le VBA l'enregistre au format PDF. J'ai trouvé sur la FAQ le code pour Word, mais il ne fonctionne pas sous Excel. et dans la FAQ Excel, lorsque je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     ActiveSheet.ExportAsFixedFormat _
            Type:=xlTypePDF, _
    , il me met, "membre de méthode ou de données introuvable".

    De même, j'aimerai qu'il enregistre la fiche au format "html", car ça me permet de retrouver les photos de la fiche....(méthode plus rapide que celle que j'avais trouvé dans mon dernier post...)

    Ensuite le code, fermerait le PDF, le html.

    Pensez-vous qu'il soit donc possible de "commander" Word lorsqu'on est sous Excel, et si oui, comment dois-je procéder ?

    Une idée ?

    En fait, je pourrais reformuler ma question :

    lorsque je suis dans une macro Excel, j'ai la possibilité d'ouvrir Word, mais puis-je faire tourner une macro Word ?

    Merci,
    A+

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Teste ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
    'nécessite d'activer la référence "Microsoft Word xx.x Object Library"
    Dim wApp As Word.Application, wDoc As Word.Document
     
    Set wApp = New Word.Application
    wApp.Visible = True
    Set wDoc = wApp.Documents.Open("Chemin_Complet\Nom_Fichier_Word.doc")
     
    wApp.Run "NomMacroWord"
    End Sub

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci Fring ,

    Mais si je comprends bien, cela signifie que ma macro soit présente dans ma fiche...et là, j'en ai environ 500...donc il faudrait que je copie/colle la macro dans chacune des fiches....
    Il n'y aurait pas un autre "moyen" ?

    J'en vois bien 1 : ouvrir un fichier Word (admettons "Fichier avec macro"), dans lequel je mets la macro, et ensuite,je fais une boucle : j'ouvre ma fiche, je fais tourner la macro sur la fiche, je la ferme, j'ouvre la suivante, même opération et ainsi de suite....mais est-ce possible ?

    Merci,
    A+

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par ericdev67 Voir le message
    Mais si je comprends bien, cela signifie que ma macro soit présente dans ma fiche...
    Non mais je répondais à ta question...
    Citation Envoyé par ericdev67 Voir le message
    puis-je faire tourner une macro Word ?
    Tu peux piloter Word depuis Excel, tu as quelques exemples ICI

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci Fring,

    Comme tu l'as peut-être constaté dans mon code, j'avais déjà utilisé l'excellent tuto du non moins excellent Silkyroad (ces tutos m'ont souvent beaucoup aidé...) : connexion à Word, ouverture, et récupération des données. J'ai pris l'option copié/collé.
    En fait, là où je coince, c'est que : le document Word est ouvert, il faudrait que je puisse faire tourner une macro Word (enregistrement du .doc en PDF, et enregistrement du .doc en .HTML) , tu m'as déjà montré comment faire tourner la macro à partir d'excel, mais comme je le disais, dans mon Doc ouvert, il n'y a pas initialement de macro...il faudrait donc (peut-être que j'ai un .doc ouvert avec les macros et qui fasse tourner les macros sur le .doc ouvert....

    Merci,
    A+

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Pour imprimer un doc Word en PDF, tu peux t'inspirer là --> Impression Document Word en PDF

    En reprenant mon petit test ci-dessus, pour enregistrer le doc au format HTML ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
    'nécessite d'activer la référence "Microsoft Word xx.x Object Library"
    Dim wApp As Word.Application, wDoc As Word.Document
     
    Set wApp = New Word.Application
    wApp.Visible = True
    Set wDoc = wApp.Documents.Open("Chemin_Complet\Nom_Fichier_Word.doc")
     
    wDoc.SaveAs Filename:="Chemin_Complet\Nom_Fichier.html", FileFormat:=wdFormatHTML
    End Sub

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    merci fring,

    j'ai essayé , mais ça ne fonctionne pas....malgré que j'ai les références word et pdfcreator...ci joint le bout de code
    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
    ficheHT = ThisWorkbook.Path & "\Fiches format HTML\"
        fichePD = ThisWorkbook.Path & "\Fiches format PDF\"
     
        'creation session Word
        Set WordApp = New Word.Application
        'pour que word reste masqué pendant l'opération
        'WordApp.Visible = False
        WordApp.Visible = True
        'ouverture du fichier Word
        Set WordDoc = WordApp.Documents.Open(Fichier)
     
        'copie le premier tableau Word
        WordDoc.Range.Copy
     
        'Enleve message alerte
        Application.DisplayAlerts = False
     
        'colle
        Sheets("Temp").Paste
     
        WordDoc.SaveAs Filename:=ficheHT & nomfiche & ".html", FileFormat:=wdFormatHTML
     
       Stop
     
        WordDoc.ExportAsFixedFormat OutputFileName:=fichePD & nomfiche & ".pdf", ExportFormat:=wdExportFormatPDF
    il fonctionne bien jusqu' au "stop" (pour voir si tout est nickel avant..).et ensuite, il s'arrête en disant "Propriété ou méthode non gérée par cet objet"....
    comprends pas...
    si tu pouvais me dire où ça coince...
    merci
    À+

    merci kiki29,
    je vais rester sous windows car j'ai déjà pu constater des pb de compatibilité avec Mac

    Merci pour le lien

    A+

    je préfère mettre une partie du code, avec les déclarations de variables et leurs valeurs, peut-être que c'est là où il y a un problème.....

    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
        Dim nomfiche As String
        Dim fiche As String
        Dim ficheHT As String
        Dim fichePD As String
     
     
        'défini les chemins
        Fichier = ThisWorkbook.Path & "\Fiches\" & Sheets("Fichiers").Cells(j, 1)
        Sheets("Fichiers").Select
        Range(Cells(j, 2), Cells(j, 2)).Select
        ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],FIND(""."",RC[-1])-1)"
        nomfiche = Sheets("Fichiers").Cells(j, 2)
        fiche = ThisWorkbook.Path & "\Fiches\" & Sheets("Fichiers").Cells(j, 2)
     
        ficheHT = ThisWorkbook.Path & "\Fiches format HTML\"
        fichePD = ThisWorkbook.Path & "\Fiches format PDF\"
     
        'creation session Word
        Set WordApp = New Word.Application
        'pour que word reste masqué pendant l'opération
        'WordApp.Visible = False
        WordApp.Visible = True
        'ouverture du fichier Word
        Set WordDoc = WordApp.Documents.Open(Fichier)
     
        'copie le premier tableau Word
        WordDoc.Range.Copy
     
        'Enleve message alerte
        Application.DisplayAlerts = False
     
        'colle
        Sheets("Temp").Paste
     
        WordDoc.SaveAs Filename:=ficheHT & nomfiche & ".html", FileFormat:=wdFormatHTML
     
       ' WordDoc.SaveAs Filename:=fichePD & nomfiche & ".html", FileFormat:=wdFormatHTML
     
       ' Set wdoc = wApp.Documents.Open("Chemin_Complet\Nom_Fichier_Word.doc")
     
       Stop
     
        WordDoc.ExportAsFixedFormat OutputFileName:=fichePD & nomfiche & ".pdf", ExportFormat:=wdExportFormatPDF
    Merci,
    A+

    J'ai retapé le code complètement (peut-être y avait-il une erreur dans le copier/collé)....je lance le code et il me dit

    "L'exportation a échoué car cette fonctionnalité n'est pas installée"

    alors que la référence "Microsoft Word 12.0 Object Library" est installée....

    Comprends pas ce qui se passe.......

    Merci pour votre aide

  8. #8
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    En manuel, dans Word, tu n'arrives pas enregistrer un document au format PDF non plus ?

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci Fring,

    En manuel, sous word ou excel, je ne peux pas enregistrer en PDF, il faut que je fasse "imprimer" et que je sélectionne l'imprimante virtuelle "PDFCreator".....

    Et en te répondant, je commence à comprendre ce qui a pu se passer : étant donné que ma version de Excel n'offre pas la possibilité "d'enregistrer sous... PDF" , ton code ne peut pas fonctionner....alors qu'avec HTML, ça fonctionne puisqu'il apparait dans "enregistrer sous....HTML"

    Donc, en fait, il faudrait passer par l'imprimante virtuelle....c'est à dire que l'"Export"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WordDoc.ExportAsFixedFormat OutputFileName:=fichePD & nomfiche & ".pdf", ExportFormat:=wdExportFormatPDF
    doit être remplacé par "PRINT"....


    Mais si c'est ça, j'aurai besoin que tu m'aides car hier j'ai fait F2 pour trouver des instructions concernant PDF, et je n'ai rien trouvé.....qui a fonctionné....

    Merci,

    A+

  10. #10
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, bis repetita placent ... Cette formulation est pour Excel PC 2007+.
    Utilise l'enregistreur de macros en sélectionnant l'imprimante PDFCreator et tu auras le code correspondant.

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci kiki29,

    J'avais déjà suivi ton conseil, (avec l'enregistreur de macro), je sais donc comment écrire mon imprimante virtuelle. Par contre c'est le code qui pose problème : la macro word ne peut pas être mise dans VBA excel, et donc, soit je crée et j'ouvre en permanence un fichier word avec la macro d'impression en PDF et je la fait tourner pour ma fiche, soit il a une autre solution (et c'est celle-là que je cherche.....)

    Merci,
    A+

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

Discussions similaires

  1. [WD-2003] Commander Excel depuis Word
    Par MarcoCham dans le forum VBA Word
    Réponses: 3
    Dernier message: 15/02/2011, 14h15
  2. Réponses: 1
    Dernier message: 07/01/2006, 23h33
  3. Réponses: 5
    Dernier message: 07/01/2006, 16h55
  4. Excel dans word
    Par belgiuman dans le forum VBA Word
    Réponses: 3
    Dernier message: 11/08/2005, 13h19
  5. [VBA Excel Word]Adapter un code Excel a Word
    Par Baxter67 dans le forum VBA Word
    Réponses: 4
    Dernier message: 08/08/2005, 23h43

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