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

Excel Discussion :

VBA gérer erreur fichier déjà ouvert


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 41
    Points : 28
    Points
    28
    Par défaut VBA gérer erreur fichier déjà ouvert
    Bonjour,

    J'aurai voulu votre avis, moi et quelques autres personnes utilisons un userforms pour compléter un fichier excel commun. Parfois nous avons un problème, lorsque 2 ouvertures de fichiers tombent en même temps.

    Il serait préférable de vérifier si le fichier est déjà ouvert? Ou utiliser on error go to?
    Si le fichier est déjà ouvert (ou si l'erreur est rencontrée), comment automatiser un certain nombre de tentatives? Avec une boucle c'est envisageable?

    Merci d'avance pour vos lumières

  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
    Citation Envoyé par julietindiamike Voir le message
    Il serait préférable de vérifier si le fichier est déjà ouvert? Ou utiliser on error go to?
    A condition de mettre un On Error Goto 0 juste après pour éviter de polluer le reste du code.

    Si le fichier est déjà ouvert (ou si l'erreur est rencontrée), comment automatiser un certain nombre de tentatives? Avec une boucle c'est envisageable?
    Si tu le fais, mets un Wait dans la boucle pour temporiser et, au bout d'un certain nombre de tours (à paramétrer en fonction de la patience des utilisateurs), demande à l'utilisateur s'il veut persister ou abandonner (un simple MsgBox devrait suffire).
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Je note que tu tagues XL2003...

    Le partage de fichiers Excel pour la saisie, c'est quand même loin d'être le top. Il serait donc judicieux qu'il n'y ait pas de partage. Si pas de partage, lorsque tu ouvres un fichier qui est déjà ouvert par quelqu'un d'autre, tu as une alerte d'Excel t'informant que le fichier est ouvert en lecture seule et tu peux demander à Excel qu'il t'informe de la libération du fichier. Ne serait-ce pas suffisant?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    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
    D'accord avec Pierre Fauconnier.
    J'ajouterais même que dès qu'on parle de "multi" (multi-fichiers, multi-utilisateurs, etc.), il est judicieux d'envisager la possibilité d'utiliser un SGDB.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Déjà merci pour vos réponses

    Quand j'évoquais on error go to, je pensais utiliser une étiquette, le go to 0 me parait plus flou

    Effectivement le wait je n'y avais pas pensé. L'attente ne devrait pas être longue, le fichier n'étant ouvert que via le script, seulement le temps d'enregistrer un ajout ou une modification.

    Pierre, non malheureusement l'utilsation d'userforms est nécessaire, il permet de formater les saisies, de vérifier si certains champs ne se trouvent pas déjà dans le fichier pour éviter les doublons, certains calculs se font automatiquement, génération de textes dans plusieurs langues mis en mémoire, des actions automatisées par chaine, sans compter le login des utilisateurs et l'ergonomie...

    Menhir, ah oui carrément, notre solution excel a été créée à la va vite pour un besoin immédiat, sans s'y connaitre du tout... puis il a évolué. Au stade actuel, c'est clair qu'une BDD (access?) aurait été plus appropriée. C'est sans doute quelque chose qui devra se faire plus tard, en ayant conscience que ça prendra du temps qu'on ne nous attribue pas pour du "développement" et tout reprendre à zero. Mais pendant ce temps, il y aura toujours notre solution avec excel qui continuera de dépanner.

    Dans l'immédiat l'objectif reste de résoudre les problèmes de notre version actuelle, d'ou le fait de me tourner vers vous.

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Le userform est géré au sein d'un vbscript? Pas au sein d'un Excel?

    Si c'est cela, c'est une info importante à avoir...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    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
    Citation Envoyé par julietindiamike Voir le message
    Quand j'évoquais on error go to, je pensais utiliser une étiquette, le go to 0 me parait plus flou
    Le On Error Goto 0 est une instruction à utiliser à posteriori pour arrêter l'effet d'un On Error précédent.
    Les On Error peuvent parfois être utiles à condition de bien cibler leur action sur une instruction particulière pour laquelle on n'a pas trouvé d'autre moyen de gérer un éventuel problème.
    Il ne faut en aucun cas les appliquer à l'intégralité du code, ça empêcherait de comprendre (et de corriger) un autre dysfonctionnement.

    Pierre, non malheureusement l'utilsation d'userforms est nécessaire, il permet de formater les saisies, de vérifier si certains champs ne se trouvent pas déjà dans le fichier pour éviter les doublons, certains calculs se font automatiquement, génération de textes dans plusieurs langues mis en mémoire, des actions automatisées par chaine, sans compter le login des utilisateurs et l'ergonomie...
    La saisie en cellule peut aussi faire tout ça (en mieux et plus simple) et peut être complétée par une macro de traitement postérieure.

    Personnellement, je suis toujours parvenu à éviter les User Form dans VBA Excel (en plus, je trouve très moche leur look "années 80").
    J'ai même modifié des appli d'autres concepteurs qui en contenaient, et les utilisateurs en ont été très satisfaits.
    Mais c'est un sentiment tout à fait personnel et je conçois que d'autres puissent ne pas le partager.

    en ayant conscience que ça prendra du temps qu'on ne nous attribue pas pour du "développement" et tout reprendre à zero.
    On en est tous là malheureusement....
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Le userform est géré au sein d'un vbscript? Pas au sein d'un Excel?

    Si c'est cela, c'est une info importante à avoir...
    Oui c'est via visual basic, au lancement de la macro j'ai un module qui ouvre l'userform souhaité.

    Menhir, je veux bien te croire pour ne pas utiliser le formulaire VBA, mais tu dois passer par un autre formulaire quand même? Notre fichier excel commun n'est pas très compréhensible pour les utilisateurs, raison pour laquelle l'utilsation de formulaire est une réelle nécessité. Il y a pas mal de colonnes qui contiennent des valeurs boleennes ou des chiffres signifiant certaines options

  9. #9
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    VBScript? Si c'est sans Excel, tu n'auras pas le choix et tu devras passer par un userform...

    Cela dit, il ne faut pas avoir peur d'un userform (avis personnel), surtout que le problème ici est plus le partage du fichier ou la volonté de l'utiliser à plusieurs en même temps et pas du tout un problème de userform.

    Il faudrait tester que le fichier est en readonly lorsque tu l'ouvres, car il n'y a pas d'autres moyens de tester l'ouverture d'un fichier que de l'ouvrir et de voir si ça passe et, si ça passe, si le fichier est en lecture seule ou pas.


    PS: Les fonctions que tu pourrais trouver sur le net pour tester qu'un fichier est ouvert ou pas sont des leurres improductifs, à mon avis.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Bonjour,

    Tu pourrais peut être aussi :

    Migrer ta base vers access, import de la table Excel.

    Utiliser tes userforms excel pour interagir avec cette bdd, ce qui ne devrait pas te demander bcp de modifications si ton fichier est bien construit.

    Tu as ainsi une bdd solide, réellement multi-utilisateurs.

    Bénéficierait de toutes les fonctionnalité dans sgbd, requête, formulaire,...

    Et garderai tes procédures excel pour tes calculs,...

    Un fichier Excel mère contentant tes macros et usfr, qui serait ouvert dans le fichier temporaire de l'utilisateur via un vbscript, ce qui permettrait que chaque utilisateur possède à chaque utilisation sa propre copie à jour de l outils.

    J ai du créé un système similaire au boulot, où pour des raison financière, je suis un des seuls à disposer d'access (coût licence), et je doit dire que ça fonctionne relativement bien et plus stable que des fichiers partagés.
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  11. #11
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    @mfoxy,


    Pourquoi j'y ai pas pensé alors que j'ai 4 billets de blog qui expliquent comment faire? C'est par ici pour le premier...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    @Pierre,

    Je ne les connais que trop bien, surtout la partie pour les passages de paramètres 😜
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Je tourne un peu en rond.
    Voici ma base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CommandButton1_Click()
        on error goto Erreur
    	Workbooks.Open Filename:= _
            "abc/test.xlsx"
        Sheets("Sheet1").Range("A1").Value = "test"
        ActiveWorkbook.Save
        ActiveWindow.Close
        MsgBox "OK!"
        Erreur:
    	Msgbox "Erreur!"
    End Sub
    Après rélexion, au lieu de créer une boucle pour temporiser la disponibilité du fichier, ne serait il pas possible de faire une condition sur l'erreur?

    Ouvrir le fichier
    Si pas d'erreur ...
    Si erreur Fermer le fichier, wait et renvoyer à la ligne d'ouverture (pour pas écrire l'ouverture à plusieurs endroits)

    Je n'arrive pas à structurer proprement :/

Discussions similaires

  1. [XL-2010] Message d'erreur fichier déjà ouvert
    Par shipuden64 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/03/2015, 13h45
  2. [VBA-Office]Détecter la directorie du fichier Excel ouvert
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/12/2006, 13h53
  3. (VBA-E) Erreur sur ouverture de fichier
    Par Stutak dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 27/08/2006, 15h11
  4. [VBA][Office 2003] Fichier ouvert depuis IE ou Word?
    Par nbaudraz dans le forum VBA Word
    Réponses: 2
    Dernier message: 12/10/2005, 14h27
  5. [VBA-E] Macro ouverture fichier déja ouvert
    Par bhaal76 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 14h30

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