USF : interdire saisie si doublon

Bonjour

Dans un USF destiné à consulter, modifier et créer des éléments d'une base de données, j'ai voulu lors de la création d'une ligne, vérifier qu'on ne puisse pas saisir (dans le textbox nommé CreaNouveauNo) une valeur déjà existante dans la colonne A de la base de données

Pour la création d'une nouvelle ligne, en gros la macro est du type

ligne = Sheets("BDBUDGET").[A65000].End(xlUp).Row + 1
    Sheets("BDBUDGET").Cells(ligne, 1) = Me.CreaNouveauNo
    Sheets("BDBUDGET").Cells(ligne, 2) = Me.ModifTitreBudget
    Sheets("BDBUDGET").Cells(ligne, 3) = Me.ModifInstruction
    Sheets("BDBUDGET").Cells(ligne, 4) = Me.ModifObsBudget
    MsgBox "Nouveau budget enregistré avec succès"

j'ai voulu lors de la création d'une ligne, vérifier qu'on ne puisse pas saisir (dans le textbox nommé CreaNouveauNo) une valeur déjà existante dans la colonne A de la base de données. J'ai donc inséré juste avant les lignes précédentes :

If Application.Match(Me.CreaNouveauNo.Text, [BDBUDGET!A:A], 0) Then
            MsgBox "Budget déjà existant ... Impossible de le créer de nouveau"
            Exit Sub
        End If

Ça arrête bien l'enregistrement de la nouvelle ligne en cas de doublon … mais j'ai maintenant une erreur d'exécution 13 (incompatibilité de type) pour chaque tentative d'enregistrement pourtant valide (c'est-à-dire sans valeur identique dans la colonne A)

Avant, sans cette vérification de doublons, tous les nouveaux enregistrements se passaient pourtant bien …

Une idée ? Merci d'avance

Bonjour,

Essaie avec ce code

Dim Ligne As Long
Dim C As Range
    With Sheets("BDBUDGET")
        Ligne = .Range("A" & Rows.Count).End(xlUp).Row + 1
        Set C = .Columns(1).Find(Me.CreaNouveauNo.Text, , xlValues, xlWhole)
        If C Is Nothing Then
            .Cells(Ligne, 1) = Me.CreaNouveauNo
            .Cells(Ligne, 2) = Me.ModifTitreBudget
            .Cells(Ligne, 3) = Me.ModifInstruction
            .Cells(Ligne, 4) = Me.ModifObsBudget
            MsgBox "Nouveau budget enregistré avec succès"
        Else
            MsgBox "Budget déjà existant ... Impossible de le créer de nouveau"
        End If
    End With

A+

Bonjour Frangy

A première vue, ça fonctionne très bien.

Je vais tenter d'adapter parfaitement à mon fichier et je reviens vers vous si ça bug.

Merci beaucoup et bonne journée

Bonjour,

Si tes N° sont du type 1,2,3,... tu peux utiliser :

Dim Ligne&, Plage
    With Sheets("BDBUDGET")
        .Ligne = Range("A" & .Rows.Count).End(xlUp).Row + 1
        Set Plage = .Range("A1:A" & Ligne - 1)
        NewNo = Application.Max(Plage) + 1
            .Cells(Ligne, 1) = NewNo
...

A+

Bonjour galopin

Non ce n'est pas le cas dans mon classeur

Merci quand même

@+

Rechercher des sujets similaires à "usf interdire saisie doublon"