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

Fermé
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 - 6 mars 2013 à 19:42
Le Pingou Messages postés 12155 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 29 septembre 2024 - 12 mars 2013 à 17:30
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

A voir également:

22 réponses

Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
8 mars 2013 à 10:51
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
8 mars 2013 à 12:39
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
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
8 mars 2013 à 15:44
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
8 mars 2013 à 16:19
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
8 mars 2013 à 17:22
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
8 mars 2013 à 18:03
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
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
9 mars 2013 à 15:06
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
m@rina Messages postés 20990 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 1 octobre 2024 11 331
10 mars 2013 à 01:13
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
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
10 mars 2013 à 19:19
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
Le Pingou Messages postés 12155 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 29 septembre 2024 1 448
10 mars 2013 à 23:13
Bonjour à tous,
Excusez de l'intrusion, je pense qu'il faut remplacer
MesFichiers.Close par Documents.Close .... Idem pour MesFichiers.Open..

0
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
11 mars 2013 à 11:58
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
Le Pingou Messages postés 12155 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 29 septembre 2024 1 448
Modifié par Le Pingou le 11/03/2013 à 13:26
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
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
11 mars 2013 à 15:12
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
Le Pingou Messages postés 12155 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 29 septembre 2024 1 448
Modifié par Le Pingou le 11/03/2013 à 17:23
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
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
11 mars 2013 à 17:24
Bonsoir,
Avec documents, la macro ne démarre même pas, avec MesFichiers, elle s'arrête en arrivant dessus.
0
Le Pingou Messages postés 12155 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 29 septembre 2024 1 448
11 mars 2013 à 17:35
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
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
11 mars 2013 à 17:46
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
Le Pingou Messages postés 12155 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 29 septembre 2024 1 448
11 mars 2013 à 18:14
Bonjour,
Je viens de tomber sur un autre problème avec la récupération des champs du document.
Patience pour la correction.
0
Le Pingou Messages postés 12155 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 29 septembre 2024 1 448
11 mars 2013 à 23:24
Bonjour,
Je vous laisse essayer si tout fonctionne !
Votre fichier : https://www.cjoint.com/?3ClxwZ9eEOF

0
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
11 mars 2013 à 23:32
Bonsoir Le Pingou,
J'essaie ça demain, merci beaucoup.
0
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 7 235
Modifié par eriiic le 11/03/2013 à 23:59
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
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
12 mars 2013 à 09:46
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
Le Pingou Messages postés 12155 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 29 septembre 2024 1 448
12 mars 2013 à 10:51
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