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 :

AddressOf: utilisation incorrecte de la propriété


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2011
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par défaut AddressOf: utilisation incorrecte de la propriété
    Bonjour à tous !

    Mon objectif: J'ai une Userform dans laquelle j'ai des TextBox. Lorsque l'utilisateur rentre une valeur dans chaque Textbox, il faut lancer un évènement de vérification pour voir si la donnée rentrée est bien valide.
    Pour cela, je veux utiliser l'évènement LostFocus.

    J'ai mis le code suivant dans la Userform pour un premier test:

    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
     
    '*********************************************
    '****** INITIALISATION DE LA USERFORM
    '*********************************************
    Private Sub UserForm_Initialize()
     
        Dim element As Control
     
        For Each element In Usfrm_Wizard.Controls
            If TypeName(element) = "TextBox" Then
               AddHandler element.LostFocus, AddressOf txtBoxLostFocusHandler
            End If
     
        Next element
    End Sub
     
     
    Private Sub txtBoxLostFocusHandler(ByVal sender As Object, ByVal e As EventArgs)
    MsgBox "LostFocus"
    End Sub
    Mais j'ai une erreur de compil (tout est dans le titre).

    J'ai essayé d'appliquer ça en vain: https://bytes.com/topic/visual-basic...ostfocus-event

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Il est plus que manifeste que :
    - 1) tu copies/colles n'importe quoi trouvé je ne sais où
    - 2) tu ignores même en quel langage est écrit ce que tu copies/colles
    avec, pour conséquence :
    - des procédures évènementielles qui n'existent pas sous VBA/Excel
    Veux-tu bien s'il de plait cliquer (en mode création) sur ta textbox et regarder les évènements qui te sont proposés dans la partie droite de l'éditeur. LostFocus est absent aux abonnés. Un autre évènement est, par contre, parfaitement adapté et son nom est plus qu'explicite.
    Reviens s'il te plait après ce petit effort.

  3. #3
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2011
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par défaut
    Malgré l'agressivité de ta réponse, je dois reconnaître que tu as raison...
    J'ai donc utilisé l'évènement "Exit" pour chaque textBox.


    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
     
    Private Sub tbx_engine_min_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     
     
        Static tbx_engine_min_1 As String
     
        With tbx_engine_min
     
            If .VALUE = "" Then
                tbx_engine_step.Enabled = False
                tbx_engine_min_1 = ""
                Exit Sub
            End If
     
            If Not IsNumeric(.VALUE) Then
                MsgBox "Sorry, only numbers accepted."
                .VALUE = tbx_engine_min_1
                Exit Sub
            End If
     
            If val(.VALUE) < 0 Then
                MsgBox "Please enter a positive value."
                .VALUE = tbx_engine_min_1
                Exit Sub
            End If
     
            If Not tbx_engine_max.VALUE = "" Then
                If val(.VALUE) > val(tbx_engine_max.VALUE) Then
                    MsgBox "Min must be less than Max."
                    .VALUE = tbx_engine_min_1
                    Exit Sub
                Else
                    tbx_engine_min_1 = .VALUE
                    tbx_engine_step_Change
                    tbx_engine_step.Enabled = True
                End If
            End If
     
        End With
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Tu vois de l' "agressivité" lorsque l'on te met le nez dans la confiture ? Désolé, mais je suis ainsi fait et je réagirai toujours ainsi en présence de ce genre d' "approche" du développement.
    Bonne chance.

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour wilfrujules,

    A quoi correspond

    t?

    J'aurais personnellement opté pour une méthode , ce qui éviterait les répétés.

    2 tutoriels de référence concernant les formulaires sont reportés dans cet espace documentaire

    Pour les amateurs.
    Je me suis toujours demandé pourquoi l'évènement Exit est plus compliqué à gérer par les modules de classe.
    C'est possible, certes, mais le développement est plus élaboré.

  6. #6
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2011
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par défaut
    J'ai modifié entre temps dsl.

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
     
    Private Sub tbx_engine_min_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     
        'WaitTyping
        Static tbx_engine_min_1 As String
     
        With tbx_engine_min
     
            If .VALUE = "" Then
                tbx_engine_step.Enabled = False
                tbx_engine_min_1 = ""
                Exit Sub
            End If
     
            If Not IsNumeric(.VALUE) Then
                MsgBox "Sorry, only numbers accepted."
                .VALUE = tbx_engine_min_1
                Exit Sub
            End If
     
            If val(.VALUE) < 0 Then
                MsgBox "Please enter a positive value."
                .VALUE = tbx_engine_min_1
                Exit Sub
            End If
     
            If Not tbx_engine_max.VALUE = "" Then
                If val(.VALUE) > val(tbx_engine_max.VALUE) Then
                    MsgBox "Min must be less than Max."
                    .VALUE = tbx_engine_min_1
                    Exit Sub
                Else
                    tbx_engine_min_1 = .VALUE
                    Verif_tbx_engine_step
                    tbx_engine_step.Enabled = True
                End If
            End If
     
        End With
    End Sub
     
     
    Private Sub Verif_tbx_engine_step()
        'WaitTyping
        Dim min As Double
        min = val(tbx_engine_min.VALUE)
        Dim max As Double
        max = val(tbx_engine_max.VALUE)
        Dim step As Double
     
        Static tbx_engine_step_1 As String
     
        With tbx_engine_step
            step = val(.VALUE)
            If .VALUE = "" Then
                cbx_engine_direction.Enabled = False
                tbx_engine_step_1 = ""
                tbx_engine_counts.VALUE = ""
                Exit Sub
            End If
     
            If (max - min) Mod step = 0 Then
                tbx_engine_step_1 = .VALUE
                tbx_engine_counts.VALUE = (max - min) / step + 1
                cbx_engine_direction.Enabled = True
            Else
                MsgBox "Please enter a correct step."
                .VALUE = tbx_engine_step_1
            End If
        End With
    End Sub
     
     
    Private Sub tbx_engine_step_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     
         Verif_tbx_engine_step
    End Sub

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

Discussions similaires

  1. [XL-2010] Range.Columns.Count - Erreur de compilation - Utilisation incorrecte de la propriété
    Par Dédé6621 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/10/2016, 14h23
  2. [VB6] erreur de compilation:utilisation incorrecte du mot clé New
    Par fouf_01 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 17/05/2006, 16h22
  3. erreur : utilisation incorrecte du mot clé
    Par StyleXP dans le forum Bases de données
    Réponses: 3
    Dernier message: 22/02/2006, 09h24
  4. Utilisation incorrecte de Null ?
    Par illight dans le forum Access
    Réponses: 2
    Dernier message: 23/11/2005, 10h27
  5. [PROCEDURE STOCKEE]Utilisation incorrecte de INSERT
    Par BaronSamdi dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 11/03/2004, 16h26

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