PROBLEME d'ambiguité sur code VBA

bonjour

Sur une meme feuille contenant plusieurs colonnes de données je souhaite placer le code suivant me permettant d'eviter

d'avoir des doublons dans chacune de celles ci .

le code est celui ci : pour la colonne B

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Range("B21:B20060"), Target) Is Nothing Then

If Application.CountIf(Range(Cells(21, Target.Column), Cells(20060, Target.Column)), Target) > 1 Then

MsgBox "double saisie"

Target.ClearContents

End If

End If

End Sub

mais lorsque je place à la suite ce meme code en modifiant uniquement les cellules B21 et B20060 en C21 et C20060 le code suivant our la colonne C

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Range("C21:C20060"), Target) Is Nothing Then

If Application.CountIf(Range(Cells(21, Target.Column), Cells(20060, Target.Column)), Target) > 1 Then

MsgBox "double saisie"

Target.ClearContents

End If

End If

End Sub

j'obtient une erreur de compilation , je ne trouve pas l'origine de ce petit soucis

Merci pour vos interventions ou vos idées sur la question

Cordialement

Salut,

Tu ne peux avoir qu'une seule macro Private Sub Worksheet_Change(ByVal Target As Range).

Ton code doit donc ressembler à quelque chose de semblable (pas testé) :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Range("B21:B20060"), Target) Is Nothing Then
If Application.CountIf(Range(Cells(21, Target.Column), Cells(20060, Target.Column)), Target) > 1 Then
MsgBox "double saisie"
Target.ClearContents
End If
End If

If Not Intersect(Range("C21:C20060"), Target) Is Nothing Then
If Application.CountIf(Range(Cells(21, Target.Column), Cells(20060, Target.Column)), Target) > 1 Then
MsgBox "double saisie"
Target.ClearContents
End If
End If

End Sub

Cordialement

Hello,

Je pense que tu dois combiner tes 2 codes...

Essaye le code suivant

est-ce que ça te va?

A +

Alexandre

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Range("B21:B20060"), Target) Is Nothing Then

If Application.CountIf(Range(Cells(21, Target.Column), Cells(20060, Target.Column)), Target) > 1 Then

MsgBox "double saisie"

Target.ClearContents

End If

End If

If Not Intersect(Range("C21:C20060"), Target) Is Nothing Then

If Application.CountIf(Range(Cells(21, Target.Column), Cells(20060, Target.Column)), Target) > 1 Then

MsgBox "double saisie"

Target.ClearContents

End If

End If

End Sub


yvouille tu m'as devancé !! grrrrrr !!

Merci à vous deux ca marche du tonnerre !!!!!!!

Ou comme ça :

    Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Range("B21:B20060,C21:C20060"), Target) Is Nothing Then
    If Application.CountIf(Range(Cells(21, Target.Column), Cells(20060, Target.Column)), Target) > 1 Then
    MsgBox "double saisie"
    Target.ClearContents
    End If
    End If

    End Sub
Rechercher des sujets similaires à "probleme ambiguite code vba"