Récupérer des dates word dans 1 tableau excel

Mouftie Messages postés 234 Statut Membre -  
Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'ai créer un tableau excel de suivi d'activités. en parallèle, j'ellabore une fiche détaillée par activité; dans cette dernière le collaborateur inscrira des dates d'actions de son projet.
je voudrai qu'à chaque fois que j'ouvre mon fichier excel il aille chercher ces dates et les mette à jour.
Je suppose qu'il faut commencer par mettre des champs dans mes fiches Word pour les récupérer dans excel et qu'il faut leur donner des noms.
qq'1 peut il me dire comment faire, svp
Merci d'avance

22 réponses

  • 1
  • 2
  1. Mouftie Messages postés 234 Statut Membre 17
     
    Pas beaucoup de succès, pourtant, ça me paraît utile ; à quoi sert de faire un formulaire, si on ne le traite pas en retour ?
    J'ai un peu avancé, j'ai trouvé un excellent tuto (sur le site), mais il est pour les versions antérieurs : https://www.hobbesworld.com/bureautique/tutorielrecupinfo.php

    Ici, on récupère chaque champ, les uns après les autres pour chaque fiche et on utilise pour ce faire :
          Fich.Cells(num_row, i + 1) = FichierWord.activedocument.formfields(Variables(i)).result


    Déjà, FormFields ne renvoie rien dans l'aide de Microsoft, ensuite, j'ai une erreur "définie par l'application ou par l'objet". Moi, j'ai des contrôles ActiveX, alors que le tuto traite les anciens contrôles.

    Ce que je voudrais c'est récupérer seulement le 2ème (par exemple) champ du formulaire ; je ne sais ni comment l'appeler, ni le définir.
    Quand je vais dans le contrôle, il utilise une balise Dat1 qui délimite le champ, c'est ça je pense que je dois appeler dans ma macro excel ? mais comment ?

    Merci de bien vouloir m'aider.
    0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    petite remarque-question

    'as tu activer Microsoft Word X.0 object library
    'et Microsoft Visual Basic For Applications Extensibility X.Y"."
    X et Y dépendent de la version de ton excel

    si non, accès dans l'éditeur VBA: outils-référence
    0
  3. Mouftie Messages postés 234 Statut Membre 17
     
    Bonjour Michel,
    Merci pour ton aide ; j'en avais un sur deux..., il manquait Microsoft Word X.0 object library
    Maintenant F1 renvoie bien une explication de formfields.
    Mais j'ai toujours mon erreur au même endroit ; d'ailleurs si je crée de nouvelles fiches dans l'exemple du Tuto, ça bloque au même endroit même avec une fiche enregistrée avec Word2003.

    Je mets le code entier, peut-être verrez-vous autre chose
    Do While mesfichiers <> ""  'tant que les fichiers ne sont pas tous passés
        'Si Le fichier testé est différende de " " et de "  " et de
      If mesfichiers <> "." And mesfichiers <> ".." And mesfichiers <> "New Formulaire.docx" Then
        monDocument = chemin & mesfichiers
        FichierWord.documents.Open Filename:=monDocument, ReadOnly:=True
        num_row = num_row + 1
        num_col = 1
        For i = 0 To nb_Champs - 1
        'Erreur définie par l'application ou par l'objet
          Fich.Cells(num_row, i + 1) = FichierWord.activedocument.formfields(Variables(i)).result
        Next i
        FichierWord.documents.Close (0)
      End If
      mesfichiers = Dir
    Loop

    Merci de votre aide
    0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Re,

    <code>Do While mesfichiers <> "" 'tant que les fichiers ne sont pas tous passés
    'Si Le fichier testé est différende de " " et de " " et de
    If mesfichiers <> "." And mesfichiers <> ".." And mesfichiers <> "New Formulaire.docx" Then
    monDocument = chemin & mesfichiers
    FichierWord.documents.Open Filename:=monDocument, ReadOnly:=True
    num_row = num_row + 1
    num_col = 1
    For i = 0 To nb_Champs - 1
    'Erreur définie par l'application ou par l'objet
    Fich.Cells(num_row, i + 1) = FichierWord.activedocument.formfields(Variables(i)).result
    Next i
    FichierWord.documents.Close (0)
    End If
    mesfichiers = Dir
    Loop

    peut-^tre mesfichiers plutôt que Fich
    méfie toi toujours quand tu recopies des codes :o) (on le fait tous et se plante tous!)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mouftie Messages postés 234 Statut Membre 17
     
    Non, ce n'est pas ça :
    Fich est la variable de la feuille excel
    Dim Fich As Worksheet
    Set Fich = ThisWorkbook.Worksheets("Feuil3")
    , alors que mesFichiers représente les fichiers word à traiter
    chemin = "F:\AutoFormMacro\tutorielrecupinfo\Nouveau dossier\"
    mesfichiers = Dir(chemin & "*.doc")    'Prendre tous les fichiers word 2007


    Par contre comme je suis débutante, je ne comprends pas ce que l'auteur a voulu faire avec
    If mesfichiers <> "." And mesfichiers <> ".." And mesfichiers <> "New Formulaire.doc" Then 

    je suppose que c'est comme qu'on fait pour appeler New Formulaire.doc, New Formulaire1.doc, New Formulaire2.doc...
    Merci
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      ah oui! excuses moi
      If mesfichiers <> "." And mesfichiers <> ".." And mesfichiers <> "New Formulaire.doc" Then 


      mets les après l'apostrophe pour tester et si ca ne plante pas, supprime

      Comme je plane, je vais demander à M@rina MVP Word et contributrice CCM de prendre le relais
      0
  7. Mouftie Messages postés 234 Statut Membre 17
     
    Bonjour Michel,
    je ne suis pas sur d'avoir compris ce que tu m'as conseillé ; voici ce que j'ai fait :
    Sub FormEntretien()
    Dim Fich As Worksheet
    Set Fich = ThisWorkbook.Worksheets("Feuil3")
    chemin = "F:\AutoFormMacro\tutorielrecupinfo\Nouveau dossier\"
    mesFichiers = Dir(chemin & "*.doc")    'Prendre tous les fichiers word 2007
    
    'Création du tableau avec ligne de titre
    Dim Variables As Variant
    Variables = Array("Secteur", "Dir", "Tel", "Ad")
    nb_Champs = 4
    num_row = 1
    i = 0
    For i = 0 To nb_Champs - 1
      Fich.Cells(num_row, i + 1) = Variables(i)
    Next i
    
    'Ouverture de Word
    Set FichierWord = CreateObject("word.application")
    FichierWord.Visible = True
    FichierWord.DisplayAlerts = False   'Excel n'affiche pas de messages, notamment d'alerte,
    
    Do While mesFichiers <> ""  'tant que les fichiers ne sont pas tous passés
        'Si Le fichier testé est différende de " " et de "  " et de
      'If mesFichiers <> "." And mesFichiers <> ".." And mesFichiers <> "New Formulaire.doc" Then
        monDocument = chemin & mesFichiers
        FichierWord.documents.Open Filename:=monDocument, ReadOnly:=True
        num_row = num_row + 1
        num_col = 1
        For i = 0 To nb_Champs - 1
        'Erreur définie par l'application ou par l'objet
          Fich.Cells(num_row, i + 1) = FichierWord.activedocument.formfields(Variables(i)).result
        Next i
        FichierWord.documents.Close (0)
    '  End If
      mesFichiers = Dir
    Loop
    FichierWord.Quit
    
    End Sub

    en mettant ' devant if et end if, word s'ouvre, mais aucun fichier n'est ouvert, ça passe directement à FichierWord.Quit
    Merci
    0
  8. m@rina Messages postés 27598 Date d'inscription   Statut Modérateur Dernière intervention   11 563
     
    Bonjour

    Tout d'abord je ne comprends pas bien non plus la ligne de critère de fichier :
    If mesfichiers <> "." And ...


    Voici le code simple que j'utilise pour ouvrir chaque fichier d'un dossier, puis le fermer :

    Chemin = "F:\AutoFormMacro\tutorielrecupinfo\Nouveau dossier\"
    Fichier = Dir(Chemin & "*.docx") ' Premier fichier
    Do While Fichier <> ""
        Documents.Open Filename:=Chemin & Fichier
       
    \\\\\\\\\\\\ MES ACTIONS /////////////////
    
        Documents.close filename:=Chemin & Fichier
    
        Fichier = Dir ' Fichier suivant
    Loop
    End Sub


    Ensuite tu dis que tu utilises des Contrôles ActiveX (qui ne sont d'ailleurs pas une nouveauté des dernières versions...) et tu utilises dans ta macro des objets FORMFIELDS... Un contrôle ActiveX n'est pas un champ, et donc pas un FORMFIELD.

    Un Contrôle ActiveX fait partie de la collection des INLINESHAPES.
    Pour récupérer la valeur d'un contrôle ActiveX, il suffit de connaître son nom et d'utiliser le code
    ActiveDocument.TextBox1.Value

    supposant que le contrôle se nomme TextBox1.

    Pour connaître ou modifier le nom d'un contrôle, il suffit d'en afficher ses propriétés.

    m@ina
    0
  9. Mouftie Messages postés 234 Statut Membre 17
     
    Bonjour M@rina, et merci pour ton aide,
    Je suis débutante et vraiment je n'y arrive pas toute seule, malgré ton aide...

    Voilà où j'en suis :
    Sub FormEntretien()
    Dim Fich As Worksheet
    Dim Chemin As String
    Dim MesFichiers As String
    Dim Nb_Champs As Byte, Num_Row As Byte, i As Byte
    Dim FichierWord As Object
    Set Fich = ThisWorkbook.Worksheets("Feuil3")
    Chemin = "F:\AutoFormMacro\tutorielrecupinfo\TestDocx\"
    MesFichiers = Dir(Chemin & "*.docx")    '1er de mes fichiers word 2007
    'Création du tableau avec ligne de titre
    Dim Variables As Variant
    Variables = Array("Secteur", "Dir", "Tel", "Ad")
    Nb_Champs = 4
    Num_Row = 1
    i = 0
    For i = 0 To Nb_Champs - 1
      Fich.Cells(Num_Row, i + 1) = Variables(i)
    Next i
    
    'Ouverture de Word
    Set FichierWord = CreateObject("word.application")
    FichierWord.Visible = True
    'FichierWord.DisplayAlerts = False   'Excel n'affiche pas de messages, notamment d'alerte,
    
    Do While MesFichiers <> ""  'tant que les fichiers ne sont pas tous passés
        MesFichiers.Open Filename:=Chemin & MesFichiers
        For i = 0 To Nb_Champs - 1
            Fich.Cells(Num_Row, i + 1) = ActiveDocument.TextBox1.Value
        Next i
            
        
      MesFichiers.Close Filename:=Chemin & MesFichiers
      MesFichiers = Dir     'Fichier suivant
    Loop
    FichierWord.Quit
    
    End Sub

    j'ai tout de suite une erreur de complilation : "Argument nommé introuvable" sur
      MesFichiers.Close Filename:=Chemin & MesFichiers

    J'ai essayé de remplacer document par MesFichiers, là, la macro se déroule, mais arrivé à ce code
     MesFichiers.Close Filename:=Chemin & MesFichiers
    j'ai Erreur d'exécution '424': Objet requis
    Peux-tu me dire ce qui va pas, stp.
    Merci d'avance.
    0
  10. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour à tous,
    Excusez de l'intrusion, je pense qu'il faut remplacer
    MesFichiers.Close par Documents.Close .... Idem pour MesFichiers.Open..

    0
  11. Mouftie Messages postés 234 Statut Membre 17
     
    Bonjour Le Pingou et merci pour ta contribution à mon pb.
    cependant, j'avais commencé par faire exactement comme me le conseillait M@rina, donc avec
        Documents.Open Filename:=Chemin & Fichier
       
    \\\\\\\\\\\\ MES ACTIONS /////////////////
    
        Documents.close filename:=Chemin & Fichier
    
    (j'ai fait une erreur de copier coller dans mon message précédent, désolée) et j'ai tout de suite une erreur de complilation : "Argument nommé introuvable" sur Documents.close filename:=Chemin & Fichier (c'est pour ça que j'ai essayé avec MesFichiers).
    0
  12. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Merci pour l'information.
    Vous changez la déclaration :
    Dim MesFichiers As String
    Par :
    Dim MesFichiers As Variant

    Note: bien sur vous reprennez la proposition d'écriture de m@arina ( salutations).

    Salutations.
    Le Pingou
    0
  13. Mouftie Messages postés 234 Statut Membre 17
     
    Merci Le Pingou
    Voici le fichier
    https://www.cjoint.com/c/CClpilOjVxJ
    avec le fichier d'origine (https://www.hobbesworld.com/bureautique/tutorielrecupinfo.php et mon exemple (feuille3 de resum_client.xls et les formulaires Word dans le sous répertoire TestDocx).
    Merci
    0
    1. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
       
      Bonjour,
      Est-ce que cela n'a pas marché avec la modification de la déclaration ?
      Question vos documents ont l'extension [DOC] et dans la macros c'est [DOCX] laquelle est valable ....?
      Salutations.
      Le Pingou
      0
    2. Mouftie Messages postés 234 Statut Membre 17
       
      Bonsoir,
      Avec documents, la macro ne démarre même pas, avec MesFichiers, elle s'arrête en arrivant dessus.
      0
  14. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Eh bien cela marche très bien avec mes modifications. Le seul problème est l'extension des documents Word : est-ce [doc] ou [docx] ...... ?

    0
  15. Mouftie Messages postés 234 Statut Membre 17
     
    Bonsoi,
    Les formulaires sont de la forme New Formulaire.docx, dans le répertoire testDocx (ils sont 4).
    Quelles modifications as-tu apportées?
    0
  16. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Je viens de tomber sur un autre problème avec la récupération des champs du document.
    Patience pour la correction.
    0
  17. Mouftie Messages postés 234 Statut Membre 17
     
    Bonsoir Le Pingou,
    J'essaie ça demain, merci beaucoup.
    0
  18. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour à tous,

    Par contre comme je suis débutante, je ne comprends pas ce que l'auteur a voulu faire avec
    If mesfichiers <> "." And mesfichiers <> ".." And mesfichiers <> "New Formulaire.doc" Then

    Dans un répertoire FAT les 2 premières entrées sont des eux-même des directory qui pointent :
    - . : sur lui-même
    - .. : sur le répertoire parent (celui qui le contient)
    Il ne faut donc pas les traiter en tant que fichiers.
    Autant utiliser ...Fichier = Dir.
    "New Formulaire.doc" est sans doute le formulaire vierge présent dans le répertoire et qu'il ne faut pas traiter non plus.

    eric

    Jamais tu ne répondras à un mp non sollicité...
    Bon, ça c'est fait.
    0
  19. Mouftie Messages postés 234 Statut Membre 17
     
    Bonjour,
    Le Pingou, Merci pour ton aide, mais le pb reste sur l'ouverture des formulaires, quand je lance la macro, j'ai le message svt : "erreur de compil : projet ou bibliothèque introuvable" avec Documents surligner dans
        Documents.Open Filename:=Chemin & MesFichiers
    

    Merci également à Eriiic pour ses explications très claires.
    0
  20. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    C'est étrange car cela marche sans problème avec ou sans le document [New Formulaire.docx]
    Contrôler dans la macro que le chemin soit correct !
    Je serai de retour en fin de journée.
    Contrôler aussi que la référence [Microsoft Word X.0 object library] soit activée, dans l'éditeur VBA: outils-référence

    0
  • 1
  • 2