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 :

Exporter données d'Excel vers Word 2003 [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Points : 66
    Points
    66
    Par défaut Exporter données d'Excel vers Word 2003
    Bonjour,

    Je dois exporter des données d'un fichier Excel (existant) vers un autre fichier Word (existant également) en gardant la mise en page. Une cellule doit être copiée sur une seule page. Ainsi, si j'exporte 10 lignes du fichier Excel, j'aurai 10 pages dans le fichier Word.
    Après des recherches, j'ai opté pour la méthode des signets.

    Mon fichier Woord contient 11 champs et j'ai placé les signets devant chaque ligne ou je veux écrire les données contenues dans le fichier Excel.

    Seulement, je ne sais le faire que pour une seule ligne du fichier Excel et pas pour les 3015 autres lignes en gardant le même mise en forme.

    Ce que je voudrais donc faire:
    1. Quand j'ouvre le fichier Word, copier tous les éléments présents (mise en forme, taille de police, etc.)

    2.Créer autant de pages dans le fichier Word que de cellules dans le fichier Excel en conservant la mise en page, les éléments, les signets de la première page (qui est mon modèle)

    3. Commencer l'exportation en changeant de page après chaque extraction

    Je ne sais pas faire tout cela et je suis coincé.

    Je vous présente mon code:

    Dans un module, j'ai crée:

    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
     
    Public Function Selection_Fichier(extension As String) As String
        Dim x As Long
     
        With Application.FileDialog(msoFileDialogFilePicker)
            'Autorise la multi-sélection
            .AllowMultiSelect = False
     
            'Définit un nom de fichier par défaut
            '.InitialFileName = "Nom document.doc"
     
            'Efface les filtres existants.
            .Filters.Clear
            'Définit une liste de filtres pour le champ "Type de fichiers".
            If extension = "xls" Then
            'Définit un titre pour la boîte de dialogue
            .Title = "Sélection du fichier Excel"
            .Filters.Add "Fichiers Microsoft Office Excel", "*.xls; *.xlsx; *.xlsm"
            Else
                If extension = "doc" Then
                'Définit un titre pour la boîte de dialogue
                .Title = "Sélection du fichier Word"
                .Filters.Add "Fichiers Microsoft Office Word", "*.doc; *.docx; *.docm", 1
                End If
            End If
     
            'Indique le type d'affichage dans la boîte de dialogue (exemple visualisation des propriétés)
            .InitialView = msoFileDialogViewProperties
            'Affiche la boîte de dialogue
            .Show
     
            'Boucle sur les fichiers sélectionnés
            For x = 1 To .SelectedItems.Count
                Selection_Fichier = .SelectedItems(x)
            Next x
     
        End With
     
    End Function
    Ensuite, j'ai le code suivant que j'exécute:

    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
     
    Public Sub ImporterVersWord()
        Dim WordApp As Word.Application
        Dim WordDoc As Word.Document
        Dim ExcelApp As Excel.Application
        Dim ExcelDoc As Excel.Workbook
        Dim fichierexcel As String
        Dim fichierword As String
        Dim lignes As Long
     
        fichierexcel = Selection_Fichier("xls")
        fichierword = Selection_Fichier("doc")
     
        Set WordApp = CreateObject("word.application")    'ouvre une session Word
        Set WordDoc = WordApp.Documents.Open(fichierword)    'ouvre le document Word
     
        Set ExcelApp = CreateObject("excel.application")    'ouvre une session Word
        Set ExcelDoc = ExcelApp.Workbooks.Open(fichierexcel)    'ouvre le document Word
     
        WordApp.Visible = False
        ExcelApp.Visible = False
     
        For i = 2 To 2 'lignes
            For j = 1 To 11
                'les signets du document Word sont nommés Signet1 , Signet2 , Signet3
                WordDoc.Bookmarks("Signet" & j).Range.Text = ExcelApp.Workbooks(1).Sheets(1).Cells(i, j)
            Next j
        Next i
     
        'WordApp.Visible = True    'affiche le document Word
        'WordDoc.PrintOut 'Pour imprimer le doc obtenu
     
        'WordDoc.Close True 'ferme le document word en sauvegardant les données
        'WordApp.Quit 'ferme la session Word
     
        WordApp.Visible = True
        MsgBox ExcelApp.Workbooks(1).Sheets(1).Range("A1").SpecialCells(xlCellTypeLastCell).Row
     
     
        WordDoc.Close
        ExcelDoc.Close
        Set WordApp = Nothing
        Set ExcelApp = Nothing
     
    End Sub
    J'espère avoir été assez précis.

    Merci d'avance pour votre aide
    flet le kid

  2. #2
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,
    ce système ne fonctionne pas ainsi pour plus qu'une page car le signet ne va pas se surcharger mais cumuler les différentes valeurs.

    Regarde la semaine passée, je pense avoir répondu à un problème de ce type en utilisant des champs au lieu de signet.

    NB : es-tu certain de vouloir faire copier coller de 3015 pages. ?

    Si c'est pour imprimer ou sauver, utilise plutot un modèle .dot que tu ouvres chaque fois à une contenu vierge et que tu fermes chaque fois après avoir éventuellement sauvé sous 1 nom individuel.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Points : 66
    Points
    66
    Par défaut
    Merci pour ta réponse. J'ai réfléchi et il n'est pas intéressant de créer les 3015 lignes avant de remplir.
    Si je me base sur ta proposition d'utiliser un modèle .dot et d'enregistrer à chaque fois, j'obtiendrai 3015 fichier word. Est il possible de les combiner, regrouper en un seul fichier Word par la suite? Si oui, comment? Car je n'ai aucune idée sur comment faire tout cela.

    Néamoins, je continue les recherche avec la faq word, excel et je cjercje des topics similaires notamment les semaines passées ou les topics ou tu es intervenus.

    Merci
    flet le kid

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Salut,

    réfléchis quand même bien à la nécessité car :
    * 1 fichier word de 3015 pages...... Bof voir BOUM
    * 3015 fichiers word, oui seulement si c'est nécessaire, par exemple pour envoyer par email.

    N'oublie pas qu'il existe le publipostage, qui ferait cela pour toi, depuis word, sans devoir réinventer la roue.

    Commence par regarder le publipostage et je pense que cela te conviendra.
    Et vois si tu peux découper en groupes pour éviter un monstre de 3015 pages.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Points : 66
    Points
    66
    Par défaut
    Tu es la deuxième personne à me parler de publipostage. Je ne sais pas ce que c'est mais je regarde dans google pour voir si cette solution peut m'aider.
    Merci
    flet le kid

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Points : 66
    Points
    66
    Par défaut
    Oui au publipostage! Je cherchais en effet à réinventer la roue. Heureusement que tu étais là. J'ai parfaitement réussi avec le publipostage et m'invite ainsi de nombreuses lignes de codes.

    Bonne soirée à vous
    flet le kid

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

Discussions similaires

  1. Transfert de données de Excel vers Word
    Par skanderhassayoune dans le forum VBA Word
    Réponses: 1
    Dernier message: 23/02/2011, 22h06
  2. [XL-2000] Envoi données d'Excel vers Word
    Par laurentdusseau dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/10/2010, 14h32
  3. envoie données d'excel vers word
    Par Linono dans le forum Excel
    Réponses: 1
    Dernier message: 07/09/2009, 22h49
  4. Réponses: 2
    Dernier message: 30/03/2009, 12h44
  5. [VBA-A]Copier des données d'Excel vers Word
    Par soad029 dans le forum VBA Word
    Réponses: 15
    Dernier message: 16/03/2006, 11h56

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