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 !

raoulruiz

XLDnaute Nouveau
Bonjour,

Je suis nouveau sur de forum.
J'ai le besoin pour mon travail de développer un formulaire de saisie et de modification d'une base de données.
J'ai quasiment fini mais bloque sur une problématique.
J'ai un text box sur lequel je souhaite exercer plusieurs contrôles de saisie: type de caractères, nombre de caractère et impossibilité de créer une référence en doublon.
Je souhaite que la donnée ne puisse être ajouter dans la base de donnée uniquement si toutes les conditions sont remplies (ce qui n'est pas le cas dans mon code)
Par ailleurs, je souhaite que le contrôle s'applique soit avant l'actionnement du bouton ajouter ou lors du passage sur un autre champ
Comment peut on faire pour imbriquer des "évènements"?
J'espère avoir réussi à être compréhensible..

Ci-dessous mon code

'*************************************************
'FORMAT REF CONTRAT
Vérification du format de saisie et activation du bouton ajout
'*************************************************
Private Sub TextBox_ref_Change()
lblMessage = ""
Dim Formatage As String, LenT As Integer
Const CH As String = "11-AAA-1111"
Const COMP As String = "##[-][a-zA-Z][a-zA-Z][a-zA-Z][-]####"

LenT = Len(TextBox_Ref.Value)
If LenT <= Len(CH) Then
If LenT > 0 Then
Formatage = TextBox_Ref.Value & Right(CH, Len(CH) - LenT)
If LenT = 11 Then

CommandButton_Ajout.Enabled = True 'Active le bouton
Else
CommandButton_Ajout.Enabled = False 'Maintient le bouton désactiver
End If
If Not Formatage Like COMP Then
lblMessage = "votre saisie doit avoir le format 00-XXX-0000"
TextBox_Ref.Value = Left(TextBox_Ref.Value, LenT - 1)
End If
End If
Else
TextBox_Ref.Value = Left(TextBox_Ref.Value, LenT - 1)
lblMessage = "votre saisie doit avoir le format 00-XXX-0000"
End If


End Sub

'****************************************
'FORMAT REF CONTRAT
'Limite le nombre de caractère autorisés
'****************************************
Private Sub TextBox_Ref_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("1234567890ACHDVPTE-", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

'************************************************************
'prodédure pour éviter doublons
'************************************************************
Private Sub TextBox_Ref_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim Onglet As Worksheet 'déclaration de la variable onglet
Dim COL As Byte 'déclaration de la variable COLonne
Dim DL As Integer 'déclaration de la variable Dernière Ligne
Dim TV As Variant 'déclaration de la variable Tableau de Valeurs
CommandButton_Ajout.Enabled = False 'Maintient le bouton désactiver

Set Onglet = Sheets("Donnees")
COL = 1
DL = Onglet.Cells(Application.Rows.Count, COL).End(xlUp).Row 'définit la dernière ligne DL de la COLonne de l'Onglet
TV = Onglet.Range(Onglet.Cells(1, COL), Onglet.Cells(DL, COL)) 'définit le Tableau des Valeurs

For i = 2 To DL 'boucle sur toutes les lignes I du tableau des valeurs TV
If CStr(TV(i, 1)) = Me.TextBox_Ref.Value Then 'si la donnée de la boucle (convertie en texte) est égale à la valeur de textbox_ref
Cancel = True
MsgBox ("contrat existant")
Me.TextBox_Ref = ""
CommandButton_Ajout.Enabled = False 'Maintient le bouton désactiver
With Me.TextBox_Ref
.SelStart = 0
.SelLength = Len(.Value)
End With
Exit For
End If
Next

End Sub
 

Pièces jointes

- 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
4
Affichages
361
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
79
Réponses
4
Affichages
146
Réponses
2
Affichages
405
Réponses
32
Affichages
1 K
Réponses
3
Affichages
240
Réponses
2
Affichages
375
Réponses
3
Affichages
599
Retour