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 :

workbooks.add sur fichier distant plante


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 51
    Points : 33
    Points
    33
    Par défaut workbooks.add sur fichier distant plante
    Salut

    Voici mon souci :
    J'ai un fichier excel avec pas mal de macros, qu'on utilise comme template, quelque-part sur le réseau, pour que différentes personnes téléchargent et éditent leur propre copie sur leur poste de travail.

    Lorsque j'ouvre une copie de ce fichier -ma copie locale donc- une macro tente d'ouvrir le template afin de lire ses propriétés parmi lesquelles se trouvent la propriété "version".
    La macro vérifie alors que la version de la copie est égale a la version du template, et affiche un gentil message invitant l'utilisateur a utiliser la dernière version du template.

    Pour ouvrir le classeur distant j'utilise la méthode workbooks.add de l'objet application.
    Il arrive que ça fonctionne très bien, mais certaines fois ça se vautre méchamment jusqu'à m'obliger a redémarrer l'ordinateur complet :
    Ca fait comme si le classeur distant est locké, du coup au bout d'une minutes ou deux, une multitudes de messages d'erreur apparaissent toutes les secondes a peu pres. Impossible de killer le processus excell. y'a plus qu'a redémmarer.
    Le message dit "Excel is waiting an OLE Object to complete an operation" (a peu de choses près )....

    Du coup je me demande comment contourner ce problème.
    Existe-t-il un moyen de "protéger" workbooks.add afin qu'en cas de fichier non accessible, je puisse simplement afficher un message d'info et empecher que tout parte en sucette comme c'est le cas actuellement ?
    Y'a t il une meilleure façon de lire les propriétés d'un fichier excel ?
    Toute autre idée étant la bienvenue.

    ps: j'utilise vba7 et excel 2010

    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
     
    Public Sub CheckLatestVersion()
    ' Compare the Version in Custom properties of this workbook
    ' with the version in Custom properties of the template
    ' if a newer version exists, a msg is Displayed
     
        Dim app As New Excel.Application
        Dim templateWorkbook As Excel.Workbook
        Dim customProperties As Variant
        Dim currentVersion, newVersion As Variant
     
        ' this has saved me several times
        If (InStr(ThisWorkbook.FullName, "Commercial-Lending-Module\01-Documentation\02-Templates\CTR-CLM") > 0) Then
            MsgInfo ("You are currently editing the Technical Composition Release template document. For this reason, version checking will not be performed")
        Else
            On Error Resume Next
            Set customProperties = ThisWorkbook.CustomDocumentProperties
            If customProperties("Version") Is Nothing Then
                currentVersion = "0.0"
            Else
                Set currentVersion = customProperties("Version")
            End If
     
            ' Reading version information from template
            Set templateWorkbook = app.Workbooks.Add(TemplateCTRFile)
            app.Visible = False
            If templateWorkbook Is Nothing Then
                MsgError ("Unable to open template workbook")
            Else
                Set customProperties = templateWorkbook.CustomDocumentProperties
                Set newVersion = customProperties("Version")
                If newVersion Is Nothing Then
                    MsgError ("Error while reading template workbook version")
                Else
                    If currentVersion < newVersion Then
                        MsgInfo ("This document version (" & currentVersion & ") is outdated " & vbLf _
                        & "Consider using the newest version template (" & newVersion & ") " & vbLf _
                        & "Location : " & TemplateCTRFile)
                    End If
                End If
            templateWorkbook.Close SaveChanges:=False
            End If
        End If
        On Error GoTo 0
    End Sub

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Première chose, vire la ligne suivante de ton code :
    Elle t'empêche de voir où se situe le problème en le masquant sans le résoudre.
    On évite ce type d'instruction en phase de débugage.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. [GIT]Annuler des add sur fichiers et dossiers avant commit
    Par student_php dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 03/01/2012, 18h37
  2. Réponses: 2
    Dernier message: 13/05/2009, 10h10
  3. [FTP] fopen sur fichier distant bloqué
    Par benton_fr dans le forum Langage
    Réponses: 2
    Dernier message: 23/04/2008, 12h33
  4. fseek sur fichiers distants
    Par Xris dans le forum Langage
    Réponses: 25
    Dernier message: 19/12/2006, 17h39
  5. Tester et récupérer des infos sur fichier distant
    Par cybertj dans le forum Langage
    Réponses: 2
    Dernier message: 17/05/2006, 09h18

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