IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Tester si un fichier Word est verrouillé?Ou bien sinon faire un saut dans mon code?


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut Tester si un fichier Word est verrouillé?Ou bien sinon faire un saut dans mon code?
    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

  2. #2
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    J'ai essayé ceci aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If WordDoc.Locked = True Then
    WordDoc.Unprotect
    End If
    mais j'obtiens un message erreur 438: propriété ou méthode non géré par cet objet.

  3. #3
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Pour information j'y suis parvenu
    de cette façon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If WordDoc.ProtectionType = 2 Then
    WordDoc.Unprotect
    End If
    (La propriété est à -1 s'il est déverrouillé et 2 s'il est verrouillé après test par msgbox).Bonne journée à tous,M

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Qu'est ce qu'il y a de mal dans mon code?
    Par pennylanesworld dans le forum Flash
    Réponses: 2
    Dernier message: 23/10/2006, 12h22
  2. [VB6] tester si le doc word est vierge?
    Par sun19 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 11/04/2006, 15h42
  3. [VB6] (Pilote Isam) Tester si un fichier excel est ouvert
    Par Requin15 dans le forum VB 6 et antérieur
    Réponses: 30
    Dernier message: 20/03/2006, 17h57
  4. Tester que le fichier n'est pas un fichier binaire
    Par fedfil dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 21/10/2005, 17h29
  5. Tester si un fichier X est ouvert
    Par James64 dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 06/10/2004, 15h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo