Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Détection de doublons - fine tuning

6 réponses
Avatar
Stéphan DuQuébec
Bonjour,

J'ai besoin de quelques explications sur la procédure suivante, qui marche à
merveille, mais dont je suis incapable de modifier avec succès (procédure
pondue par JB dans une ficelle du 7 janvier dernier).

J'aimerais en fait remplacer la plage A1:A1000 par une zone zonnée
(ZoneLigne) moins 2 lignes (par un offset -2). Je suis incapable de le faire.
Rien n'y fait.

Autre chose: la variable témoin y est déclarée mais elle n'est pas
définie.....que représente-elle ????

Merci pour votre compréhension meilleure que la mienne.

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Dim témoin
'Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 And Not témoin Then
témoin = True
p = Application.Match(Target.Value, Range("A1:A1000"), 0)
If p <> Target.Row Then
MsgBox "Doublon en : A" & p
End If
témoin = False
End If
End Sub

6 réponses

Avatar
michdenis
Bonjour Stéphan,

| J'aimerais en fait remplacer la plage A1:A1000 par une zone zonnée
| (ZoneLigne) moins 2 lignes (par un offset -2). Je suis incapable de le faire.
| Rien n'y fait.

Il y a un problème dans la demande de ta question ...

si ta plage nommée "zoneLigne" fait référence à A1:A1000, Comment
penses-tu exercer un offset(-2) sur la même plage ?

Est-ce que ta feuille de calcul a des lignes 0 , -1 ?

P.S. Je n'ai pas regardé à procédure ...


Salutations!



"Stéphan DuQuébec" a écrit dans le message de news:

Bonjour,

J'ai besoin de quelques explications sur la procédure suivante, qui marche à
merveille, mais dont je suis incapable de modifier avec succès (procédure
pondue par JB dans une ficelle du 7 janvier dernier).

J'aimerais en fait remplacer la plage A1:A1000 par une zone zonnée
(ZoneLigne) moins 2 lignes (par un offset -2). Je suis incapable de le faire.
Rien n'y fait.

Autre chose: la variable témoin y est déclarée mais elle n'est pas
définie.....que représente-elle ????

Merci pour votre compréhension meilleure que la mienne.

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Dim témoin
'Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 And Not témoin Then
témoin = True
p = Application.Match(Target.Value, Range("A1:A1000"), 0)
If p <> Target.Row Then
MsgBox "Doublon en : A" & p
End If
témoin = False
End If
End Sub
Avatar
Stéphan DuQuébec
Bonjour michdenis,

En fait, la plage A1:A1000 faisait partie du script original de JB.

Ma zone nommée (ZoneLigne) est en fait la colonne A qui variera beaucoup (en
nbre de lignes).

Si ma feuille de calcul a des lignes 0, -1 ???

Excuse-moi, je ne saisie pas la question.


Bonjour Stéphan,

| J'aimerais en fait remplacer la plage A1:A1000 par une zone zonnée
| (ZoneLigne) moins 2 lignes (par un offset -2). Je suis incapable de le faire.
| Rien n'y fait.

Il y a un problème dans la demande de ta question ...

si ta plage nommée "zoneLigne" fait référence à A1:A1000, Comment
penses-tu exercer un offset(-2) sur la même plage ?

Est-ce que ta feuille de calcul a des lignes 0 , -1 ?

P.S. Je n'ai pas regardé à procédure ...


Salutations!



"Stéphan DuQuébec" a écrit dans le message de news:

Bonjour,

J'ai besoin de quelques explications sur la procédure suivante, qui marche à
merveille, mais dont je suis incapable de modifier avec succès (procédure
pondue par JB dans une ficelle du 7 janvier dernier).

J'aimerais en fait remplacer la plage A1:A1000 par une zone zonnée
(ZoneLigne) moins 2 lignes (par un offset -2). Je suis incapable de le faire.
Rien n'y fait.

Autre chose: la variable témoin y est déclarée mais elle n'est pas
définie.....que représente-elle ????

Merci pour votre compréhension meilleure que la mienne.

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Dim témoin
'Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 And Not témoin Then
témoin = True
p = Application.Match(Target.Value, Range("A1:A1000"), 0)
If p <> Target.Row Then
MsgBox "Doublon en : A" & p
End If
témoin = False
End If
End Sub





