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 :

Savoir si un fichier est ouvert (avec une subtilité)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 72
    Par défaut Savoir si un fichier est ouvert (avec une subtilité)
    Bonjour,

    Je m'en remet à vous car je sèche sur un sujet depuis quelques jours. Je suis actuellement stagiaire pour Renault au Techno centre pour valider mon diplôme d'ingénieur. Mon boulot est de faire des macro pour automatiser, solidifier des données et aidée des directeurs et secrétaire dans leur travail. Je suis actuellement sur un projet pour un directeur. Bon j'en arrête là pour la mise en situation qui ne sert pas à grand chose. Mon soucis est que je dois faire une "Mise à jour" du classeur, celle-ci se fera une fois par mois manuellement afin de faire des manipes, à chaque fois via différents classeurs standardisé, je fais donc une requête d'adresse de localisation et de nom pour ces fichiers. Jusque là tout va bien, le soucis c'est que je voudrais vérifier si le fichier Excel existe bien, s'il n'y a pas eu une erreur de saisie de l'adresse.

    Bon à ce moment, je vous vois venir "Sa fait 10k fois qu'on répond à cette question cherche un peu, un petit "dir" et le travail est joué" sauf que dans mon cas les fichiers en questions peuvent être sur un disque dur, un serveur, et (c'est là le soucis) un doc center. J'ai essayé différente manière le dir, le FileExists, remplacer les caractères spéciaux tel que le " " par un %20, mais tout semble indiquer que dir ne fonctionne que s'il s'agit d'une adresse de type : "C:// ..." sinon la fonction dir plante. Dans le cas du FileExists pour les fichiers sur doc center il me renvois tout le temps faux.

    Voilà je suis un peu dépassé par le temps, j'espère avoir été clair et ne pas faire doublon car croyez moi j'ai cherché :s

    Pour information le dir renvois le code erreur 52.
    De même je vous donne un exemple d'adressage (je préviens d'avance l'accès y est limité donc le lien vous apparaitra mort) :
    http://renault-workspace.share.renau...I_JANVIER.xlsx

    Merci infiniment d'avance, et si ce que je demande n'est pas possible, au moins je serais fixé.

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    plutôt que de tester l'existence du fichier, qui semble poser des problèmes en raison des sources diverses, tu pourrais plutôt tester l'ouverture dudit fichier ?

    Ce test serait une fonction appelée dans ta procédure principale.
    Grosso modo (et à adapter bien sûr)

    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
    Public Function FichierExiste(Chemin As String) As Boolean
    Dim Wb As Workbook
        On Error Resume Next
            Application.DisplayAlerts = False
                Set Wb = Workbooks.Open(Chemin)
            Application.DisplayAlerts = True
            Wb.Close False
        On Error GoTo 0
     
        If Not Wb Is Nothing Then FichierExiste = True
    End Function
     
     
    Sub UnTest()
    Dim LeChemin As String
    Dim NomFichier As String
        LeChemin = "http://renault-workspace.share.renault.fr/rnd/proj3488/Documents%20partages/08.%20Administration/14%20Implantations%20DEAS/Implantations%20DEASI/B_DEASI_JANVIER.xlsx"
        NomFichier = Split(Replace(LeChemin, "/", "\"), "\")(UBound(Split(Replace(LeChemin, "/", "\"), "\")))
        MsgBox "Le Fichier " & NomFichier & " existe : " & FichierExiste(LeChemin) & vbCrLf & "Chemin complet : " & LeChemin
    End Sub

  3. #3
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 72
    Par défaut
    Bonjour,

    Merci pour la réponse rapide. J'avais en effet pensé à cette solution, le soucis étant qu'ils ont la fâcheuse manie de faire de la mise en page par ligne ou colonne automatique (exemple bordure) ce qui fait que le fichier sauvegarde des 1000ier de cellules pour rien ce qui alourdi fortement le fichier du coup des risques de perte de temps assez conséquent. Mais faute de temps, je vais appliqué ta méthode qui fonctionne très bien et je te remercie fortement celle-ci.

    Dois-je mettre en résolu? Ou attendre voir si quelqu'un d'autre a quelque chose à me proposer?

    Merci dans tous les cas.

    Edit : Tant que j'y suis j'ai un soucis avec la méthode proposé et je l'avais eu avant donc seras-tu peut-être me répondre. Les fichiers qui sont utilisés (ceux qui passeront par ta fonction) possède des recherchev extérieur et du coup un message "Voulez-vous mettre à jour" apparaît, y-a-t-il un moyen de faire en sorte que cette boîte de dialogue n'apparaisse pas? Merci infiniment encore une fois.

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Normalement, le message s'activant à l'ouverture, tu ne devrais pas le voir avec ma proposition ?

    cette instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.DisplayAlerts = False
    désactive les boites de dialogue, en validant le choix par défaut à la place de l'utilisateur

    je bloque ça avant l'ouverture du classeur, et je le remet ensuite.

    à la limite, il faut peut être placer la restauration de cette fonctionnalité après la fermeture du classeur (là je l'ai mis juste avant)

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, pourquoi cette épidémie ? voir chez M$ Code de macro pour vérifier si un fichier est déjà ouvert.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 72
    Par défaut
    @kiki29 J'ai envie de dire pourquoi cette épidémie de personne qui critique sans même lire le fichier?
    C'est pas méchant mais le but de départ est travaillé sur un autre fichier Excel sans l'ouvrir (je dois notamment mettre des formules du classeur à jour ce qui nécessite aucune ouverture). Je sais bien sur vérifier si tel ou tel classeur est ouvert mais là n'était pas la question.

    Je vais reformuler une synthèse, je récupère une adresse avec le nom du fichier en question, JE VOUDRAIS check si le fichier existe bien pour pouvoir ensuite l'appliquer sereinement dans les formules (un RECHERCHEV par exemple).

    Mais merci tout de même d'avoir pris du temps pour me répondre c'est l'intention qui compte comme on dit

    @joe.levrai alors c'est ce que j'avais trouvé lors de la première fois où j'ai eu ce soucis, sa coupe bien les demandes de sauvegarde par exemple mais je ne sais pas pourquoi les demandes de mise à jour elles ne sont pas coupé avec cette méthode. J'ai tenté aussi de toucher mes options mais sans grand changement.

    Nom : mise_a_jour.PNG
Affichages : 154
Taille : 21,1 Ko

    J'ai mis une image pour qu'on parle bien de la même chose.

    Cordialement,
    HATTRY Jean-Athanase.

    Merci a tous les deux.

    Edit: En décochant la case Confirmer la mise à jour automatique des liens, j'ai résolu le soucis, la dernière fois ça ne voulait pas marcher >.< mystère. Penses-tu qu'on peut changer cette option via vba? Merci beaucoup en tout cas pour ton aide.

Discussions similaires

  1. Réponses: 12
    Dernier message: 16/04/2010, 11h12
  2. Savoir si un fichier est ouvert
    Par cyrcocq dans le forum Windows
    Réponses: 3
    Dernier message: 27/09/2006, 17h32
  3. [VB]Savoir si un fichier est ouvert ou non
    Par voileux dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/01/2006, 17h01
  4. savoir si un fichier est ouvert
    Par niclalex dans le forum Access
    Réponses: 2
    Dernier message: 12/10/2005, 20h19
  5. Unix - Comment savoir si un fichier est ouvert
    Par freddyboy dans le forum C
    Réponses: 7
    Dernier message: 06/10/2004, 16h53

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