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 :

Programme s'arrête sur la commande d'affichage d'un USF sans message d'erreur [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2019
    Messages : 27
    Points : 17
    Points
    17
    Par défaut Programme s'arrête sur la commande d'affichage d'un USF sans message d'erreur
    Bonjour,
    j'ai élaboré un programme professionnel assez complexe.
    Chez moi, sur mon ordinateur, pas de problème, mais sur mon lieu de travail mes collègues ont le programme qui tourne apparemment en boucle sur l'ordre d'ouverture d'un USF.
    Il faut faire un CTRL- Pause pour arrêter le programme.
    Pas de message d'erreur !
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Workbook_Open()
    Call initialisation
    End Sub
     
    Sub initialisation()
    accueil.Show
    End Sub
    le programme s'arrête donc sur "accueil.show" surligné en jaune après avoir fait CTRL-Pause
    Et je n'arrive pas à reproduire le phénomène chez moi.
    Je suis maintenant en retraite mais j'assure le suivi de ce programme pour mes anciens collègues qui sont dans la mouise actuellement.
    Merci à ceux qui pourront éclairer mon humble lanterne.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 765
    Points : 28 623
    Points
    28 623
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le problème se situe vraisemblablement dans l'une des procédures du UserForm. Peut-être une boucle ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2019
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Bonjour et merci d'avoir porté attention à ce sujet.
    Est-il possible que certaines instructions tournent en boucle sur un ordinateur et pas sur d'autres ? Si elles n'étaient pas reconnues il devrait y avoir un message d'erreur, non ?
    Voici les boucles que j'utilise dans l'initialisation du Userform.

    Je fais apparaitre toutes les feuilles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Feuille As Worksheet
        For Each Feuille In Sheets
        Feuille.Visible = True
        Next Feuille
    Ici je supprime les éventuels filtres sur mes deux classeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim Sh As Worksheet   
    For Each Sh In WKBOOK1.Worksheets
            If Sh.FilterMode Then
                Sh.ShowAllData
            End If
        Next
        For Each Sh In WKBOOK2.Worksheets
            If Sh.FilterMode Then
                Sh.ShowAllData
            End If
        Next
    Et là je ferme tous les Userforms à part l'USF "accueil"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim USF As Object
    For Each USF In UserForms
        If USF.Name <> "accueil" Then  'And USF.Name <> "Fond_ecran" And USF.Name <> " "
        Unload USF
        End If
    Next USF
    Et tout fonctionne bien chez moi, pas au boulot !

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 765
    Points : 28 623
    Points
    28 623
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Même si cela n'explique pas votre souci, je vois déjà un problème dans votre première procédure.
    En ligne 1 vous déclarez la variable comme un objet Worksheet alors que vous parcourez la collection des Sheets donc si dans un classeur, il y a une feuille autre qu'une feuille de calcul, cela provoquera une erreur.
    Soit vous déclarez cette variable comme un objet Sheet soit vous parcourez la collection des Worksheets

    Difficile d'en dire plus car avec ce code on ne peut pas tout comprendre. D'où viennent les variables WKBOOK1 et WKBOOK2 ?
    Vous semblez travailler avec plusieurs formulaires ouverts et si je comprends bien vous les fermez au départ d'un seul ?

    Que se passe-t'il si l'on ferme ce formulaire, les autres restent ouverts ?
    Cela pourrait donner l'impression d'un blocage, peut-être se ferme t'il lui même avant d'avoir fermé les autres

    Pour ma part, je n'aime pas du tout travailler comme cela, c'est la porte ouverte aux problèmes. J'ouvre un formulaire, il fait son job et je le ferme.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2019
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Bonjour,
    j'ai modifié la boucle ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Feuille As Worksheet
        For Each Feuille In WKBOOK1.Worksheets
        Feuille.Visible = True
        Next Feuille
    Pas de différence chez moi. J'attends une réponse demain de mes collègues.
    Mais vous avez raison, cela pouvait engendrer des problèmes.

    WKBOOK1 et WKBOOK2 sont bien deux classeurs sur lesquels je travaille.
    WKBOOK1 contient le programme et ouvre WKBOOK2 au lancement de la macro.
    WKBOOK2 doit rester ouvert car des mises à jour sont effectuées depuis WKBOOK1.
    WKBOOK2 est fermé et enregistré par une macro à la fermeture de WKBOOK1

    Je vous tiens au courant des résultats.
    Merci encore

  6. #6
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2019
    Messages : 27
    Points : 17
    Points
    17
    Par défaut Bug résolu !
    Bonjour,
    j'ai enfin mis le doigt sur le problème.
    Mes collègues travaillent sur un double écran dont un, l'écran principal est physiquement en mode portrait.
    Les coordonnées du Userform sont excentrées et ce dernier s'affiche sur l'écran où il devient invisible.
    Travaillant en simple écran, ce problème n'apparaissait pas chez moi.
    Pour recentrer le Userform sur l'application Excel, il faut lui entrer ce code à l'initialisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.Left = Application.Left + Application.Width / 2 - Me.Width / 2
    Me.Top = Application.Top + Application.Height / 2 - Me.Height / 2
    Cela pourra peut-être servir.
    Merci beaucoup pour l'attention que tu as apporté à mon problème, Philippe.

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

Discussions similaires

  1. [XL-2013] Code de Macro qui s'arrête après une instruction sans message d'erreur
    Par MistyFlip dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/07/2017, 12h59
  2. Réponses: 7
    Dernier message: 26/10/2015, 16h37
  3. Réponses: 12
    Dernier message: 06/04/2009, 12h07
  4. annuler l'affichage d'un etat sans message d'erreur
    Par mnssylvain dans le forum IHM
    Réponses: 4
    Dernier message: 25/11/2007, 21h55
  5. [VB6]affichage d'une feuille modale / message d'erreur 400
    Par getea85 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/01/2006, 18h37

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