• Initiateur de la discussion Initiateur de la discussion Didier MAUCOTEL
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

Didier MAUCOTEL

Guest
Salut le forum,

Voici quelques lignes de l'excellent @+Thierry permettant de rechercher des doublons dans une liste et d'afficher un message :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Ref As String
Dim Cell As Range, Plage As Range
Dim L As Integer
On Error Resume Next
If Application.Intersect(Target, Range("G:G")) Is Nothing Then Exit Sub
Ref = Target.Value
L = Target.Row
Set Plage = Range("G6:G" & L - 1)
For Each Cell In Plage
If Cell = Ref Then
MsgBox "Le nom de l'enseignant(e) est déjà inscrit dans une autre école !!" & Chr(13) & "Si c'est un changement de poste, n'oubliez de l'effacer de la précédente école." & Chr(13) & "Si c'est une erreur, vérifiez vos informations." & Cell.Address, vbCritical, "OPEP 2004 vous informe..."
Cell.Activate
Exit Sub
End If
Next Cell
End Sub

Ceci permet de reconnaitre des doublons pour une saisie en fin de colonne.
Je souhaiterais que la recherche de doublons se fasse quelque soit la ligne où se fait la saisie (apparemment, c'est la ligne "Set Plage = Range("G6:G" & L - 1)").

Merci pour votre aise.

Mauco
 
Bonsoir Didier, le Forum

Merci pour le compliment ! maintenant je suis tout rouge lol...

Le problème est simple, c'était voulu, je définie la Plage en fonction d'une saisie à la suite logique ligne à ligne ... là apparemment tu veux saisir depuis n'importe quelle ligne...

Il faut transformer comme suit :
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Ref As String
Dim Cell As Range, Plage As Range
On Error Resume Next
If Application.Intersect(Target, Range("G:G")) Is Nothing Then Exit Sub
Ref = Target.Value
Set Plage = Range("G6:G" & Range("G65536").End(xlUp).Row)
For Each Cell In Plage
If Cell = Ref Then
If Cell.Row <> Target.Row Then
MsgBox "Le nom de l'enseignant(e) est déjà inscrit dans une autre école !!" & Chr(13) & "Si c'est un changement de poste, n'oubliez de l'effacer de la précédente école." & Chr(13) & "Si c'est une erreur, vérifiez vos informations." & Cell.Address, vbCritical, "OPEP 2004 vous informe..."
Cell.Activate
Exit Sub
End If
End If
Next Cell
End Sub

Bon Dimanche
@+Thierry
 
Super Thierry !

Merci beaucoup pour la qualité et la rapidité de la réponse.

Ca marche du tonnerre !!

Je débute en Visual Basic (début de la semaine !) et j'ai vu tes Userforms... très intéressantes ...
J'ai une idée trés précise de ce que je souhaite et je trouve des bribes de programmes un peu partout pour résoudre mon problème. Je ne sais pas si la méthode et bonne, mais bcp de pbs de syntaxe.

Je ferais peut-être appel au forum si mes prochaines nuits sont trop "blanches".

Mauco
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
9
Affichages
406
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
4
Affichages
408
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
448
Réponses
7
Affichages
316
Retour