1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

comment inhiber TextBox1_Exit[RESOLU]

Discussion dans 'Forum Excel' démarrée par cp4, 10 Janvier 2019.

  1. cp4

    cp4 XLDnaute Impliqué

    Inscrit depuis le :
    7 Novembre 2015
    Messages :
    517
    "J'aime" reçus :
    32
    Utilise:
    Excel 2010 (PC)
    Bonjour,
    J’ajoute, modifie et supprime des données via une userform, en effectuant mon choix via 3 checkboxs.
    Pour l’ajout et la suppression tout fonctionne bien.
    Mais la modification me pose problème. Pour l’ajout, j’ai utilisé TextBox1_Exit pour vérifier que la textbox1 (numéro de référence) n’est pas vide et n’existe pas dans la BD. Donc pour les modifications, je sélectionne une ligne dans la listbox qui a pour effet des remplir des textboxs. La textbox1 étant la référence, elle ne doit pas être modifiée mais dès que je clique dans une autre textbox à modifier, la procédure Private Sub TextBox1_Exit est exécutée et par conséquent ne peux rien modifier.
    Code (Visual Basic):
    Private Sub TextBox1_Exit(ByVal cancel As MSForms.ReturnBoolean)
        ligne = WS.Range("A" & Rows.Count).End(xlUp).Row
        Set Rng = WS.Range("A2:G" & ligne)
        Set X = Rng.Columns(1).Find(What:=Val(TextBox1), LookAt:=xlWhole)

        If Len(TextBox1) < 13 Then
            MsgBox ("Vous devez saisir un numéro de code valide." & Chr(10) & Chr(10) & "Pour cela, saisissez 13 chiffres.")
            Me.TextBox1 = "": Me.TextBox1.SetFocus
        End If

        If Not X Is Nothing Then
            MsgBox code & " existe déjà!"
            cancel = True
        End If
    End Sub

    Private Sub OptModifier_Click()
       Me.CmdValider.Caption = "MODIFIER"
       Me.CmdValider.BackColor = vbCyan
    End Sub
     
    Comment puis-je contourner ce problème ?

    Merci.
    ps: cancel=true est utiliser pour le bouton Quitter userform (unload me)
     
  2. Chargement...


  3. youky(BJ)

    youky(BJ) XLDnaute Barbatruc

    Inscrit depuis le :
    4 Février 2009
    Messages :
    2567
    "J'aime" reçus :
    129
    Sexe :
    Masculin
    Habite à:
    69 CALUIRE
    Utilise:
    Excel 2016 (PC)
    Salut bien cp4,
    Je ferais comme ceci
    Bruno
    Code (Visual Basic):

    Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If Len(TextBox1) = 13 Then
    'cherche le code
       ligne = WS.Range("A" & Rows.Count).End(xlUp).Row
        Set Rng = WS.Range("A2:G" & ligne)
        Set X = Rng.Columns(1).Find(What:=Val(TextBox1), LookAt:=xlWhole)
    If Not X Is Nothing Then
            MsgBox code & " existe d?j?!"
    Else
    'n'existe pas..... traitement
    End If
    End If
    End Sub
     
     
  4. Lolote83

    Lolote83 XLDnaute Accro

    Inscrit depuis le :
    6 Février 2010
    Messages :
    1108
    "J'aime" reçus :
    85
    Sexe :
    Masculin
    Habite à:
    Draguignan
    Utilise:
    Excel 2010 (PC)
    Salut CP4,
    Si tu utilise une variable qui correspond à ton choix de modifier ton UserForm, cela devrait le faire.
    Par exemple :
    Private Sub OptModifier_Click()
    xOnModifie=true
    Me.CmdValider.Caption = "MODIFIER"
    Me.CmdValider.BackColor = vbCyan
    End Sub

    Et mettre cette le résultat de cette variable dans ton Text1.exit
    Private Sub TextBox1_Exit(ByVal cancel As MSForms.ReturnBoolean)
    if xOnModifie=true then exit sub


    la suite de ton code

    End Sub
    Tout ça si j'ai bien compris la consigne.
    @+ Lolote83
     
    cp4 aime votre message.
  5. cp4

    cp4 XLDnaute Impliqué

    Inscrit depuis le :
    7 Novembre 2015
    Messages :
    517
    "J'aime" reçus :
    32
    Utilise:
    Excel 2010 (PC)
    Bonjour @youky(BJ) :), @Lolote83 :),

    Je vous remercie pour votre aide.
    La proposition de youky est exploitable mais je voudrais compléter mon code.
    Donc c'est la proposition de Lolote qui me convient.
    Il y a des jours où je me noie dans un verre d'eau. C'était si simple.

    Encore merci à vous deux.;)

    Bonne journée.:D
     

Partager cette page