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 :

Génération de multiples documents word à partir d'un fichier Excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 71
    Points : 37
    Points
    37
    Par défaut Génération de multiples documents word à partir d'un fichier Excel
    Bonjour à tous,

    J'ai besoin d'un petit coup de pouce car je n'arrive pas à créer plusieurs documents Word à partir d'une source de données Excel.
    Ma macro a pour but de chercher si la valeur ALLEMAGNE ou AUTRICHE se trouve dans la colonne A de mon fichier Excel.
    Si c'est le cas alors il crée des tcd, crée des documents word, effectue un publipostage, enregistre les documents et les ferme.
    La 1ere condition fonctionne mais c'est quand je passe à la 2e que ma macro plante et me met un message d'erreur d’exécution 462: le serveur distant n'existe pas ou n'est pas disponible:

    Nom : Capture01.jpg
Affichages : 409
Taille : 130,3 Ko

    Je ne sais pas pourquoi il me met ce message car le chemin existe et il n'y a pas de fichier portant le même nom.
    J'aimerai répliquer cette macro pour créer autant de documents word que j'ai de valeurs (en dur) dans ma colonne A

    Le code est ci-dessous:

    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
    Sub atest()
    Workbooks.Open ThisWorkbook.Path & "\MEMO.xls"
    Windows("MEMO.xls").Activate
     
    Dim rng As Range
    Dim rngFound_ALLEMAGNE As Range
    Dim rngFound_AUTRICHE As Range
     
    Set rng = Columns("A")
    Set rngFound_ALLEMAGNE = rng.Find("ALLEMAGNE")
    Set rngFound_AUTRICHE = rng.Find("AUTRICHE")
     
    If rngFound_ALLEMAGNE Is Nothing Then
    Else:
    Application.Run "KOPER.xlsm!tcd_Packing_list_ALLEMAGNE"
    Application.Run "KOPER.xlsm!tcd_Packing_list_ALLEMAGNE_BIS"
    Application.Run "KOPER.xlsm!tcd_Courrier_Oyak_ALLEMAGNE"
    Application.Run "KOPER.xlsm!tcd_atr_ALLEMAGNE"
     
        'Workbooks("MEMO.xls").Save
        ActiveWindow.WindowState = xlMinimized
     
    ' PUBLIPOSTAGE_DOCUMENTS KOPER
     
        Dim WordApp As Object
        Dim WordDoc As Object
        Set WordApp = CreateObject("Word.Application")     '-- ouvre une session Word
        WordApp.Visible = True
     
        Set WordDoc = WordApp.Documents.Add    '-- crée un nouveau document
        WordApp.Run MacroName:="Publipostage_packing_list_allemagne"
        ActiveDocument.SaveAs2 "C:\OYAK\KOPER\ALMANYA FR.docx"
        ActiveDocument.Close
        WordDoc.Close savechanges:=False
        Set WordDoc = Nothing
     
        Set WordDoc = WordApp.Documents.Add
        WordApp.Run MacroName:="Publipostage_packing_list_ALLEMAGNE_BIS"
        ActiveDocument.SaveAs2 "C:\OYAK\KOPER\ALMANYA.docx"
        ActiveDocument.Close
        WordDoc.Close savechanges:=False
        Set WordDoc = Nothing
     
        Set WordDoc = WordApp.Documents.Add
        WordApp.Run MacroName:="Publipostage_courrier_oyak_ALLEMAGNE_v2"
        ActiveDocument.SaveAs2 "C:\OYAK\KOPER\ALMANYA2.docx"
        ActiveDocument.Close
        WordDoc.Close savechanges:=False
        Set WordDoc = Nothing
     
        Set WordDoc = WordApp.Documents.Add
        WordApp.Run MacroName:="publipostage_atr_ALLEMAGNE"
        ActiveDocument.SaveAs2 "C:\OYAK\KOPER\ATR ALLEMAGNE.docx"
        ActiveDocument.Close
        WordDoc.Close savechanges:=False
        Set WordDoc = Nothing
    End If
    Set WordDoc = Nothing
    WordApp.Quit savechanges:=wdDoNotSaveChanges
    Set WordApp = Nothing
     
    Windows("MEMO.xls").Activate
     
    If rngFound_AUTRICHE Is Nothing Then
    Else:
    Application.Run "KOPER.xlsm!tcd_Packing_list_AUTRICHE_BIS"
     
      'Workbooks("MEMO.xls").Close SaveChanges:=True
     
    ' PUBLIPOSTAGE_DOCUMENTS KOPER
        Set WordApp = CreateObject("Word.Application")     '-- ouvre une session Word
        WordApp.Visible = True
        Set WordDoc = WordApp.Documents.Add    '-- crée un nouveau document
        WordApp.Run MacroName:="Publipostage_packing_list_AUTRICHE_BIS"
        ActiveDocument.SaveAs2 "C:\OYAK\KOPER\AVUSTURYA.docx"
        ActiveDocument.Close
        WordDoc.Close savechanges:=False
     
    End If
    Set WordDoc = Nothing
    WordApp.Quit savechanges:=wdDoNotSaveChanges
     
    Set rng = Nothing
    Set rngFound_ALLEMAGNE = Nothing
    Set rngFound_AUTRICHE = Nothing
    Set WordApp = Nothing
     
     
    End Sub
    Merci d'avance de votre aide !

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut


    Bonjour, bonjour !
    Solution simple : dans le code, positionner le curseur texte sur le premier mot de la ligne puis appuyer sur la touche

    Conclusion ?


    __________________________________________________________________________________________
    Copier / Coller n'est pas programmer !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 71
    Points : 37
    Points
    37
    Par défaut
    Effectivement il manquait des propriétés sur mon expression SaveAs2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    WordApp.ActiveDocument.SaveAs2 Filename:="C:\OYAK\KOPER\ATR AUTRICHE.docx", FileFormat:= _
            wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
            :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
            :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
            SaveAsAOCELetter:=False, CompatibilityMode:=15
    est plus correct
    Merci pour votre aide

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

Discussions similaires

  1. Génération de document word à partir d'un template
    Par bedo115 dans le forum Documents
    Réponses: 0
    Dernier message: 28/05/2015, 09h50
  2. [WD-2007] Réalisation d'un document word à partir d'une base Excel
    Par FanTasTik dans le forum VBA Word
    Réponses: 9
    Dernier message: 21/08/2012, 15h14
  3. Réponses: 0
    Dernier message: 26/06/2008, 11h44
  4. Renseigner un document WORD à partir d'ACCES
    Par kyrine dans le forum Word
    Réponses: 2
    Dernier message: 14/08/2007, 15h20
  5. fenetre enregistrer sous document word à partir d'excel
    Par Australia dans le forum VBA Word
    Réponses: 8
    Dernier message: 24/10/2006, 17h53

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