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

VBA Word Discussion :

Récupération de cellules Excel dans une macro Word


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Récupération de cellules Excel dans une macro Word
    Bonjour à tous,

    J'ai un petit problème avec une macro Word.
    A partir d'un fichier word de Publipostage et du fichier Excel qui a permis de l'alimenter, je dois créer autant de fichiers qu'il y a de lignes dans le fichier Excel.
    Pour chaque ligne de mon fichier Excel, il y a 4 pages dans mon fichier Word.

    J'ai trouvé une macro qui faisait le découpage, mais je dois récupérer le nom, le prénom et le matricule de l'agent dans le fichier Excel pour le nommage des fichiers ainsi créé.

    J'ouvre mon fichier Excel, mais je ne sais pas comment activer le fichier Excel et aller récupérer les cellules qui m'intéressent dans le fichier Excel.

    Merci d'avance pour votre aide!


    Voici la macro :

    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
    101
    102
    Sub Decoupage()
     
    Dim NomDocDepart As String
    Dim i As Long, j As Long
    Dim NumeroDoc As String, PgDepart As Long
    Dim Dossier As String, DossierSauvegarde As String
    Dim NbPages As Long, NbCoupes As Integer, PagesRestantes As Integer
    ' définition du fichier et du répertoire du fichier Excel à lire
    Dim Fichier As String, Repertoire As String
    Dim AppXl As Excel.Application
    Dim Wb As Excel.Workbook
    ' variables pour nom de fichiers
    Dim Matricule As String, Nomusuel As String, Prenom As String
     
    Const DecouperEn As Integer = 4
     
        Application.ScreenUpdating = False
     
        NomDocDepart = ActiveDocument.Name
        Dossier = ActiveDocument.Path
        DossierSauvegarde = Dossier & Application.PathSeparator & "EIA - Fusion"
        VerifDossier (DossierSauvegarde)
        ' Gestion du fichier Excel
        Repertoire = ActiveDocument.Path
        Fichier = "result6.xls"
     
        Selection.EndKey Unit:=wdStory
        Selection.HomeKey Unit:=wdStory
     
        NbPages = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
        NbCoupes = NbPages \ DecouperEn
        PagesRestantes = NbPages Mod DecouperEn
     
        If PagesRestantes = NbPages Then Exit Sub
     
        'ouverture classeur Excel
        Set AppXl = CreateObject("Excel.Application")
        AppXl.Visible = True 'mettre False pour qu'Excel reste masqué
        Set Wb = AppXl.Workbooks.Open(Repertoire & "\" & Fichier)
     
        ChangeFileOpenDirectory DossierSauvegarde
     
        For i = 1 To NbCoupes
            NumeroDoc = ((i - 1) * DecouperEn + 1) & " - " & (i * DecouperEn)
     
            PgDepart = Selection.Range.Start
            For j = 1 To DecouperEn
                Application.Browser.Next
            Next
     
            AppXl.Workbooks.Activate (Repertoire & "\" & Fichier)
     
            Nomuse = Worksheets("result6").Cells(2, i + 1)
            Prenom = Worksheets("result6").Cells(3, i + 1)
            Matricule = Worksheets("result6").Cells(4, i + 1)
     
            If Selection.Range.Start = PgDepart Then Selection.EndKey Unit:=wdStory
     
            ActiveDocument.Range(Start:=PgDepart, End:=Selection.Range.Start).Copy
            Documents.Add Template:="Normal", NewTemplate:=False
            Selection.Paste
            Wb.Sheets("result6").Range ("A1:G10")
            ActiveDocument.SaveAs FileName:=Matricule + " - " + Nomuse + " - " + Prenom + _
                        " - " + NumeroDoc + Right(NomDocDepart, 8), FileFormat:=wdFormatDocument
            ActiveDocument.Close
     
            Documents(NomDocDepart).Activate
        Next
     
        If PagesRestantes > 0 Then
            NumeroDoc = (NbPages - PagesRestantes + 1) & "_" & NbPages
     
            PgDepart = Selection.Range.Start
            For j = 1 To PagesRestantes
               Application.Browser.Next
            Next
            Selection.EndKey Unit:=wdStory
     
            ActiveDocument.Range(Start:=PgDepart, End:=Selection.Range.Start).Copy
            Documents.Add Template:="Normal", NewTemplate:=False
            Selection.Paste
     
            ChangeFileOpenDirectory DossierSauvegarde
            ActiveDocument.SaveAs FileName:=Left(NomDocDepart, Len(NomDocDepart) - 4) + _
                        "_" + NumeroDoc + ".doc", FileFormat:=wdFormatDocument
            ActiveDocument.Close
            Documents(NomDocDepart).Activate
        End If
     
        Application.ScreenUpdating = True
    End Sub
     
    Sub VerifDossier(ByVal DossierSauvegarde As String)
    On Error GoTo erreur
        ChDir DossierSauvegarde
        Exit Sub
    erreur:
        If Err.Number = 76 Then
            MkDir (DossierSauvegarde)
            Resume Next
        End If
    End Sub

  2. #2
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    A mon avis, cette ligne n'est pas correcte :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AppXl.Workbooks.Activate (Repertoire & "\" & Fichier)
    Tu as déja défini ton classeur avec wb, si tu veux qu'il soit actif :

    Wb.activate

    devrait suffire, mais il n'est pas ncr de l'activer, tu peux modifier les lignes en dessous :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Nomuse = wb.Worksheets("result6").Cells(2, i + 1)
    Prenom = wb.Worksheets("result6").Cells(3, i + 1)
    Matricule = wb.Worksheets("result6").Cells(4, i + 1)

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour la réponse!

    Effectivement la ligne :
    AppXl.Workbooks.Activate (Repertoire & "\" & Fichier)
    faisait parti de mes tests qui ne fonctionnaient pas.

    Je m'en suis finalement sorti en utilisant les commandes suivantes :

    Set Wb = AppXl.ActiveWorkbook
    'Récupération de la feuille par défaut
    Set wsExcel = Wb.ActiveSheet

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Dans un tuto sur DVP, il y a une explication pour faire un fichier par ligne !
    Pas besoin de découper, c'est fait un par un.

    http://heureuxoli.developpez.com/off...ipostage/#L7-G

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

Discussions similaires

  1. [XL-2007] Copier une cellule excel dans un signet word 2007
    Par krokos55 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/09/2012, 09h43
  2. utilisation d'une macro Excel dans une macro Word
    Par Tommy24 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/05/2011, 14h36
  3. Réponses: 4
    Dernier message: 24/02/2009, 23h09
  4. VBA Enregistrement feuille excel dans une feuille word
    Par pedrold75 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/05/2007, 15h36
  5. Comment insérer une macro excel dans une macro word?
    Par max2245 dans le forum VBA Word
    Réponses: 15
    Dernier message: 07/01/2006, 17h44

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