Probleme avec cancel = true

Bonjour,

J'ai finit la première partie de mon projet et j'ai donc décidé d'améliorer mon code en limitant le nombre de copier coller, et de if en cascade.

Dans mon useform je contrôle l'existence de plusieurs champ, est'il correct? nécessaire ? plus avantageux? de contrôler de cette manière et non de la maniéré classique, copier coller a chaque fois et changer juste les lettre et le message?

Private Sub Text_ad2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

verif_existence "Cette adresse est déjà utilisée!", "Text_ad2", "G"

End Sub

Sub verif_existence(Nom As String, Text As String, Lettre As String, Cancel As Boolean)

Dim rg As Range

Set rg = Sheets("Repertoire").Range(Lettre & ":" & Lettre).Find(Me.Controls(Text))

If Not rg Is Nothing Then

MsgBox Nom

Cancel = True -----------------------> ICI J'AI MON SOUCIE

End If

End Sub

Avant d'utiliser cette fonction de contrôle, je pouvais ainsi déclarer mon sub de la sorte :

Private Sub Text_nom_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

et ainsi tant que l'utilisateur n'a pas rectifié son erreur, il ne pouvait pas changer de champ, maintenant je ne sais plus comment faire car mon cancel ne fonctionne pas et plante même defois,

SMerci a vous

Bonjour,

ton cancel=true doit être dans le Private Sub Text_ad2_BeforeUpdate

Envisage plutôt une fonction comme :

Function verif_existence(Nom As String, Text As String, Lettre As String) ok As Boolean

dont tu testes le retour ok (true ou false) pour le faire ou non.

eric

merci je n'y avais pas pensé!

Rechercher des sujets similaires à "probleme cancel true"