Interdire la saisie de doublon dans USF

Bonjour,

Après des recherches infructueuses sur le net, je vous pose mon souci. Je souhaiterai interdire la saisie d'un doublon dans un USF lors de la validation ?

Et deuxièmement, je n'arrive pas à réduire la longueur des menus déroulants dans l'USF.

Merci d'avance.

Titouan.

93test-1.xlsm (60.61 Ko)

Bonjour

Pour le deuxièmement, essaie de changer ce code :

Private Sub UserForm_Initialize()
With Sheets("mouvements") 'prend en compte l'onglet "mouvements"
    'alimentation dynamique des comboboxes
    ComboBox1.List = .Range("X2:X3" & .Cells(Application.Rows.Count, 1).End(xlUp).Row).Value
    ComboBox2.List = .Range("Y2:Y4" & .Cells(Application.Rows.Count, 1).End(xlUp).Row).Value
    ComboBox3.List = .Range("Z2:Z5" & .Cells(Application.Rows.Count, 1).End(xlUp).Row).Value
    ComboBox4.List = .Range("AA2:AA3" & .Cells(Application.Rows.Count, 1).End(xlUp).Row).Value
    ComboBox5.List = .Range("AB2:AB4" & .Cells(Application.Rows.Count, 1).End(xlUp).Row).Value
End With 'fin de la prise en compte de l'onglet "mouvements"
End Sub

par celui-ci :

Private Sub UserForm_Initialize()
With Sheets("Mouvements") 'prend en compte l'onglet "mouvements"
    'alimentation dynamique des comboboxes
    ComboBox1.RowSource = "Mouvements!X2:X" & .Cells(Rows.Count, 24).End(xlUp).Row
    ComboBox2.RowSource = "Mouvements!Y2:Y" & .Cells(Rows.Count, 25).End(xlUp).Row
    ComboBox3.RowSource = "Mouvements!Z2:Z" & .Cells(Rows.Count, 26).End(xlUp).Row
    ComboBox4.RowSource = "Mouvements!AA2:AA" & .Cells(Rows.Count, 27).End(xlUp).Row
    ComboBox5.RowSource = "Mouvements!AB2:AB" & .Cells(Rows.Count, 28).End(xlUp).Row
End With 'fin de la prise en compte de l'onglet "mouvements"
End Sub

Merci GMB, ça marche.

Concernant le premier point , le critère du doublon se fait sur l'immatriculation du véhicule colonne H de la feuille mouvement.

J'ai fait plusieurs tentatives avec différents code mais rien de rien. Il s’obstine à ne pas fonctionner.

Merci.

Re bonjour

Le plus simple, et sans remettre tout en cause, c'est de supprimer la ligne que tu viens de mettre s'il y a doublon...Il suffit de rajouter une seule ligne à ta macro.

With Sheets("Mouvements")
  Lg = .Range("h" & Rows.Count).End(xlUp).Row
  For J = Lg To 1 Step -1
    If Me.TextBox4 = .Range("h" & J) Then
     MsgBox "Le véihcule existe déjà"
        Rows(Lg).Delete Shift:=xlUp
       Exit Sub
     End If
    Next J
  End With

Et puis, un conseil : change les valeurs des propriétés "TabIndex" de tes ComboBox et fais les suivre, de 1 à 10 et 11 pour le bouton Valider.

C'est beaucoup plus agréable lors de la saisie car on va de l'un à l'autre dans l'ordre avec la touche Tabulation !

Merci pour le conseil des Combobox du coup, j'ai vu un autre bug lors de la saisie.

J'ai modifié le code et maintenant il marque systématiquement que le véhicule existe déjà :

Bonjour

Tu remets l'USF à zéro puis tu effectues un test sur le TextBox4 : il est forcément nul !

Tu dois faire cette remise à zéro après :

Dim c As Control
'For Each c In Me.Controls 'remise à zéro USF
     'Select Case TypeName(c)
        'Case "TextBox"
        ' c.Value = ""
        'Case "CheckBox"
         'c.Value = False
        'Case "ListBox", "ComboBox"
         'c.ListIndex = -1
     'End Select
'Next c

Dim Maintenant As Date 'détecte les doublons
Dim J As Long
Dim Lg As Long
Dim Ws As Worksheet
With Sheets("Mouvements")
  Lg = .Range("h" & Rows.Count).End(xlUp).Row
    For J = Lg - 1 To 1 Step -1
        If Me.TextBox4 = .Range("h" & J) Then
            MsgBox "Le véihcule existe déjà"
            Rows(Lg).ClearContents 'Delete Shift:=xlUp
            Exit Sub
        End If
    Next J
  End With

For Each c In Me.Controls 'remise à zéro USF
     Select Case TypeName(c)
        Case "TextBox"
         c.Value = ""
        Case "CheckBox"
         c.Value = False
        Case "ListBox", "ComboBox"
         c.ListIndex = -1
     End Select
Next c
End Sub
158test-1-v1.xlsm (51.71 Ko)

oups bien sur quelle nouille, c'est le manque de sommeil

Dans ce sens ça marche impecc.

Merci pour ton aide.

Rechercher des sujets similaires à "interdire saisie doublon usf"