Avatar
michdenis
Ta première ligne de ta plage est déjà la ligne 1 comment
penses-tu remonter (offset(-2) ta plage de 2 lignes ?


Salutations!






"Stéphan DuQuébec" a écrit dans le message de news:


Bonjour michdenis,

En fait, la plage A1:A1000 faisait partie du script original de JB.

Ma zone nommée (ZoneLigne) est en fait la colonne A qui variera beaucoup (en
nbre de lignes).

Si ma feuille de calcul a des lignes 0, -1 ???

Excuse-moi, je ne saisie pas la question.


Bonjour Stéphan,

| J'aimerais en fait remplacer la plage A1:A1000 par une zone zonnée
| (ZoneLigne) moins 2 lignes (par un offset -2). Je suis incapable de le faire.
| Rien n'y fait.

Il y a un problème dans la demande de ta question ...

si ta plage nommée "zoneLigne" fait référence à A1:A1000, Comment
penses-tu exercer un offset(-2) sur la même plage ?

Est-ce que ta feuille de calcul a des lignes 0 , -1 ?

P.S. Je n'ai pas regardé à procédure ...


Salutations!



"Stéphan DuQuébec" a écrit dans le message de news:

Bonjour,

J'ai besoin de quelques explications sur la procédure suivante, qui marche à
merveille, mais dont je suis incapable de modifier avec succès (procédure
pondue par JB dans une ficelle du 7 janvier dernier).

J'aimerais en fait remplacer la plage A1:A1000 par une zone zonnée
(ZoneLigne) moins 2 lignes (par un offset -2). Je suis incapable de le faire.
Rien n'y fait.

Autre chose: la variable témoin y est déclarée mais elle n'est pas
définie.....que représente-elle ????

Merci pour votre compréhension meilleure que la mienne.

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Dim témoin
'Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 And Not témoin Then
témoin = True
p = Application.Match(Target.Value, Range("A1:A1000"), 0)
If p <> Target.Row Then
MsgBox "Doublon en : A" & p
End If
témoin = False
End If
End Sub





Avatar
Stéphan DuQuébec
J'aurais dû comprendre....excuse-moi.

Non, ma plage nommée débute toujours à la cellule A26.

Or, elle se termine à une ligne différente chaque fois.

Cela dit, lorsqu'on fait un offset.....n'est-il pas à partir de la dernière
ligne de la zone nommée ???


Ta première ligne de ta plage est déjà la ligne 1 comment
penses-tu remonter (offset(-2) ta plage de 2 lignes ?


Salutations!






"Stéphan DuQuébec" a écrit dans le message de news:


Bonjour michdenis,

En fait, la plage A1:A1000 faisait partie du script original de JB.

Ma zone nommée (ZoneLigne) est en fait la colonne A qui variera beaucoup (en
nbre de lignes).

Si ma feuille de calcul a des lignes 0, -1 ???

Excuse-moi, je ne saisie pas la question.


Bonjour Stéphan,

| J'aimerais en fait remplacer la plage A1:A1000 par une zone zonnée
| (ZoneLigne) moins 2 lignes (par un offset -2). Je suis incapable de le faire.
| Rien n'y fait.

Il y a un problème dans la demande de ta question ...

si ta plage nommée "zoneLigne" fait référence à A1:A1000, Comment
penses-tu exercer un offset(-2) sur la même plage ?

Est-ce que ta feuille de calcul a des lignes 0 , -1 ?

P.S. Je n'ai pas regardé à procédure ...


Salutations!



"Stéphan DuQuébec" a écrit dans le message de news:

Bonjour,

J'ai besoin de quelques explications sur la procédure suivante, qui marche à
merveille, mais dont je suis incapable de modifier avec succès (procédure
pondue par JB dans une ficelle du 7 janvier dernier).

J'aimerais en fait remplacer la plage A1:A1000 par une zone zonnée
(ZoneLigne) moins 2 lignes (par un offset -2). Je suis incapable de le faire.
Rien n'y fait.

Autre chose: la variable témoin y est déclarée mais elle n'est pas
définie.....que représente-elle ????

Merci pour votre compréhension meilleure que la mienne.

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Dim témoin
'Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 And Not témoin Then
témoin = True
p = Application.Match(Target.Value, Range("A1:A1000"), 0)
If p <> Target.Row Then
MsgBox "Doublon en : A" & p
End If
témoin = False
End If
End Sub










Avatar
JB
Bonjour,

http://cjoint.com/?byipLCR0wh

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("monchamp"), Target) Is Nothing And
Target.Count = 1 Then
For Each c In Range("monchamp")
If c.Value = Target.Value And c.Row <> Target.Row And c.Value <>
Empty Then
MsgBox "Doublon " & c.Address
Exit Sub
End If
Next c
End If
End Sub

Cordialement JB
Avatar
Stéphan DuQuébec
Mes remerciements M. (peut-être Mme....difficile à dire) JB.


Bonjour,

http://cjoint.com/?byipLCR0wh

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("monchamp"), Target) Is Nothing And
Target.Count = 1 Then
For Each c In Range("monchamp")
If c.Value = Target.Value And c.Row <> Target.Row And c.Value <>
Empty Then
MsgBox "Doublon " & c.Address
Exit Sub
End If
Next c
End If
End Sub

Cordialement JB