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 :

Détecter par quoi est ouvert un fichier


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Points : 56
    Points
    56
    Par défaut Détecter par quoi est ouvert un fichier
    Bonjour à tous!

    Tout d'abord désolé pour le titre qui n'est pas très explicite mais je n'ai pas trouvé mieux.

    En réalité, je possède un programme VBA qui, à l'ouverture, se place sur la feuille "Affiche Demande" et m'affiche un UserForm sur lequel les utilisateurs peuvent faire des manips' sur plusieurs tableaux.

    Maintenant, je créé un deuxième programme qui lui permet d'ajouter des informations dans les tableaux lui aussi.

    Pour ce faire, j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set docExcel = CreateObject("Excel.Application")
    Set classExcel = docExcel.Workbooks.Open("chemindufichier.xls")
    Set feuilDemandes = classExcel.Worksheets("Demandes")
    Jusque là tout va bien, mais ça ce complique vite car en réalité le fichier s'ouvre avec l'affichage de mon UserForm. Aucune erreur n'est détectée mais les informations que je souhaite ajouter ne sont pas ajoutées, et le UserForm s'affiche alors que je ne le veux pas. De plus, on ne voit pas le fichier Excel dans la barre des tâches.

    Est-ce que quelqu'un pourrait me dire comment entrer des informations dans un tableur Excel sans passer par la fonction Private Sub Workbook_Open()?
    Ou alors peut-on détecter que le fichier est ouvert par un autre fichier et donc ne pas lancer les opérations normalement définies? (je trouve la deuxième solution moins réaliste mais sait-on jamais)

  2. #2
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Je n'ai pas tout compris.
    Ce que tu fais là c'est ouvrir ton fichier dans une autre application qui tourne en arrière plan. Si tu veux le faire dans ton Excel actuel, tu enlèves la première ligne et le "docExcel." de la 2ème.
    Tu trouveras dans la FAQ des moyens de savoir si un fichier est déjà ouvert ou pas.
    Si le fichier est fermé, tu as ton objet classExcel sur lequel tu peux travailler. Tu peux donc fermer le userForm, récupérer tes infos et tout.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Points : 56
    Points
    56
    Par défaut
    En fait là mon but est, depuis un fichier Excel, ouvrir un autre fichier pour remplir un tableau puis de le fermer pour retourner sur le premier fichier.

    Cependant, dans le second fichier que j'ouvre, j'ai dans la fonction Private Sub Workbook_Open() (donc au lancement du fichier) un bout de code qui me permet d'afficher un UserForm. Et quand ce UserForm s'affiche, les données que je souhaite insérer dans le tableau voulu ne s'insèrent pas.

    Je me demandais donc comment ne pas passer par Workbook_Open ou alors comment savoir qu'on ouvre le fichier depuis un autre fichier pour ne pas exécuter ma macro au lancement du fichier.

  4. #4
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Il ne faut pas toucher au code du fichier que tu ouvres, il faut gérer ça à partir de la macro appelante. Tu as 2 possibilités :
    - Soit comme je disais tu fermes le userForm du 2ème fichier après son ouverture (via le code du premier fichier)
    - Soit tu fais Application.EnableEvents = False avant l'ouverture et tu le remets à True à la fin du traitement.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Points : 56
    Points
    56
    Par défaut
    Merci ZerbreLoup, j'ai vu ta solution un peu tard car je l'avais déjà trouvé mais j'ai opté pour le EnableEvents ^^ Si ça peux aider, voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Fichier = "...xls"
    Application.EnableEvents = False
    Set classExcel = Workbooks.Open(Filename:=Fichier)
    Application.EnableEvents = True
    Merci pour ton aide ZebreLoup en tout cas!

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

Discussions similaires

  1. [Toutes versions] Identifier comment est ouvert un fichier : double click ou via raccourci
    Par Pilou52 dans le forum Excel
    Réponses: 2
    Dernier message: 30/04/2014, 19h51
  2. Réponses: 13
    Dernier message: 20/08/2011, 21h00
  3. [WD-2010] Détecter que word est ouvert depuis IE
    Par Raduris dans le forum VBA Word
    Réponses: 2
    Dernier message: 16/08/2011, 17h54
  4. par quoi est remplace le tag <html:cancel /> ?
    Par pcouas dans le forum Struts 2
    Réponses: 1
    Dernier message: 27/05/2009, 00h18
  5. Par quoi est liée la liste déroulante du frm ?
    Par sinecure dans le forum IHM
    Réponses: 1
    Dernier message: 11/05/2009, 16h06

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