Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/03/2011, 11h53   #1
Futur Membre du Club
 
Inscription : août 2010
Messages : 65
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 65
Points : 17
Points : 17
Par défaut Enregistrement des données d'un formulaire Word dans un fichier Excel

Bonjour,

Je débute en vba , et je dois extraire les données d ' un formulaire word vers un fichier excel.

J ' ai donc suivi ce tuto:http://heureuxoli.developpez.com/office/sondage/#L4
et créer un formulaire simple composé de 4 champs de texte montré ci-joint , et
j ' essaie de récupérer les valeurs saisies par l ' utilisateur dans un fichier excel
qui a pour entêtes colonne: Nom | Prenom | Jour de visite | Réservation IBM | Réservation Acer | etc....

J ' ai donc testé la macro suivante:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Sub Extract()
On Error Resume Next
Dim wApp As New Word.Application
Dim oDoc As Word.Document
Dim i As Integer
 
 
Set oDoc = wApp.Documents.Open(FileName:="C:\temp\sondage\COUPON REPONSE.doc")
 
oDoc.Unprotect
 
i = oDoc.FormFields.Count
Debug.Print i
 
    For i = 1 To oDoc.FormFields.Count
        Debug.Print oDoc.FormFields(i).Result
 
    Next i
 
Set oDoc = Nothing
wApp.Quit
 
End Sub
mais ca ne fonctionne pas ....
Merci de votre aide
Fichiers attachés
Type de fichier : doc COUPON REPONSE.doc (20,3 Ko, 7 affichages)
j2ee60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 13h42   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 321
Points : 29 220
Points : 29 220
Salut,

Je pense pas que ça puisse fonctionner.
Dans le tuto, j'explique comment insérer des champs de formulaire.
Je n'en trouve pas dans ton document, ce qui fait qu'aucune donnée n'est extraite.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 13h55   #3
Futur Membre du Club
 
Inscription : août 2010
Messages : 65
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 65
Points : 17
Points : 17
Bonjour,

Merci de ton aide , mais mon document est bien constitué de champs de formulaire( ceux inhérents a word 2007, pas les hérités).
En fait , mon fichier est un dotx , mais vu que developpez n ' accepte pas ce genre de fichier , je l ' ai renommé en .doc ( ce qui a du supprimer les contrôles je pense)

Voici le lien ou j ' héberge mon document:

http://dl.free.fr/kxMDBEnty

Merci de ton aide !

Cordialement
j2ee60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 14h23   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 321
Points : 29 220
Points : 29 220
Salut,

J'avais déjà changé l'extension pour pouvoir l'ouvrir.
Mais mon tuto est axé sur les champs de formulaire hérités, si tu utilises autre chose, ça ne fonctionnera pas.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 15h03   #5
Futur Membre du Club
 
Inscription : août 2010
Messages : 65
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 65
Points : 17
Points : 17
Bonjour,

Ok , je comprends mieux.
J ' ai modifié mon formulaire comme tu me l ' as suggéré.
http://dl.free.fr/niIQQ4fT0

Maintenant quant j ' exécute la macro sous word
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Sub Extract()
On Error Resume Next
Dim wApp As New Word.Application
Dim oDoc As Word.Document
Dim i As Integer
 
 
Set oDoc = wApp.Documents.Open(FileName:="C:\temp\sondage\COUPON REPONSE.doc")
 
oDoc.Unprotect
 
i = oDoc.FormFields.Count
Debug.Print i
 
    For i = 1 To oDoc.FormFields.Count
        Debug.Print oDoc.FormFields(i).Result
 
    Next i
 
Set oDoc = Nothing
wApp.Quit
 
End Sub
Ça ne fait rien ( mais en même temps , je ne vois pas dans ce code ou ca initialise le fichier excel ?)

Ce bout de code est supposé enregistrer dans un fichier excel ?
Merci bien
j2ee60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 15h33   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 321
Points : 29 220
Points : 29 220
Salut,

Pourquoi ce code devrait-il fonctionner avec Excel ?

Dans le tuto, on aborde Outlook, Word et Access (DAO).

Le code d'extraction est une fonction qui est lancée au départ d'une routine dans Access pour alimenter une table.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 16h04   #7
Futur Membre du Club
 
Inscription : août 2010
Messages : 65
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 65
Points : 17
Points : 17
Bonjour,

Merci de ton aide.
J ' essaye justement d ' adapter le code de ton tuto pour Excel !
Or il ne reconnait pas la variable ThisWorkbook:"La méthode "thisworkbook" de l'objet global a échoué"
J ' ai bien rajouté la référence vers excel

Merci !
j2ee60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 21h05   #8
Futur Membre du Club
 
Inscription : août 2010
Messages : 65
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 65
Points : 17
Points : 17
voici ma macro:

Code :
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
Sub import_client()
Dim Fich As Excel.Worksheet
Set Fich = ThisWorkbook.Worksheets("All_Clients")
chemin = "C:\Documents and Settings\EddayanH\Desktop\tutorielrecupinfo"
mesfichiers = Dir(chemin & "*.docx")
Dim Variables As Variant
Variables = Array("nom", "prenom", "dateVisite", "IBM", "Acer", "HP", "Sony", "Toshiba")
 
nb_Champs = 8
num_row = 1
i = 0
 
For i = 0 To nb_Champs - 1
  Fich.Cells(num_row, i + 1) = Variables(i)
Next i
 
Set FichierWord = CreateObject("word.application")
FichierWord.Visible = True
FichierWord.DisplayAlerts = False
 
Do While mesfichiers <> ""
  If mesfichiers <> "." And mesfichiers <> ".." And mesfichiers <> "CouponReponse(document).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
      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
il me met une erreur a la ligne 2:ThisWorkbook:"La méthode "thisworkbook" de l'objet global a échoué"
j' ai pourtant bien ajouté la référence microsoft excel object.
Merci de votre aide !
j2ee60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 21h27   #9
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 592
Points : 1 592
Envoyer un message via MSN à carden752
Bonjour,

Thisworkbook correspond au classeur courant, il n'est donc pas reconnu, utilisez plutôt
Code :
Excel.workbook.worksheets("All_Clients")
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 21h43   #10
Futur Membre du Club
 
Inscription : août 2010
Messages : 65
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 65
Points : 17
Points : 17
merci de ton aide!

Mais quant je remplace la ligne , ca me met maintenant :

membre de méthode ou de données introuvable en surlignant le Workbook comme si il ne le reconnaissait pas.
Les référence sont pourtant bien ajoutés .

Merci
j2ee60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 23h40   #11
Futur Membre du Club
 
Inscription : août 2010
Messages : 65
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 65
Points : 17
Points : 17
Résolu en ouvrant le fichier excel d ' une autre maniere;

Code :
1
2
3
4
Set xls = CreateObject("Excel.Application")
xls.Workbooks.Open cheminExcel
xls.Visible = True
Set xlsheet = xls.Worksheets(1)
j2ee60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h24.


 
 
 
 
Partenaires

Hébergement Web