comment inhiber TextBox1_Exit[RESOLU]

  • Initiateur de la discussion Initiateur de la discussion cp4
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

cp4

XLDnaute Barbatruc
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.
VB:
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)
 
Salut bien cp4,
Je ferais comme ceci
Bruno
VB:
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
 
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
 
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.😀
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
281
Réponses
4
Affichages
243
Réponses
3
Affichages
665
Réponses
2
Affichages
809
Réponses
5
Affichages
661
Retour