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 :

macro pour copier un tableau avec mot cle de word vers excel et dispatcher données sur plusieurs cellules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 9
    Par défaut macro pour copier un tableau avec mot cle de word vers excel et dispatcher données sur plusieurs cellules
    Bonjour, je viens vers ce forum parce que je ne trouve pas de solution à mon problème:
    je souhaiterai prendre des données dans plusieurs documents word et les mettre dans les cases appropriées sur des feuilles excel, jusqu'à maintenant j'arrive à m'en sortir mais je dois prendre des infos qui sont dans un tableau sur les documents word en question et les mettre sur le même excel je me suis dit que c'est plus facile de copier le tableau en question sur une nouvelle feuille excel prendre les infos les mettres sur les feuilles excel correspondantes et supprimer le tableau et ce pour tous les documents en question.
    mais jusqu'à maintenant je n'arrive pas à intégrer la macro "tableau" ( qui d'ailleur marche bien pour ouvrir un doc word copier le tableau et le coller sur excel) dans ma macro (les 2 macros sont integrées au fichier excel dans l'exemple) pour copier le tableau et ainsi piquer les infos dont j'ai besoin.

    je vous envoi un excel pour vous montrer ce que je dois rempli comme champs. ( les cases jaunes sont à remplir mais pas les cases noires)
    je vous envoi aussi un document word pour prendre les données dedans et voir que ma macro marche jusqu'à maintenant ( mais c'est vrai qu'elle beug de temps en temps pour des problèmes différents à chaque fois si vous avez une solution pour ça aussi), je fais une copie du doc word pour voir si ca marche pour plusieurs word je le nomme attestation 2.
    Merci de me donner un peu de votre temps SVP je suis vraiment désespérée.
    Note : Ne pas tenir compte de ce qui est ecrit en rouge et souligné (ce sont des explications).
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 419
    Par défaut
    Bonjour,

    Un début de solution pour importer les données de Word et le tableau dans la feuille nommée Data.

    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
    Option Explicit
     
    Sub ImportDataWord()
       '---
       Const cCriteria = "Analyses"
       '---
       Dim oWD As New Word.Application
       Dim oDoc As Word.Document
       Dim oTableObject As Word.Table
       Dim oWordRange As Word.Range
       Dim sDocname As String
       Dim wb As Workbook
       Dim wsRep As Worksheet
       Dim wsMPCA As Worksheet
       Dim wsPrel As Worksheet
       Dim wsData As Worksheet
       Dim i As Long
       '---
       Set wb = ThisWorkbook
       Set wsRep = wb.Sheets("Repérages")
       Set wsMPCA = wb.Sheets("MPCA")
       Set wsPrel = wb.Sheets("Prélevements")
       Set wsData = wb.Sheets("Data")
       wsData.Cells.Clear
       '--- Recherche du document word à parcourir
       With Application.FileDialog(msoFileDialogFilePicker)
           .AllowMultiSelect = False
           .Filters.Add "Documents", "*.Doc*", 1
           .Show
          If .SelectedItems.Count > 0 Then
               sDocname = .SelectedItems(1)
           End If
       End With
       If Len(sDocname) = 0 Then Exit Sub  '--- aucun doc
       '--- On ouvre le document WORD
       Set oDoc = oWD.Documents.Open(sDocname, , True)
       oWD.Visible = True
       oDoc.Activate
       '--- récupérer données
       With wsRep
          i = .Range("E" & Rows.Count).End(xlUp).Row + 1   '--- n° nouvelle ligne
          '--- Nom du fichier
          .Cells(i, 8) = sDocname
          '--- Nature des travaux (dans le 2e tableau, ligne 8, colonne 2)
          .Cells(i, 5) = txt(oDoc.Tables(2).Cell(8, 2).Range)
          '--- No (par la fonction FIND)
          oWD.Selection.HomeKey Unit:=6               'Retourne au début du fichier Word
          oWD.Selection.Find.ClearFormatting          'on "vide la mémoire" de la fonction Recherche
          oWD.Selection.Find.Execute "N°"             'On trouve le texte "No"
          oWD.Selection.MoveRight Unit:=3, Count:=2, Extend:=1   'On se déplace de 10 mots
          .Cells(i, 7) = oWD.Selection                    'sélection du texte trouvé
          '--- Nom du fichier schema
          .Cells(i, 9) = Mid(sDocname, InStrRev(sDocname, "\") + 1) & "-Schemas"
          '--- Date de visite
          oWD.Selection.HomeKey Unit:=6              'Retourne au début du fichier Word
          oWD.Selection.Find.ClearFormatting         'on "vide la mémoire" de la fonction Recherche
          oWD.Selection.Find.Execute "^#^#/^#^#/^#^#^#^#"    'On trouve une date
          .Cells(i, 12) = oWD.Selection.Text                       'sélection du texte trouvé --- ? split
          '--- Date du rapport de reperage(dans le 2e tableau, ligne 1, colonne 2)
          .Cells(i, 14) = txt(oDoc.Tables(2).Cell(1, 2).Range)
       End With
       '--- Nom du fichier feuille MPCA
          wsMPCA.Cells(i, 2) = wsRep.Cells(i, 8)
       '--- boucler sur les tableaux du document
       For Each oTableObject In oDoc.Tables
          Set oWordRange = oTableObject.Range
          '--- rechercher le mot clé
          oWordRange.Find.Execute FindText:=cCriteria, Forward:=True
          If oWordRange.Find.Found = True Then
             '--- recopier la table dans la feuille du classeur
             oTableObject.Range.WholeStory
             oTableObject.Range.Copy
             wsData.Select
             wsData.Range("A1").Select
             wsData.Paste
          End If
       Next
       '--- faire le ménage
       oDoc.Close False
       oWD.Quit
       Set oWD = Nothing
       Set oDoc = Nothing
       Set oWordRange = Nothing
       Set wsRep = Nothing
       Set wsMPCA = Nothing
       Set wsPrel = Nothing
       Set wsData = Nothing
       Set wb = Nothing
    End Sub
     
    Private Function txt(s As String) As String
       '--- retirer les caractères de formatage Word
       s = Replace(s, Chr(13), "")
       s = Replace(s, Chr(7), "")
    End Function
    Utilisez toujours Option Explicit, cela vous évitera bien des déboires!

    Bonne continuation.
    Fichiers attachés Fichiers attachés

  3. #3
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 419
    Par défaut
    Pour la partie de reprise des données du tableau recopié dans la feuille Data il faudrait savoir quel est le critère justifiant la récupération: le 'OUI' en colonne E ?
    Si c'est cela, il y a un point à gérer: ce 'OUI' n'est pas toujours sur la même ligne que les autres données (exemple: OUI en cellule E11 et données en ligne 12).
    Maintenant un 'OUI' ayant été trouvé, le plus simple est de reprendre toutes les informations de la ligne associée, de la colonne A à la colonne I, pour les traiter et les insérer dans les autres feuilles.
    Bonne continuation.

Discussions similaires

  1. Macro pour copier tableau qui contient mot clé de Word vers Excel
    Par hajar1403 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/10/2019, 16h17
  2. Macro pour copier coller valeurs avec mise en page
    Par melinavy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/08/2019, 10h12
  3. [XL-2007] Problème avec mot cle FORMAT en VBA EXCEL
    Par berliane dans le forum Excel
    Réponses: 9
    Dernier message: 16/04/2014, 17h10
  4. [XL-2000] Macro pour copier-coller valeur avec un while
    Par golghot dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/06/2010, 16h52
  5. copier avec une liaison de word vers Excel
    Par oduss dans le forum Excel
    Réponses: 2
    Dernier message: 28/12/2007, 08h44

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