Bonjour,
un petit souci à régler de mon côté: j'ai une macro Excel qui m'ouvre un formulaire standard Word pour en récupérer des champs.Tout fonctionne bien sauf un détail: ce formulaire est normalement verrouillé à l'origine, pour y appliquer mon traitement je le déverrouille d'abord de cette façon .
Petit problème: parfois les utilisateurs renvoient un formulaire Word déverrouillé: ma macro essaie donc de déverouiller un formulaire ui l'est déjà,et j'obtiens un message d'erreur.

J'aimerais donc:
-soit tester si mon fichier Word est verrouillée avant de le déverouiller pour éviter ce message d'erreur.
-soit gérer ce cas particulier d'erreur en faisant un saut dans mon code (si c'est possible) et donc éviter la partie (avec un lbl ou quelque chose comme ça si c'est possible).

Le code de ma macro complète est dessous.
Je débute et je ne sais faire aucune de ces deux choses,auriez-vous une piste?
Merci d'avance,
M




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
Sub InsererDemande()
 
'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
WordDoc.Unprotect
 
    NomFichier = WordDoc
 
        Pos = InStr(1, NomFichier, ".", 1)
        nomFichierSansExtension = Left(NomFichier, Pos - 1)
        chemin = WordDoc.Path & "\" & WordDoc
 
'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, 1) = nomFichierSansExtension
Cells(DerniereLigne, 1).Select
    Cells(DerniereLigne, 1).FormulaLocal = _
                 "=LIEN_HYPERTEXTE(""" & Fichier & """;""" & nomFichierSansExtension & """)"
 
 
WordDoc.Close False 'ferme le document Word sans sauvegarde
WordApp.Quit 'ferme l'application Word
 
End Sub