OVH Cloud OVH Cloud

Recherche sur colonnes multiples

6 réponses
Avatar
STEN83
Bonjour à tous,

J'ai une macro qui recherche les valeurs déjà inscrite et si c'est le cas me
previent que le numéro entré existe déjà.
Mon problème c'est que la recherche doit se faire sur plusieurs colonnes A
et F
seulement cela ne fonctionne que pour la colonne A mais dès que je rentre un
numéro dans la colonne F il est pris alors qu'il existe déjà.
Voici le code de ma macro:

If Selection.Count > 1 Then Exit Sub
' pour vérifier si la saisie n'existe pas déjà dans les lignes précédentes
If Application.WorksheetFunction. _
CountIf(Range(Cells(2, 1), _
Cells(Target.Row, 1)), Target.Value) > 1 Then

' pour vérifier si la saisie n'existe pas déjà dans la colonne
If Application.WorksheetFunction. _
CountIf(Range("A:A"), Target.Value) > 1 Then
If Application.WorksheetFunction.CountIf(Range("F:F"), Target.Value) > 1
Then

MsgBox "Ce numéro à déjà été attribué!", vbInformation, "N° Invalide"
Target.Value = ""
Target.Select
End If
End If
End If
End Sub

Meric de votre aide précieuse.
--
Le partage du savoir contribue à l'amélioration de la condition humaine!
Merci à tous

6 réponses

Avatar
AV
Je ne pense pas qu'il soit nécessaire de chercher dans les lignes qui
précédent.....

Private Sub Worksheet_Change(ByVal zz As Range)
If Selection.Count > 1 Then Exit Sub
x1 = Application.CountIf([A:A], zz)
x2 = Application.CountIf([F:F], zz)
If x1 + x2 > 1 Then
MsgBox "blabla"
Application.EnableEvents = False
zz = "": zz.Select
Application.EnableEvents = True
End If
End Sub

AV
Avatar
STEN83
Bonjour,
Ce code ne fonctionne pas lorsque je le copie dans mon classeur excel se
bloque obligé de faire fin de tâche. Peut être a cause de Byval zz As Range ?
Peut tu m'en dire plus merci
ps(je travaille avec office 2003)


Je ne pense pas qu'il soit nécessaire de chercher dans les lignes qui
précédent.....

Private Sub Worksheet_Change(ByVal zz As Range)
If Selection.Count > 1 Then Exit Sub
x1 = Application.CountIf([A:A], zz)
x2 = Application.CountIf([F:F], zz)
If x1 + x2 > 1 Then
MsgBox "blabla"
Application.EnableEvents = False
zz = "": zz.Select
Application.EnableEvents = True
End If
End Sub

AV





Avatar
AV
Ce code ne fonctionne pas lorsque je le copie dans mon classeur excel se
bloque obligé de faire fin de tâche.
Il n'y a aucune raison pour que ce code ne fonctionne pas quelle que soit la

version
Tu l'as testé sur une feuille vierge pour éliminer quelques éventuels
épiphénomènes ?

Peut être a cause de Byval zz As Range ?


Ah ça non car c'est breveté !

AV

Avatar
STEN83
Bonjour AV
Exact tu as parfaitement raison cela fonctionne très bien sur une page
vierge, mais alors que puis-je faire pour que cela fonctionne dans ma feuille
je n'ai vraiment pas envie de me retapé tout!
As tu la solution?
Merci


Ce code ne fonctionne pas lorsque je le copie dans mon classeur excel se
bloque obligé de faire fin de tâche.
Il n'y a aucune raison pour que ce code ne fonctionne pas quelle que soit la

version
Tu l'as testé sur une feuille vierge pour éliminer quelques éventuels
épiphénomènes ?

Peut être a cause de Byval zz As Range ?


Ah ça non car c'est breveté !

AV






Avatar
AV
..., mais alors que puis-je faire pour que cela fonctionne dans ma feuille
je n'ai vraiment pas envie de me retapé tout!
As tu la solution?


Ben non car je n'ai aucun élément me permettant de trouver "l'erreur"

AV

Avatar
STEN83
Bon tant pis merci quand même pour tout je vais me débrouillé.


..., mais alors que puis-je faire pour que cela fonctionne dans ma feuille
je n'ai vraiment pas envie de me retapé tout!
As tu la solution?


Ben non car je n'ai aucun élément me permettant de trouver "l'erreur"

AV