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 :

Erreur Automation sur Userform.show sur execution Unload Userfor [XL-2019]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Rertraité
    Inscrit en
    Juillet 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Rertraité

    Informations forums :
    Inscription : Juillet 2019
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Erreur Automation sur Userform.show sur execution Unload Userfor
    Bonjour

    Ci joint une application de test qui résume le problème auquel je suis confronté


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Comportement()
    '
    ' Comportement Macro
    '
    ' Touche de raccourci du clavier: Ctrl+a
    '
        UserForm1.Show
        MsgBox " Fin OK"
     
    End Sub

    L'Userform1 est constitué d'un cadre unique qui contient une zone de texte et un bouton auxquels sont associés les codes suivants

    Pour le bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub CommandButton1_Click()
     
    MsgBox "CouCou Bouton"
    Unload UserForm1
     
    End Sub
    Pour la Textbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
     
    MsgBox "TextBox1 = " & TextBox1
    Unload UserForm1
     
    End Sub
    Lorsque j’appuie sur le bouton tout se passe bien (clôture de l'UserForm1 et fin de la macro)

    Lorsque je passe par la zone de texte j'ai un plantage avec message d'erreur 'erreur d’exécution '-0214741784818005(800 10 108)' __ Erreur Automation au niveau de la ligne Userfom1.show de la macro Comportement.

    Les messages s'affichent bien dans les deux cas.

    Malgré de nombreuses recherches et tentatives diverses et variées je n'ai aucune idée du pourquoi de ce comportement.

    Si vous avez une idée, je suis preneur et vous en remercie par avance.

    Cordialement

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    N'est-ce pas ceci que vous cherchez à faire: Ouvrir le USERFORM, saisir une valeur dans la TEXTBOX.
    A la suite du clic sur le bouton, le contenu de la TEXTBOX s'affiche dans un message et le USERFORM se ferme.
    SI c'est cela la macro "Private Sub TextBox1_BeforeUpdate" est inutile.
    et "Private Sub CommandButton1_Click" devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
        MsgBox "TextBox1 = " & TextBox1
        Unload UserForm1
    End Sub
    Cdlt

  3. #3
    Candidat au Club
    Homme Profil pro
    Rertraité
    Inscrit en
    Juillet 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Rertraité

    Informations forums :
    Inscription : Juillet 2019
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Erreur Automation sur Userform.show sur execution Unload Userfor
    Bonjour

    Merci de votre réponse, mais ce n'était pas exactement cela le but de ma question.

    La solution que vous me proposez marche effectivement et est celle qui est implantée depuis le début dans mon application.

    Ce que je cherche à faire est de clôturer le USERFORM soit par bouton OK (solution déjà implémentée et qui fonctionne), soit par Retour Chariot ou Tabulation sur une des TEXTBOX de ma USERFORM qui comporte plusieurs COMBOBOX et TEXTBOX.

    C'est en constatant le problème sur la version complète de mon application que j'ai mis en œuvre le petit test que je soumets au forum.

    En espérant être plus clair, ma question est : pourquoi une clôture de USERFORM à partir d'une procédure événement BeforeUpdate de TEXTBOX ne fonctionne pas alors qu'elle fonctionne lorsqu'elle est utilisée de la même façon par une procédure événement click d'un BOUTON, et comment faire si je veux utiliser cette fonctionnalité.

    Cordialement

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyCode = 13 Then
            MsgBox "TextBox1 = " & TextBox1
            Unload Me
        End If
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Candidat au Club
    Homme Profil pro
    Rertraité
    Inscrit en
    Juillet 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Rertraité

    Informations forums :
    Inscription : Juillet 2019
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour

    Merci beaucoup pour la solution proposée qui fonctionne.

    Par contre, et par curiosité intellectuelle, j'aurai aimé savoir pourquoi un Unload de USERFORM à partir d'un BeforeUpDate de TEXTBOX ne fonctionne pas.
    Cela me chagrine d'activer la procédure KeyDown à chaque caractère rentré alors que je n'ai effectivement besoin de prendre la main qu'une fois le texte complet disponible !

    Pour information et n'étant pas un habitué des forum, est-ce que je peux laisser la question comme non résolue un ou deux jours de plus, pour le cas où quelqu'un aurait mon explication, ou est-ce que je dois d'ores et déjà marquer celle-ci comme résolue pour ne pas encombrer le forum ?

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    n'ai effectivement besoin de prendre la main qu'une fois le texte complet disponible !
    c'est pas le before update qui va savoir sir le texte complet est disponible
    imagine tu tape "Bon" a la place de Bonjour" et tu sélectionné autre chose dans le UserForm ety ben ton before update est déclenché alors que le texte n'est pas complet
    tandis qu' avec le keydown c'est toi qui décide quand le texte est complet puisque c'est toi qui dit bye bye avec la touche ENTER

    pour le before update je vais voir mais ca me parait normal puisque quand tu met du code dans cet événement il est sensé s'exécuter alors que toi tu ferme le UserForm et donc le vire de la mémoire

    je dis ca (c'est de la supputation)je vais voir pour confirmer

    Cela me chagrine d'activer la procédure KeyDown
    ben il faut bien pour savoir si c'est la touche enter

    edit:
    je confirme les évènement before et after (Update) demande une latence en tre le lostfocus et le getfocus du control suivant ;et si il n'y a que le textbox dans le UserForm l'évènement n'est pas déclenché

    en gros il faut qu'un autre control prenne le focus pour que vba puisse exécuter du code dans cet évènement fait le test tu verra
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Candidat au Club
    Homme Profil pro
    Rertraité
    Inscrit en
    Juillet 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Rertraité

    Informations forums :
    Inscription : Juillet 2019
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Ok

    Merci pour cette réponse complète qui suffit amplement pour continuer la mise en place de mon application.

    Je n'avais pas effectivement pas bien vu la condition génératrice de l'événement beforeUpdate. Les difficultés semblent effectivement être dans le séquencement et les délais entre les différentes actions.

    Je vais donc poursuivre qui est quasiment terminée et encore merci pour le coup de main.

    Par curiosité je vais quand même continuer des tests pour essayer de mieux maitriser le comportent "temps réel" de VBA.

    Salutations.

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

Discussions similaires

  1. [XL-2007] Erreur Automation sur ie.document
    Par nanousik dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 15/07/2014, 16h10
  2. erreur automation" sur macro qui fonctionnait trés bien !
    Par Mathieu51 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/06/2011, 10h21
  3. Erreur 6533 sur execution de procédure stockée
    Par Arnard dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 23/07/2009, 20h26
  4. Erreur automation sur la création d'un ODBC en VBScript
    Par popsmelove dans le forum VBScript
    Réponses: 0
    Dernier message: 20/05/2008, 17h15
  5. [PLSQL] Erreur 00922 sur Execute immediate
    Par Henrisbg dans le forum Oracle
    Réponses: 5
    Dernier message: 17/11/2005, 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