Macro évenementielle - bloquer doublon

Bonjour à tous,

J'ai créé une macro évenementielle qui bloque la saisie de doublon dans une feuille excel. Exemple je tape 10 dans la case B5, je ne peux ensuite plus taper 5 dans aucune autre case de la colonne B avec un pas de 14.

Voici le code :

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim I As Long
    Dim Ecriture As Boolean

    'Si on est en train d'éditer la cellule, on sort
    If Ecriture Then Exit Sub

    If Target.Column = 2 Then  ' si on est en colonne B

        For I = 5 To 5000 Step 14

            If Target.Value = Range("B" & I) And Target.Row <> I And Target.Value <> "" Then

                Ecriture = True
                MsgBox "Le n° d'OF " & Target.Value & " est déjà inscrit sur la ligne " & I
                Target = ""
                Exit For

            End If

        Next I

    End If

    Ecriture = False

End Sub

La macro fonctionne cependant, lorsque je veux supprimer le contenu d'au moins 2 cellules (ou plus) dans n'importe quelle ligne en colonne B (de B12 à C15 par exemple ou B12 à B13, etc...), la macro entre en erreur (Erreur d'exécution '13': incompatibilité de type). La suppression case par case ne pose aucun problème, de même que la suppression multiple dans les autres colonnes. Je ne comprends pas d'où ca vient, j'espère donc que quelqu'un qui maitriserait mieux que moi les macros évenementielles me vienne en aide !

Je mets bien sûr le fichier en PJ pour que vous puissiez vous en rendre compte vous même.

Merci par avance,

Cordialement,

H.

Bonjour,

Commencer la macro par :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Long
Dim Ecriture As Boolean
 If Target.Count = 1 Then
...

et terminer par :

...
End If
End Sub

A+

Bonjour galopin,

Décidément ! Je vais finir par envoyer mes posts directement à toi ! Ahah, encore une fois merci beaucoup, ca marche du tonnerre ! Petite question sur le "Target.Count = 1" : il sert à conditionner la sélection à une case seulement (ou un truc du genre) ?

Question subsidiaire, est-ce que je peux mettre un tel code dans un fichier en xlsx ? J'avais essayé, le programme fonctionnait, mais j'ai l'impression qu'après avoir fermé (même en sauvegardant) le fichier le programme disparaissait...

Merci encore,

Cordialement,

H.

Bonjour,

Les fichiers en .xlsx sont des fichiers sans macro.

Il est indispensable de sauvegarder ces fichiers sous .xlsm.

Target.Count : Le macro ne s'applique pas si plusieurs cellules changent de valeur en même temps.

A+

C'est bien ce qu'il me semblait, merci pour la confirmation.

A +

Rechercher des sujets similaires à "macro evenementielle bloquer doublon"