Eviter doublons sur textbox

CMoa

XLDnaute Occasionnel
Bonjour le forum
Comment modifier cette macro pour éviter les doublons dans les textbox 1 to 7.Si doublon trouvé : effacer les textbox.

Sub textbox_identiques()
For i = 1 To 7
If Me.Controls("textbox" & i).Value = Controls("textbox" & i).Value Then
Me.Controls("textbox" & i + 1).Value = ""
End If
Next i
MsgBox "Deux textbox identiques!", vbCritical
End Sub

J'ai tout essayé sans succès.
Merci pour votre aide.
 

jp14

XLDnaute Barbatruc
Re : Eviter doublons sur textbox

Bonjour

Une solution
Une procédure paramétrable

Code:
Private Sub textbox_identiques(nutextbox As Byte, ok As Boolean)
Dim i As Byte
For i = 1 To 7
    If i <> nutextbox Then
if Me.Controls("textbox" & i).Value <> "" then
        If Me.Controls("textbox" & nutextbox).Value = Me.Controls("textbox" & i).Value Then
            TextBox4.Value = ""
            MsgBox "vous avez deux textbox avec la même valeur !", vbCritical
            Me.Controls("textbox" & nutextbox).Value = ""
            Me.Controls("textbox" & nutextbox).SetFocus
            ok = Not ok
            Exit Sub
        End If
end if
    End If
Next i

End Sub
Appel de la procédure par chaque textbox
Code:
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim resul As Boolean
resul = False
Call textbox_identiques(4, resul)
If resul = True Then Exit Sub ' si resul = true on a des textbox identiques
End Sub

A tester

JP
 

CMoa

XLDnaute Occasionnel
Re : Eviter doublons sur textbox

Bonsoir le forum

Merci Jp14 pour la rapidité de ta réponse.
Ta macro fonctionne à merveille mais ne peut-on pas faire + court?
J'ai recopier la seconde partie autant de fois que de textbox - 1.
 

jp14

XLDnaute Barbatruc
Re : Eviter doublons sur textbox

Bonsoir

Pour faire plus court il faut utiliser les procédures de classes, ce n'est pas trop mon domaine.

Mon problème était de savoir qui lance la procédure, cela dépend de l'userform.
Rien n'empèche de lancer la procédure du dernier Textbox, dans ce cas il faut écrire
Call Call textbox_identiques(7, resul)
Call textbox_identiques(6, resul)
..............................


JP
 

jp14

XLDnaute Barbatruc
Re : Eviter doublons sur textbox

Bonsoir

Elle permet d'avoir un retour d'information.

Principe
On positionne la valeur "resul"
resul = False
' appel de la procédure, "resul" est passé a la procédure par référence (Byref), c'est à dire son adresse
Call textbox_identiques(4, resul)

Private Sub textbox_identiques(nutextbox As Byte, ok As Boolean)
Dans la procédure cette variable porte le nom de ok, elle pointe sur la même zone mémoire que resul
Si on trouve un doublon on positionne la variable booléenne Ok en utilisant la fonction not (fonction qui inverse une valeur).

Cette méthode permet si on le désire utiliser l'informationdonnée par "resul" pour afficher un message ou lancer une procédure.

Si cette fonction n'est pas utile il suffit de supprimer les codes;

N'ayant pas d'information sur la gestion de l'usf j'ai introduit cette notion.

JP
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 554
Messages
2 089 535
Membres
104 205
dernier inscrit
mehaya63