Bonjour à tous ,la macro suivante me permet: à partir d'un formulaire standard Word rempli par des utilisateurs, de recopier automatiquement certains des champs (nom de l'utilisateur, date de remplissage du formulaire)dans un fichier Excel me servant de base de données de suivi.
Le code est le suivant:
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
Sub InsererDemande()
 
On Error GoTo GestionErreur
 
'nécessite d'activer la référence Microsoft Word xx.x Object Library
Dim WordApp As Object
Dim WordDoc As Object
Dim Fichier As Variant
Dim Pos, DerniereLigne As Integer
Dim NomFichier, chemin, nomFichierSansExtension As String
 
 
'affichage boite de dialogue pour choisir un document Word
Fichier = Application.GetOpenFilename("Text Files (*.doc*), *.doc*")
If Fichier = False Then Exit Sub
 
 
 
'le document Word est supposé fermé avant le lancement de la macro
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = False 'pour que word reste masqué pendant l'opération
Set WordDoc = WordApp.Documents.Open(Fichier) 'ouverture du fichier Word
If WordDoc.ProtectionType = 2 Then
WordDoc.Unprotect
End If
 
 
 
'Identification de la première ligne vide pour y recopier les données
DerniereLigne = Range("A65535").End(xlUp).Row + 1
 
Cells(DerniereLigne, 12) = WordDoc.Sections(1).Headers(1).Range.Fields(3).Result.Text
'Cells(DerniereLigne, 16) = Now
Cells(DerniereLigne, 2) = WordDoc.Fields(3).Result.Text
Cells(DerniereLigne, 3) = WordDoc.Fields(2).Result.Text
Cells(DerniereLigne, 4) = WordDoc.Fields(1).Result.Text 'copie du champ texte Word
Cells(DerniereLigne, 7) = WordDoc.Fields(5).Result.Text
Cells(DerniereLigne, 5) = WordDoc.Fields(4).Result.Text
Cells(DerniereLigne, 13) = WordDoc.Fields(6).Result.Text
 
 
WordDoc.Close False 'ferme le document Word sans sauvegarde
WordApp.Quit 'ferme l'application Word
 
Exit Sub
 
 
GestionErreur:
    MsgBox "Attention! L'insertion de la demande n'a pas fonctionné", vbOKOnly, "Erreur : " & Err.Description
    Application.ScreenUpdating = True 'pour remettre l'affichage à jour
    Application.Cursor = xlDefault
 
End Sub
Ca fonctionne parfaitement sauf sur un point.
Le formulaire Word d'origine est normalement verrouillé,et comporte des champs texte à remplir.
Problème: par rapport aux dates, l'utilisateur les saisit au format français (ex. 06/11/2007 pour le 6 novembre 2007) et après recopie elles sont au format US sur mon fichier Excel (!!), Pour mon exemple: 06/11/2007 sur mon fichier Word me donne 11/06/2007 sur mon fichier Excel de destination.
Vu que je dois faire un suivi des dates sur mon fichier Excel j'aimerais qu'elles se recopient au bon format,comment faire?
Pour info: sur mon fichier Word le champ d'origine est un champ texte,et le format de ma cellule Excel est un format personnalisé : jj/mm/aaaa (format sous lequel j'aimerais afficher mes dates).
Merci d'avance,
M