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 mis à jour qu'au premier lancement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    technicien
    Inscrit en
    Décembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : technicien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2019
    Messages : 2
    Par défaut Userform mis à jour qu'au premier lancement
    Bonjour,

    J'ai un userfom qui est mis à jour seulement à son premier lancement, malgré l'utilisation de activate. L'exécution se bloque sur l'affichage vide de l'userform malgré que les champs soit renseigné de bonne valeur (espion). Il n'y a pas d'erreur d'exécution. Une pause de la macro s'effectue sur la ligne de lancement de l'userform (en rouge dans mon code). Seul l'arrêt de la macro me redonne la main sur Excel.

    Environnement
    1 userform (accueil) avec 2 boutons lançant chacun de la même manière 2 userform (ajout et commande). Des routines de masquages et d'affichage de la feuille sont mise en place. Le lancement de userfom1 (Ajout) fonctionne correctement, mais le second (Commande) n'est traité qu'à la première exécution.

    Pour information, l'application est développé sous Excel2010 mais doit fonctionner sous Excel2007.

    Quel peut-être le problème ?

    Userform Accueil
    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
    Private Sub BP_AjoutNom_Click()
        Application.ScreenUpdating = True
        Call ShowExcel
        Sheets("Liste").Select
        Me.Hide
        Load UF_Ajout
        UF_Ajout.Show
    End Sub
    
    Private Sub BP_Modif_Commande_Click()
        Application.ScreenUpdating = True
        Call ShowExcel
        Sheets("commande").Select
        Me.Hide
        Load UF_Commande
    'ajout suite au bug
        If Me.BP_Modif_Commande.Tag = "true" Then
            'Me.BP_Modif_Commande.Tag = "false"
            'Stop
            MsgBox ("Suite ? un bug en cour de r?solution," + Chr(10) + Chr(13) + "merci de relancer l'application")
            Unload UF_Commande
            Me.Show
        Else
            Me.BP_Modif_Commande.Tag = "true"
            UF_Commande.Show
        End If
    Userform Nom (fonctionnel)
    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
     
    Private Sub UserForm_Initialize()
        Me.FNoFiche.Visible = False
        Me.ERREUR.Visible = False
        Me.BP_Ajout.Caption = "Ajout"
        Me.BP_Recherche.Caption = "Recherche ..."
        Me.CB2.Visible = False
        Me.CB2 = False
        Me.CB2.Tag = "false"
        Me.L1.Visible = False
        Sheets("Liste").Select
        Me.TX_Index = 1
        Call Lock_Champ
    End Sub
     
     
    Private Sub BP_Annule_Click()
        Call Tri_Nom
        Me.Hide
        Unload Me
    End Sub
     
    Private Sub UserForm_Terminate()
        Application.ScreenUpdating = True
        Sheets("Liste").Select
        Cells(3, 1).Select
        ActiveWorkbook.Save
        Call HideExcel
        UF_Accueil.Show
    End Sub
    Userform commande (non fonctionnel)
    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
     
    Private Sub UserForm_Initialize()
        Sheets("Commande").Select
        Me.TX_Index = Cells(1, 1)
        Me.TX_Livraison.Clear
        Me.TX_Livraison.AddItem "Sur Place"
        Me.TX_Livraison.AddItem "A Domicile"
    End Sub
     
    Private Sub UserForm_Activate()
    'ajout suite problème
        Sheets("Commande").Select
        Me.TX_Livraison.Clear
        Me.TX_Livraison.AddItem "Sur Place"
        Me.TX_Livraison.AddItem "A Domicile"
        Me.TX_Index = Cells(1, 1)
    End Sub
     
    Private Sub BP_Ferme_Click()
    ' tri des commandes par date
        If Me.BP_Ferme.Enabled = False Then Exit Sub
     
        If Cells(1, 1) <> 0 Then Call Tri_Commande
        Range("A3:A3").Select
        Unload Me
    End Sub
     
    Private Sub UserForm_Terminate()
    'ferme la fenetre et fait re-apparaitre la fenetre principale
        If Me.BP_Ferme.Enabled = False Then Exit Sub
     
        Application.ScreenUpdating = True
        Sheets("Liste").Select
        Cells(3, 1).Select
        ActiveWorkbook.Save
        Call HideExcel
        UF_Accueil.Show
    End Sub
    routines additionnelles
    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
    49
    50
    51
    52
    53
     
    Sub ShowExcel()
    Dim Fiche As String
     
        Fiche = Appli
        Application.ScreenUpdating = True
        Application.Visible = True
        Application.WindowState = xlMaximized
    'ajout des 3 lignes ci-dessous pour réellement afficher la fenêtre
        Windows(Fiche).Visible = True
        Application.Windows(Fiche).WindowState = xlMaximized
        Application.Windows(Fiche).Activate
     
        If admin Then
            Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
            Application.CommandBars("Formatting").Enabled = True
            Application.CommandBars("Cell").Enabled = True
        Else
            Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
            Application.CommandBars("Formatting").Enabled = False
            Application.CommandBars("Cell").Enabled = False
        End If
        ActiveWindow.Visible = True
    End Sub
     
    Sub HideExcel()
    Dim Fiche As String
     
        Fiche = Appli
        If Not (admin) Then
            Application.Visible = False
            Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
            Application.CommandBars("Formatting").Enabled = False
            Application.CommandBars("Cell").Enabled = False
        End If
    End Sub
     
     
    Function admin() As Boolean
        ret = GetSetting(appname:="SMS", section:="Parametre", Key:="Admin")
        If ret = "1" Then
            admin = True
        Else
            admin = False
        End If
    End Function
     
    Function Appli() As String
        Appli = GetSetting(appname:="SMS", section:="Parametre", Key:="Application")
        If Appli = "" Then
            Appli = "Campagne de SMS.xls"
        End If
    End Function
    Cordialement.

  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
    13 185
    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 : 13 185
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Avant de pouvoir répondre, j'aimerais que tu lèves un doute dans mon esprit dû à l'ambiguïté de nommage des contrôles.
    Le contrôle nommé TX_Livraison dans le formulaire nommé Commande, c'est bien un ComboBox ou un LIstBox ?
    Par contre si comme son préfixe le laisse sous-entendre c'est un TextBox, il ne faut pas chercher plus loin, Clear et AddItem ne sont pas des méthodes de ce contrôle

    Pourquoi as-tu deux procédures événementielles UserForm_Initialize et UserForm_Activate ayant les mêmes instructions. Activate suffit amplement
    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
    Candidat au Club
    Homme Profil pro
    technicien
    Inscrit en
    Décembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : technicien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2019
    Messages : 2
    Par défaut
    Tout d'abord merci pour la réponse rapide.

    TX_Livraison est un ComboBox qui fonctionne correctement au 1er lancement.

    Pour la procedure Actovate, je l'ai ajouté suite à mon problème (au cas où il y aurait eu un problème sur le Unload quand je ferme le formulaire. dans l'état, il y a bien double emploi.

Discussions similaires

  1. [XL-2013] UserForm_Initialize semble ne pas s'exécuter lors du premier lancement de l'UserForm
    Par jespscej dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 13/07/2016, 01h19
  2. Connaitre Nbre Enregistrements Mis à Jour
    Par Daniel MOREAU dans le forum Access
    Réponses: 2
    Dernier message: 28/02/2006, 12h08
  3. Erreur XMLRAD dès le premier lancement
    Par DQD dans le forum XMLRAD
    Réponses: 6
    Dernier message: 20/01/2006, 23h58
  4. récupérer les champs mis à jour
    Par xave dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 06/10/2005, 15h40
  5. pboblème de mis à jour dans une table
    Par koff10 dans le forum Bases de données
    Réponses: 4
    Dernier message: 31/07/2005, 02h17

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