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 :

Fichier en cours d'utilisation [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 28
    Points : 11
    Points
    11
    Par défaut Fichier en cours d'utilisation
    Bonjour à tous, j'ai fait une macro qui permet de créer un fichier word depuis excel puis de l'éditer, voici comment elle fonctionne :

    - Elle va chercher un modèle dans mon arborescence windows
    - Elle ouvre ce fichier : word m'ouvre une fenêtre comme quoi ce fichier word est utilisé par moi-même , chose que je ne comprends pas au passage et qui est la source de mon pb.
    - elle copie ce fichier dans un nouveau doc word puis le sauvegarde.

    Ensuite, la macro me permet de venir mettre à jour ce fichier créé :

    J'ouvre une instance de word sur excel comme au dessus, puis la macro va chercher le document word.
    Mon problème est similaire à celui rencontré plus haut : word me dit que le fichier word est déjà utilisé (par moi-même) et me propose alors de l'ouvrir en lecture seule...
    Cette fois ci ça me pose pb car je souhaite modifier ce fichier word, et en sauvegarder les modifications...

    Savez vous ce qui pourrait être à l'origine du pb ? J'ai déjà cherché un peu sur le web sans trouver de problème vraiment similaire.

    Merci d'avance.

    canardav


    Voici le code que j'utilise pour venir chercher mon doc word depuis excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim wordapp As Object
    Dim doc_DMD As Object
     
    Set wordapp = CreateObject("Word.Application")
    wordapp.Visible = True
     
     
    Set doc_DMD = wordapp.documents.Open(path_DMD & DMD & ".docx")
    nb : path_DMD est un emplacement sur le réseau (je ne sais pas si cela a une importance pour solutionner mon pb)

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 524
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 524
    Points : 16 460
    Points
    16 460
    Par défaut
    Bonjour

    Citation Envoyé par canardav77 Voir le message
    ...
    - Elle va chercher un modèle dans mon arborescence windows
    - Elle ouvre ce fichier : word m'ouvre une fenêtre comme quoi ce fichier word est utilisé par moi-même , chose que je ne comprends pas au passage et qui est la source de mon pb.
    - elle copie ce fichier dans un nouveau doc word puis le sauvegarde....
    Cela ne répond pas directement à ton problème mais un vrai modèle doit être créé comme tel (manuellement tu déroules le bouton "Document Word (*.docx)" pour choisir "Modèle Word") avec une extension dotx.
    On n'ouvre pas le document dotx, on crée un document fondé sur ce modèle : cela résout donc l'ouverture, évite le copier coller et permet la sauvegarde une fois les modifs terminées.

  3. #3
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Bonjour
    l'ecriture paraitra un peu bizarre à certain mais c'est fonctionel
    Je cherche si un nom de fichier existe, s'il n'existe pas je le crée depuis mon original vierge et le rempli.

    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
    Private Sub CommandButton1_Click()
     Dim sejour As String, nom As String, Rep As String
     Dim annee As Long
     
     Dim WordApp As Word.Application
     Dim WordDoc As Word.Document
     
        sejour = Feuil1.[j13].Value
        annee = Format(Fsejour.[b3], "yyyy")
        Rep = Workbooks(ActiveWorkbook.Name).Path
        nom = Cells(ActiveCell.Row, 2).Value
        Monfichier$ = Rep & "\Crobs\" & nom & " " & annee & ".doc"
     
            If Dir(Monfichier$, vbNormal Or vbReadOnly Or vbHidden Or vbArchive) = "" Then
            FileCopy Left(Rep, InStr(InStr(Rep, "\") + 1, Rep, "\")) & "SOURCES\MASQUES\Crobs.doc", Monfichier$
            Close #1
            End If
     
    Shell ("c:\windows\explorer.exe " & Monfichier$)
    Set WordApp = New Word.Application
    Set WordDoc = WordApp.Documents.Open(Monfichier$)
     
        If WordDoc.ProtectionType <> wdNoProtection Then WordDoc.Unprotect ' je déprotège le document
            WordDoc.Fields(1).Result.Text = nom
            WordDoc.Fields(5).Result.Text = sejour
     
        WordDoc.Protect Type:=wdAllowOnlyFormFields, NoReset:=True 'je reprotège le document
        Set WordDoc = Nothing
    WordApp.Visible = True
    WordApp.Activate
    Set WordApp = Nothing
     
    End Sub

  4. #4
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut
    Bonjour,
    Voici une procédure que j'utilise pour ce problème et ferme le document Word si il est ouvert.
    Je lance donc cette macro avant d'exporter mes données Excel vers Word

    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
    Sub ControleSiDocumentWordOuvert()
        Dim Appli As Word.Application
        Dim WordDoc As Word.Document
     
        'nécéssite d'activer la reference Microsoft word xx.x 0bject Library
        On Error Resume Next
        Set Appli = GetObject(, "Word.Application")
        Set WordDoc = Appli.Documents("C:\..\...\.docx")
        On Error GoTo 0
     
        If WordDoc Is Nothing Then
            MsgBox "Transfert possible " 'ICI TU PEUX CHOISIR CE QUE TU VEUX METTRE OU NE RIEN METTRE 
            Else
            MsgBox "Fermeture du Document"
            WordDoc.Close 'fermeture application Word
        End If
        Set Appli = Nothing
        Set WordDoc = Nothing
    End Sub
    En espérant que cela puisse répondre à ta demande

    Eric

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    @ Chris : à vrai dire le problème c'est pas au niveau du modèle car celui ci je m'en fiche de l'ouvrir en lecture seule, le problème c'est vraiment le fichier que j'ai créé à partir de ce template.


    Je me demande du coup si ce n'est pas l'extension ou le fait de crééer mon doc à partir d'un fichier en lecture seule qui pose le pb.

    Ce qui m'embête aussi c'est de fermer word au lancement de ma macro car je peux avoir d'autres doc ouverts que je voudrai pas supprimer ...

    Du coup j'aimerai éviter de faire le check et de fermer word s'il est ouvert.

    Manuellement, sans macro, il est vrai que le seul moment ou j'arrive à supprimer mon document dans l'arborescence c'est quand word est TOTALEMENT fermé : si le doc est fermé mais pas word alors il ne veut pas.

    Je ne comprends vraiment pas le pb et vous remercie des efforts que vous me fournissez, je cherche cependant une solution plus appropriée, si vous avez je suis preneur


    Merci beaucoup !

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Ce que 78chris essaie de te dire, c'est que tu n'aurais probablement pas le problème avec un vrai modèle (dotx).
    Alors, essaie, au moins.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    Rebonjour,

    Finalement, j'ai repris le code et j'ai bien géré les isntances de word ie : condition : if word est fermé alors ouvre une instance sinon pas la peine.

    J'ai aussi bien veillé à fermer word à la fin et cela fonctionne.

    Merci quand même.

    Et bravo pour les Cours Excel c'est bien utile.

    Bonne journée.

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

Discussions similaires

  1. Samba / fichier en cours d'utilisation
    Par dycobe dans le forum Réseau
    Réponses: 2
    Dernier message: 05/03/2008, 10h19
  2. [D7] Lire un fichier en cours d'utilisation
    Par bibi26 dans le forum Delphi
    Réponses: 3
    Dernier message: 05/07/2007, 11h00
  3. [DOM] Fichier en cours d'utilisation - Suppression impossible
    Par schniouf dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 15/12/2006, 14h58
  4. Fichier en cours d'utilisation
    Par kendras dans le forum C
    Réponses: 9
    Dernier message: 29/11/2006, 12h45
  5. [VB.NET] Comment acceder au fichier en cours d'utilisation ?
    Par Aspic dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/02/2006, 17h40

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