Salut ,
Désolé pour le retard,
Pour titioui
Un exemple en VBA , à toi d'adapter les plages colles le code ci dessous dans le module de la feuille où tu veux controler la saisie:
Const ZoneSaisie$ = "D1
300" 'Plage où on saisie les données
Const ZoneCritere$ = "C1:C300" 'Plage de critere
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Cells.Count > 1 Then Exit Sub
If Not Intersect(Range(ZoneSasie), .Cells) Is Nothing Then
If DetectDoublons(Range(ZoneCritere), .Value) Then
MsgBox "trouvé"
.Value = ""
End If
End If
End With
End Sub
Function DetectDoublons(Plage As Range, Crit) As Boolean
DetectDoublons = Evaluate("COUNTIF(" & Plage.Parent.Name & "!" & Plage.Address _
& ",""" & Crit & """)") > 0 And Crit <> ""
End Function
Pour RAH:
Je sens l'usine à gaz poindre par ce que tu demandes, pour des plages de quelque lignes l'oeil ou les formules peuvent faire l'affaire.
Mais pour te mettre sur la voie, tu peux mettre 30 arguments à l'argument range
ex: Set Plage = Range([A1:23], [A28.A35],[C28.C35])
Pour détecter si la zone des critères a changée, tu peux t'inspirer de ce que j'ai laissé pour titoui. si tu t'en sors pas mets un fichier exemple avec le code que tu as essayé d'adapter...
Enfin voici une fontion pour demander à l'utlisateur de choisir une plage
Function PlageS(Ch$) As Range
On Error Resume Next
Set Plage = Application.InputBox(Ch, , , , , , , 8)
End Function
Pour l'utiliser:
Dim Pl as range
dim T
set pl=plages("Sélectionnez la zone1")
if not pl is nothing then t=pl.value
....
A+++