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 :

[Excel 2013] ActiveSheet ne s'actualise qu'avec l'utilisation de points d'arrets


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Ecole d'ingénieur informatique (EPSI Montpellier)
    Inscrit en
    Septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ecole d'ingénieur informatique (EPSI Montpellier)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2017
    Messages : 8
    Par défaut [Excel 2013] ActiveSheet ne s'actualise qu'avec l'utilisation de points d'arrets
    Bonjour à tous,

    Je suis débutant en VisualBasic et je rencontre un problème qui me bloque depuis quelques jours, j'espère donc que vous pourrez m'aider.

    Contexte :
    L'entreprise dans laquelle je suis utilise différentes macros Excel sous Office 2010 et désire passer sous Office 2013, et je suis chargé de la maintenance de celle ci. Premièrement la macro sur laquelle je travail fonctionne très bien sur Office 2010 mais pose un problème lorsqu'on la lance sur Office 2013. La macro est censée afficher un UserForm avec des données stockées sur un Workbook différent, pour cela elle ouvre ce Workbook et récupère les infos nécessaires.

    Problème (uniquement sous Office 2013) :
    Lorsque la macro ouvre le Workbook sur lequel sont stocké les données désirées, la variable ActiveSheet ne se met pas à jour et donc le reste du programme plante. Cependant si je lance cette macro avec un point d'arrêt et que je l'exécute ligne par ligne la variable ActiveSheet se met à jour et le programme fonctionne très bien.

    Voila j'espère avoir été clair, si ce n'est pas le cas n'hésitez pas à me demander de clarifier certains points ou de vous transmettre certaine parties du code.

    En attente de vos propositions, merci par avance.

    Arthur

  2. #2
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonjour,

    Le problème que vous rencontrez semble être une très bonne raison de se passer de toute forme de sélection/activation dans un code Excel... à moins bien sûr qu'il n'y ait pas de contournement possible.

    Dans votre cas, le nom de l'onglet auquel ActiveSheet est censé faire référence est-il fixe et connu ?
    Si oui, passez simplement par une identification claire de cette sheet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("<Nom_du_fichier>").Sheets("<Nom_de_longlet>")
    Si cela n'est pas possible, après l'ouverture du fichier, ajoutez un DoEvents. Cela laissera le temps à Excel de charger proprement le fichier à ouvrir et de lancer les événements Open et surtout Activate.

    Cordialement

  3. #3
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    Bonnes remarques de @Ben_L.
    Je rajouterais à cela, si le classeur met un certain à s'ouvrir,
    alors utiliser Application.Wait (cf aide vba)
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  4. #4
    Membre du Club
    Homme Profil pro
    Ecole d'ingénieur informatique (EPSI Montpellier)
    Inscrit en
    Septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ecole d'ingénieur informatique (EPSI Montpellier)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2017
    Messages : 8
    Par défaut
    Bonjour Ben_L,

    Tout d'abord merci beaucoup pour votre réponse !

    Ensuite je comprend tout à fait votre conseil de ne pas utiliser d'activation, malheureusement je ne suis pas l'auteur de cette macro et mon supérieur m'à demandé de toucher le moins possible au code en lui même car il est très long et complexe. Mon travail était simplement de corriger les erreurs qui apparaissent sous Office 2013, je cherchais donc une solution pour actualiser ce ActiveSheet. J'ai essayer beaucoup de choses dont le "DoEvents" dont vous parlez et rien y fait..

    J'attend donc de voir si d'autres propositions me sont apportées, sinon je demanderais si j'ai l'autorisation de modifié ActiveSheet par ce que vous me recommandez. Merci encore

    Cordialement,

    Arthur

  5. #5
    Membre du Club
    Homme Profil pro
    Ecole d'ingénieur informatique (EPSI Montpellier)
    Inscrit en
    Septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ecole d'ingénieur informatique (EPSI Montpellier)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2017
    Messages : 8
    Par défaut
    Bonjour RyuAutodidacte,

    Merci de votre réponse également !

    Et pour vous répondre j'ai aussi essayer de rajouter Application.Wait avec 20sec (même si je trouvais ca pas très clean ^^) pour voir si c'était le temps de chargement qui causait le problème mais cela n'a rien changé.
    J'ai vraiment l'impression que ce n'est pas le Worbook qui ne se charge pas à temps mais plutôt la variable ActiveSheet qui ne se met pas a jour.

    Arthur

  6. #6
    Membre du Club
    Homme Profil pro
    Ecole d'ingénieur informatique (EPSI Montpellier)
    Inscrit en
    Septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ecole d'ingénieur informatique (EPSI Montpellier)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2017
    Messages : 8
    Par défaut
    Bonjour Marc-L,

    Merci pour votre réponse cependant :

    Comme pourtant indiqué dans mes précédant messages, je n'ai pas codé cette macro j'en assure juste la maintenance et j'ai pour ordre de la modifier le moins possible, juste de fixer les différent problèmes.

    Ajouter le Workbook voulu avant ActiveSheet serais donc pour moi le même problème que de mettre directement LeBonWorkbook.LeBonWorksheet, c'est a dire modifier de nombreuses lignes de la macro. Et donc dans le cas ou je serais obligé d'en venir la je mettrais cette dernière solution.

    Lire les réponses précédente dans un forum n'est il pas le B A BA ?

    Cordialement,

    Arthur

  7. #7
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    ArthurFort,

    Dans la mesure où votre rôle, si j'ai bien compris, consiste à assurer le bon fonctionnement de la macro, il paraîtrait logique que vous puissiez modifier le code si celui-ci dysfonctionne.
    La réponse de Marc-L paraît ainsi tout à fait acceptable.

    Le fait que vous souhaitiez modifier le code le moins possible peut se comprendre. Et ça tombe bien : il n'est pas forcément utile de supprimer tous les ActiveSheet pour corriger le problème.

    Cordialement

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

Discussions similaires

  1. Probleme avec Studio et les points d arrets
    Par Seth77 dans le forum Visual Studio
    Réponses: 0
    Dernier message: 22/07/2016, 10h28
  2. [XL-2013] Enregistrer un fichier Excel 2013 en Excel 2007 avec macros
    Par TOUGMA dans le forum Excel
    Réponses: 7
    Dernier message: 02/03/2014, 08h03
  3. Ouvrir un objet excel 2013 avec access 2003
    Par emeric2502 dans le forum VBA Access
    Réponses: 4
    Dernier message: 11/02/2014, 23h12
  4. Ouvrir un objet excel 2013 avec access 2003
    Par emeric2502 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/02/2014, 15h28
  5. [XL-2003] Actualiser données avec Excel fermé
    Par Williamm dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/08/2011, 09h49

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