Oui, je sais! On l'a déjà fait! Malgré votre dévouement, je bute quand même
sur un problème de recherche de doublons.
Je suis sur Xl97.
Sur une plage d'une seule colonne (H4:H303), je voudrais créer une procédure
événementielle qui réagit à la touche 'Entrée'. A chaque saisie dans ma
plage, validée par la touche 'Entrée', il faudrait vérifier sur les cellules
du dessus qu'il n'y a pas de doublons.
Voilà le code que j'utilise pour l'instant
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Permet de vérifier si un dossard n'est pas entré deux fois.
'Si c'est le cas, les 2 cellules identiques se colorent en rouge
'et la sélection reste sur la cellule contenant l'erreur.
Dim maZone As Range 'la zone d'entrée des dossards.
Dim cell As Range 'chaque cellule de maZone.
Dim maCellule As Variant 'la cellule active, avant de nettoyer les
couleurs.
If ActiveCell.Column = 8 Then
If Target.Address = "$H4$" Or Target.Address = "$H$5" Then
Exit Sub
Else
Set maZone = Range("H4:H303")
maCellule = ActiveCell.Address
aucune_couleur 'nettoyage des couleurs.
Range(maCellule).Select
For Each cell In maZone
If Target = cell And Target.Row <> cell.Row Then
Target.Interior.ColorIndex = 3
cell.Interior.ColorIndex = 3
ActiveCell.Offset(-1, 0).Activate
End If
Next cell
End If
Else: Exit Sub
End If
End Sub
Ce code fonctionne pas mal, mais il y a des défauts: il réagit à tous les
événements de la zone en question et supporte mal que l'on en efface les
données.
Je compte sur vous pour me donner des pistes d'amélioration.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
ru-th
Salut
plutot (toujours pas le chien) qu'un code, une donnée/validation ou une Format/mise en forme conditionnelle devrait le faire à partir de H4 la formule est =nb.si($H$4:H4;H4)>1
a+ rural thierry Veaux et Broutards d'Anjou Wicasa on kin nape yapi inahni yo (à l'essai)
"bob" a écrit dans le message de news:
Bonjour
Oui, je sais! On l'a déjà fait! Malgré votre dévouement, je bute quand même
sur un problème de recherche de doublons. Je suis sur Xl97. Sur une plage d'une seule colonne (H4:H303), je voudrais créer une procédure
événementielle qui réagit à la touche 'Entrée'. A chaque saisie dans ma plage, validée par la touche 'Entrée', il faudrait vérifier sur les cellules
du dessus qu'il n'y a pas de doublons. Voilà le code que j'utilise pour l'instant
Private Sub Worksheet_Change(ByVal Target As Excel.Range) 'Permet de vérifier si un dossard n'est pas entré deux fois. 'Si c'est le cas, les 2 cellules identiques se colorent en rouge 'et la sélection reste sur la cellule contenant l'erreur. Dim maZone As Range 'la zone d'entrée des dossards. Dim cell As Range 'chaque cellule de maZone. Dim maCellule As Variant 'la cellule active, avant de nettoyer les couleurs.
If ActiveCell.Column = 8 Then If Target.Address = "$H4$" Or Target.Address = "$H$5" Then Exit Sub Else Set maZone = Range("H4:H303") maCellule = ActiveCell.Address
aucune_couleur 'nettoyage des couleurs. Range(maCellule).Select For Each cell In maZone If Target = cell And Target.Row <> cell.Row Then Target.Interior.ColorIndex = 3 cell.Interior.ColorIndex = 3 ActiveCell.Offset(-1, 0).Activate End If Next cell End If Else: Exit Sub End If End Sub Ce code fonctionne pas mal, mais il y a des défauts: il réagit à tous les événements de la zone en question et supporte mal que l'on en efface les données. Je compte sur vous pour me donner des pistes d'amélioration.
Merci
-- Bob
Salut
plutot (toujours pas le chien) qu'un code, une donnée/validation ou une
Format/mise en forme conditionnelle devrait le faire
à partir de H4
la formule est =nb.si($H$4:H4;H4)>1
a+
rural thierry
Veaux et Broutards d'Anjou
Wicasa on kin nape yapi inahni yo (à l'essai)
"bob" <nospam-rg31@free.fr> a écrit dans le message de news:
Os4KIPKpDHA.2232@TK2MSFTNGP09.phx.gbl...
Bonjour
Oui, je sais! On l'a déjà fait! Malgré votre dévouement, je bute quand
même
sur un problème de recherche de doublons.
Je suis sur Xl97.
Sur une plage d'une seule colonne (H4:H303), je voudrais créer une
procédure
événementielle qui réagit à la touche 'Entrée'. A chaque saisie dans ma
plage, validée par la touche 'Entrée', il faudrait vérifier sur les
cellules
du dessus qu'il n'y a pas de doublons.
Voilà le code que j'utilise pour l'instant
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Permet de vérifier si un dossard n'est pas entré deux fois.
'Si c'est le cas, les 2 cellules identiques se colorent en rouge
'et la sélection reste sur la cellule contenant l'erreur.
Dim maZone As Range 'la zone d'entrée des dossards.
Dim cell As Range 'chaque cellule de maZone.
Dim maCellule As Variant 'la cellule active, avant de nettoyer les
couleurs.
If ActiveCell.Column = 8 Then
If Target.Address = "$H4$" Or Target.Address = "$H$5" Then
Exit Sub
Else
Set maZone = Range("H4:H303")
maCellule = ActiveCell.Address
aucune_couleur 'nettoyage des couleurs.
Range(maCellule).Select
For Each cell In maZone
If Target = cell And Target.Row <> cell.Row Then
Target.Interior.ColorIndex = 3
cell.Interior.ColorIndex = 3
ActiveCell.Offset(-1, 0).Activate
End If
Next cell
End If
Else: Exit Sub
End If
End Sub
Ce code fonctionne pas mal, mais il y a des défauts: il réagit à tous les
événements de la zone en question et supporte mal que l'on en efface les
données.
Je compte sur vous pour me donner des pistes d'amélioration.
plutot (toujours pas le chien) qu'un code, une donnée/validation ou une Format/mise en forme conditionnelle devrait le faire à partir de H4 la formule est =nb.si($H$4:H4;H4)>1
a+ rural thierry Veaux et Broutards d'Anjou Wicasa on kin nape yapi inahni yo (à l'essai)
"bob" a écrit dans le message de news:
Bonjour
Oui, je sais! On l'a déjà fait! Malgré votre dévouement, je bute quand même
sur un problème de recherche de doublons. Je suis sur Xl97. Sur une plage d'une seule colonne (H4:H303), je voudrais créer une procédure
événementielle qui réagit à la touche 'Entrée'. A chaque saisie dans ma plage, validée par la touche 'Entrée', il faudrait vérifier sur les cellules
du dessus qu'il n'y a pas de doublons. Voilà le code que j'utilise pour l'instant
Private Sub Worksheet_Change(ByVal Target As Excel.Range) 'Permet de vérifier si un dossard n'est pas entré deux fois. 'Si c'est le cas, les 2 cellules identiques se colorent en rouge 'et la sélection reste sur la cellule contenant l'erreur. Dim maZone As Range 'la zone d'entrée des dossards. Dim cell As Range 'chaque cellule de maZone. Dim maCellule As Variant 'la cellule active, avant de nettoyer les couleurs.
If ActiveCell.Column = 8 Then If Target.Address = "$H4$" Or Target.Address = "$H$5" Then Exit Sub Else Set maZone = Range("H4:H303") maCellule = ActiveCell.Address
aucune_couleur 'nettoyage des couleurs. Range(maCellule).Select For Each cell In maZone If Target = cell And Target.Row <> cell.Row Then Target.Interior.ColorIndex = 3 cell.Interior.ColorIndex = 3 ActiveCell.Offset(-1, 0).Activate End If Next cell End If Else: Exit Sub End If End Sub Ce code fonctionne pas mal, mais il y a des défauts: il réagit à tous les événements de la zone en question et supporte mal que l'on en efface les données. Je compte sur vous pour me donner des pistes d'amélioration.
Merci
-- Bob
bob
Salut ru-th si je mets ta formule dans une mise en forme conditionnelle, 1° toute la zone est colorée en rouge s'il n'y a pas de valeur à l'intérieur 2° si je reproduis la mise en forme vers le bas, cela ne recherche pas les doublons 3° je n'ai peut être rien compris!!!!
si j'utilise une validation, je ne peux tout simplement plus entrer de valeur dans la cellule en question ou alors je n'ai encore rien compris (mais de toutes façons, je ne vois pas comment mes doublons pourraient se colorer en rouge).
Merci quand même -- Bob "ru-th" a écrit dans le message de news:
Salut
plutot (toujours pas le chien) qu'un code, une donnée/validation ou une Format/mise en forme conditionnelle devrait le faire à partir de H4 la formule est =nb.si($H$4:H4;H4)>1
a+ rural thierry Veaux et Broutards d'Anjou Wicasa on kin nape yapi inahni yo (à l'essai)
"bob" a écrit dans le message de news:
Bonjour
Oui, je sais! On l'a déjà fait! Malgré votre dévouement, je bute quand même
sur un problème de recherche de doublons. Je suis sur Xl97. Sur une plage d'une seule colonne (H4:H303), je voudrais créer une procédure
événementielle qui réagit à la touche 'Entrée'. A chaque saisie dans ma plage, validée par la touche 'Entrée', il faudrait vérifier sur les cellules
du dessus qu'il n'y a pas de doublons. Voilà le code que j'utilise pour l'instant
Private Sub Worksheet_Change(ByVal Target As Excel.Range) 'Permet de vérifier si un dossard n'est pas entré deux fois. 'Si c'est le cas, les 2 cellules identiques se colorent en rouge 'et la sélection reste sur la cellule contenant l'erreur. Dim maZone As Range 'la zone d'entrée des dossards. Dim cell As Range 'chaque cellule de maZone. Dim maCellule As Variant 'la cellule active, avant de nettoyer les couleurs.
If ActiveCell.Column = 8 Then If Target.Address = "$H4$" Or Target.Address = "$H$5" Then Exit Sub Else Set maZone = Range("H4:H303") maCellule = ActiveCell.Address
aucune_couleur 'nettoyage des couleurs. Range(maCellule).Select For Each cell In maZone If Target = cell And Target.Row <> cell.Row Then Target.Interior.ColorIndex = 3 cell.Interior.ColorIndex = 3 ActiveCell.Offset(-1, 0).Activate End If Next cell End If Else: Exit Sub End If End Sub Ce code fonctionne pas mal, mais il y a des défauts: il réagit à tous les
événements de la zone en question et supporte mal que l'on en efface les données. Je compte sur vous pour me donner des pistes d'amélioration.
Merci
-- Bob
Salut ru-th
si je mets ta formule dans une mise en forme conditionnelle,
1° toute la zone est colorée en rouge s'il n'y a pas de valeur à l'intérieur
2° si je reproduis la mise en forme vers le bas, cela ne recherche pas les
doublons
3° je n'ai peut être rien compris!!!!
si j'utilise une validation, je ne peux tout simplement plus entrer de
valeur dans la cellule en question ou alors je n'ai encore rien compris
(mais de toutes façons, je ne vois pas comment mes doublons pourraient se
colorer en rouge).
Merci quand même
--
Bob
"ru-th" <ailleurs@nowhere.fr> a écrit dans le message de
news:eeBjcZKpDHA.2404@TK2MSFTNGP12.phx.gbl...
Salut
plutot (toujours pas le chien) qu'un code, une donnée/validation ou une
Format/mise en forme conditionnelle devrait le faire
à partir de H4
la formule est =nb.si($H$4:H4;H4)>1
a+
rural thierry
Veaux et Broutards d'Anjou
Wicasa on kin nape yapi inahni yo (à l'essai)
"bob" <nospam-rg31@free.fr> a écrit dans le message de news:
Os4KIPKpDHA.2232@TK2MSFTNGP09.phx.gbl...
Bonjour
Oui, je sais! On l'a déjà fait! Malgré votre dévouement, je bute quand
même
sur un problème de recherche de doublons.
Je suis sur Xl97.
Sur une plage d'une seule colonne (H4:H303), je voudrais créer une
procédure
événementielle qui réagit à la touche 'Entrée'. A chaque saisie dans ma
plage, validée par la touche 'Entrée', il faudrait vérifier sur les
cellules
du dessus qu'il n'y a pas de doublons.
Voilà le code que j'utilise pour l'instant
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Permet de vérifier si un dossard n'est pas entré deux fois.
'Si c'est le cas, les 2 cellules identiques se colorent en rouge
'et la sélection reste sur la cellule contenant l'erreur.
Dim maZone As Range 'la zone d'entrée des dossards.
Dim cell As Range 'chaque cellule de maZone.
Dim maCellule As Variant 'la cellule active, avant de nettoyer les
couleurs.
If ActiveCell.Column = 8 Then
If Target.Address = "$H4$" Or Target.Address = "$H$5" Then
Exit Sub
Else
Set maZone = Range("H4:H303")
maCellule = ActiveCell.Address
aucune_couleur 'nettoyage des couleurs.
Range(maCellule).Select
For Each cell In maZone
If Target = cell And Target.Row <> cell.Row Then
Target.Interior.ColorIndex = 3
cell.Interior.ColorIndex = 3
ActiveCell.Offset(-1, 0).Activate
End If
Next cell
End If
Else: Exit Sub
End If
End Sub
Ce code fonctionne pas mal, mais il y a des défauts: il réagit à tous
les
événements de la zone en question et supporte mal que l'on en efface les
données.
Je compte sur vous pour me donner des pistes d'amélioration.
Salut ru-th si je mets ta formule dans une mise en forme conditionnelle, 1° toute la zone est colorée en rouge s'il n'y a pas de valeur à l'intérieur 2° si je reproduis la mise en forme vers le bas, cela ne recherche pas les doublons 3° je n'ai peut être rien compris!!!!
si j'utilise une validation, je ne peux tout simplement plus entrer de valeur dans la cellule en question ou alors je n'ai encore rien compris (mais de toutes façons, je ne vois pas comment mes doublons pourraient se colorer en rouge).
Merci quand même -- Bob "ru-th" a écrit dans le message de news:
Salut
plutot (toujours pas le chien) qu'un code, une donnée/validation ou une Format/mise en forme conditionnelle devrait le faire à partir de H4 la formule est =nb.si($H$4:H4;H4)>1
a+ rural thierry Veaux et Broutards d'Anjou Wicasa on kin nape yapi inahni yo (à l'essai)
"bob" a écrit dans le message de news:
Bonjour
Oui, je sais! On l'a déjà fait! Malgré votre dévouement, je bute quand même
sur un problème de recherche de doublons. Je suis sur Xl97. Sur une plage d'une seule colonne (H4:H303), je voudrais créer une procédure
événementielle qui réagit à la touche 'Entrée'. A chaque saisie dans ma plage, validée par la touche 'Entrée', il faudrait vérifier sur les cellules
du dessus qu'il n'y a pas de doublons. Voilà le code que j'utilise pour l'instant
Private Sub Worksheet_Change(ByVal Target As Excel.Range) 'Permet de vérifier si un dossard n'est pas entré deux fois. 'Si c'est le cas, les 2 cellules identiques se colorent en rouge 'et la sélection reste sur la cellule contenant l'erreur. Dim maZone As Range 'la zone d'entrée des dossards. Dim cell As Range 'chaque cellule de maZone. Dim maCellule As Variant 'la cellule active, avant de nettoyer les couleurs.
If ActiveCell.Column = 8 Then If Target.Address = "$H4$" Or Target.Address = "$H$5" Then Exit Sub Else Set maZone = Range("H4:H303") maCellule = ActiveCell.Address
aucune_couleur 'nettoyage des couleurs. Range(maCellule).Select For Each cell In maZone If Target = cell And Target.Row <> cell.Row Then Target.Interior.ColorIndex = 3 cell.Interior.ColorIndex = 3 ActiveCell.Offset(-1, 0).Activate End If Next cell End If Else: Exit Sub End If End Sub Ce code fonctionne pas mal, mais il y a des défauts: il réagit à tous les
événements de la zone en question et supporte mal que l'on en efface les données. Je compte sur vous pour me donner des pistes d'amélioration.
Merci
-- Bob
AV
Dans le module de la feuille :
Private Sub Worksheet_Change(ByVal zz As Excel.Range) If Intersect(zz, [H4:H303]) Is Nothing Or zz = "" Then Exit Sub Set C = [H4:H303].Find(zz(1), zz(1)) If C.Address <> zz(1).Address Then MsgBox "Dossard déjà saisi en " _ & C.Address, vbCritical, "Doublon !" Application.EnableEvents = False zz = "": zz.Select Application.EnableEvents = True End If End Sub
Si tu veux utiliser une simple Mise en Forme Conditionnelle : Sélection H4:H303 --> MFC --> formule --> =NB.SI($H$4:$H$303;H4)>1 --> motif
AV
Dans le module de la feuille :
Private Sub Worksheet_Change(ByVal zz As Excel.Range)
If Intersect(zz, [H4:H303]) Is Nothing Or zz = "" Then Exit Sub
Set C = [H4:H303].Find(zz(1), zz(1))
If C.Address <> zz(1).Address Then
MsgBox "Dossard déjà saisi en " _
& C.Address, vbCritical, "Doublon !"
Application.EnableEvents = False
zz = "": zz.Select
Application.EnableEvents = True
End If
End Sub
Si tu veux utiliser une simple Mise en Forme Conditionnelle :
Sélection H4:H303 --> MFC --> formule -->
=NB.SI($H$4:$H$303;H4)>1
--> motif
Private Sub Worksheet_Change(ByVal zz As Excel.Range) If Intersect(zz, [H4:H303]) Is Nothing Or zz = "" Then Exit Sub Set C = [H4:H303].Find(zz(1), zz(1)) If C.Address <> zz(1).Address Then MsgBox "Dossard déjà saisi en " _ & C.Address, vbCritical, "Doublon !" Application.EnableEvents = False zz = "": zz.Select Application.EnableEvents = True End If End Sub
Si tu veux utiliser une simple Mise en Forme Conditionnelle : Sélection H4:H303 --> MFC --> formule --> =NB.SI($H$4:$H$303;H4)>1 --> motif
AV
AV
Pour éviter un smilblick possible, rajouter une ligne en début de code :
Private Sub Worksheet_Change(ByVal zz As Excel.Range) If Selection.Count > 1 Then Exit Sub .....etc..............
AV
Pour éviter un smilblick possible, rajouter une ligne en début de code :
Private Sub Worksheet_Change(ByVal zz As Excel.Range)
If Selection.Count > 1 Then Exit Sub
.....etc..............