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 :

Userform blocage puis redémarrage d'excel! [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut Userform blocage puis redémarrage d'excel!
    Bonjour à toutes et tous,

    Bonne santé à tous, et bons dev.
    J'ai fait un cas de test d'une userform contenant 3 boutons radio. L'un pour "monter" (passer à la ligne du dessus), le deuxième pour "descendre" (passer à la ligne du dessous) et le dernier pour fermer la Userform! Le fonctionnement sur une feuille test est bon mais bloque au bout d'un certain nombre d'appui (touches clavier m,d) ou clicks boutons monter/descendre! Je me doute que le show/hide doit être la cause mais sans comprendre le pourquoi et donc résoudre le pb! La seule solution trouvée est de fermer la Userform puis la relancer tous les ~50 appuis pour être tranquille!...
    En cas de blocage, aucun click ni appui ne fait quelque chose! La fermeture de la Userform par clic sur la croix de "destruction" fait redémarrez Excel!

    D'avance merci.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Bonjour,

    Si ton fichier fait planter Excel, il n'y aura pas beaucoup de personnes qui vont le télécharger!!!!!

    Post ton code avec la balise [CODE], afin que l'on regarde ....

    Seb

  3. #3
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    Je me doute que le show/hide doit être la cause
    Peux-tu nous expliquer à quoi sert-il ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut
    Bonjour Sebphyto, anasecu,

    Le code ne fait planter Excel QUE après un certain nombre d'action (monter descendre), je subodore donc un dépassement de pile ou quelque chose du même acabit... sinon rien tout marche bien
    Le but est d'utiliser un Userform avec des boutons radio pour permettre dans une mini appli. de sélectionner une parmi x actions possibles. Ceci peut être commandé à la souris où au clavier.
    La version jointe est un "test case" avec 3 actions possibles, je passe à la ligne du dessus, à celle du dessous où je quitte l'appli. Après appui d'une touche, on masque la Userform pendant le traitement de l'action (UF.Hide). En fin de traitement on revient à la sélection des actions possibles (UF.show).
    J'espère avoir été plus clair.

    Nota: J'avais fait la même chose avec une macro en Excel 4.0 qui fonctionnait impeccablement jusque sous Office 2010!
    Un crash disque avec perte de l'install d'Office 2010 m'a obligé à racheter un Office 2013 puis réécrire la dite macro de ~900 lignes.

    Nota2: Le passage clavier / souris ne prolonge pas le temps de fonctionnement! Buffer fool

  5. #5
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    Après appui d'une touche, on masque la Userform pendant le traitement de l'action (UF.Hide). En fin de traitement on revient à la sélection des actions possibles (UF.show).
    J'espère avoir été plus clair.
    C'est bien ce que j'avais compris mais hide/show ne sert à rien ou alors il faut que tu m'expliques le pourquoi.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut
    Bonjour anasecu,

    Pur impression de ma part, pour un blocage complet des actions puis crash d'Excel, il n'y a pas 37 causes possibles hormis un débordement de "pile" au sens large. Il semble à l'usage que le buffer alloué aux interactions clavier et où souris n'est pas "vidé" après chaque action?! Plusieurs clics de souris bloque le traitement aussi bien que les raccourcis claviers. (Je n'ai pas vu de "flush" sur un Userform!??).
    Certes le Hide/Show n'est pas a incriminé en soit. J'ai eu une fois un panneau m'indiquant "Débordement de la pile ......." puis Excel à crashé. Ayant tester la même macro sur 2 machines différentes sous seven Pro et Excel 2013 pour le même résultat, je me suis tourné vers des pros, pour savoir si l'erreur était mienne ou déjà rencontrée et donc facilement solvable.

    Pour Sebphyto

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    Private Sub Init_UF_Choix()
        OptionButton_Monter.Value = False
        OptionButton_Descendre.Value = False
        'OptionButton_Quitter.Value = True
    End Sub
     
    Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
            UF_Choix.Hide
            Select Case LCase(Chr(KeyAscii))
                Case "m":
                    OptionButton_Monter_Click
                    UF_Choix.Show
                Case "d":
                    OptionButton_Descendre_Click
                    UF_Choix.Show
                Case "q":
                    OptionButton_Quitter_Click
                Case Else
                    Rep = MsgBox("Touche activée = " & LCase(Chr(KeyAscii)), vbInformation, "TEST CLAVIER")
            End Select
    End Sub
    Private Sub OptionButton_Descendre_Click()
        'Selection de la ligne du dessous
        If (ActiveCell().Row < 50) Then
            ActiveCell().Offset(1, 0).Select
        End If
        If (ActiveCell().Row > 10) Then
            ActiveWindow.ScrollRow = ActiveCell().Row - 10
        End If
        Init_UF_Choix
    End Sub
    Private Sub OptionButton_Monter_Click()
        'Selection de la ligne du dessus
        If (ActiveCell().Row > 1) Then
            ActiveCell().Offset(-1, 0).Select
        End If
        If (ActiveCell().Row > 10) Then
            ActiveWindow.ScrollRow = ActiveCell().Row - 10
        End If
        Init_UF_Choix
    End Sub
     
    Private Sub OptionButton_Quitter_Click()
        UF_Choix.Hide
        'Unload (UF_Choix)
        Worksheets("RECAP").Activate
    End Sub
    L'initialisation de la UserFormer ce fait par clic sur une ellipse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Ellipse1_Cliquer()
        UF_Choix.Show
    End Sub

  7. #7
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Salut Fifo,

    A première vue, est-ce que ton code ci dessus fonctionne?
    Car l'appel de la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Init_UF_Choix()
    N'est pas correcte ici
    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
    21
    22
    Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
            UF_Choix.Hide
            Select Case LCase(Chr(KeyAscii))
                Case "m":
                    OptionButton_Monter_Click
                    UF_Choix.Show
                Case "d":
                    OptionButton_Descendre_Click
                    UF_Choix.Show
                Case "q":
                    OptionButton_Quitter_Click
                Case Else
                    Rep = MsgBox("Touche activée = " & LCase(Chr(KeyAscii)), vbInformation, "TEST CLAVIER")
            End Select
    End Sub
     
     
    Private Sub OptionButton_Quitter_Click()
        UF_Choix.Hide
        'Unload (UF_Choix)
        Worksheets("RECAP").Activate
    End Sub
    ta sub se nomme "Init_UF_Choix" et tu l'appelles "UF_Choix", un peu partout dans d'autres sub???

    Regarde ce point et soit cohérent, après ce ne peut pas forcément résoudre ton problème mais bon ....
    seb

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut
    Bonjour Sebphyto,
    En rajoutant simplement "UF_Choix." dans Init_UF_Choix au nom des boutons cela continu de bloquer mais au moins Excel ne crash plus!...
    Merci pour ce point là.
    Par contre en changeant Init_UF_Choix en Userform_Initialize() cela ne bloque plus! par contre les raccourcis claviers eux ne sont plus fonctionnelles!!

  9. #9
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour à tous,

    @ Sebphyto
    ta sub se nomme "Init_UF_Choix" et tu l'appelles "UF_Choix", un peu partout dans d'autres sub???
    En fait le userform s'appelle bien "UF_Choix" et fifo78370 à appelé une procédure "Init_UF_Choix"
    c'est peut-être perturbant mais tout à fait fonctionnel car il aurait pu appeler sa procédure "toto" mais nom moins parlant.

    @ fifo78370 : essaie de mettre en commentaire tes hide/show pour voir si tu plantes aussi.

    Bien cordialement

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

Discussions similaires

  1. Voir un userform sans voir la feuille excel en arrière-plan
    Par nico0007 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/11/2007, 19h47
  2. Déssiner Graphes Access puis Exporter vers Excel
    Par mamid1706 dans le forum Access
    Réponses: 1
    Dernier message: 17/10/2007, 15h06
  3. [VBA-E] Ouvrir un UserForm au lancement du fichier Excel
    Par gantec dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/02/2007, 14h37
  4. [VBA-E] Ouvrir un Userform à l'ouverture du fichier excel
    Par dimitrios dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/12/2006, 16h35
  5. [VBA]Userform mobile dans une feuille excel
    Par fikren dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/10/2005, 15h45

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