OVH Cloud OVH Cloud

Supprimer doublons, et actualiser

17 réponses
Avatar
Bastan
Bonjour,

Je cherche un moyen simple de faire la chose suivante:
Ceci est un exemple

J'écris dans la colonne A:
Pierre
Pierre
12
13
Paul
12

Je voudrais trouver dans la colonne B:
Pierre
12
13
Paul


En fait, recopier la colonne A dans la colonne B en supprimant les
doublons, mais, IMPORTANT, je souhaiterais que cela se fasse
automatiquement, à chaque nouvelle entrée dans la colonne A

J'y suis arrivé en vba et à l'aide d'un bouton de commande, mais je
voudrais virer ce bouton...

Merci d'avance pour votre aide ;-)

7 réponses

1 2
Avatar
Bastan
Désolé, mais ça ne fonctionne pas.

Je fais exactement ce que tu dis.

A la première donnée que je rentre en cellule A2, lorsque je quitte la
cellule, j'ai un message d'erreur d'execution 1004 "cette commande
requiert au moins deux lignes de données source" et s'arrête sur cette
ligne : .AdvancedFilter xlFilterCopy, , Range("B1"), True


michdenis avait soumis l'idée :

Absolument pas. Tu fais un clic droit sur l'onglet de ta feuille
et tu choisis la commande "Visualiser le code" et tu colles le
code dans la feuille blanche. C'est tout.
Le code suppose que tes données débutent en ligne 2 et qu'en
ligne 1, tu as des étiquettes de colonne. Ce sont des détails
facilement modifiables dans la procédure si besoin !


Avatar
michdenis
Exemple : http://cjoint.com/?cgegjpAM3s



"Bastan" a écrit dans le message de groupe de discussion :
4b6ca524$0$17490$
Désolé, mais ça ne fonctionne pas.

Je fais exactement ce que tu dis.

A la première donnée que je rentre en cellule A2, lorsque je quitte la
cellule, j'ai un message d'erreur d'execution 1004 "cette commande
requiert au moins deux lignes de données source" et s'arrête sur cette
ligne : .AdvancedFilter xlFilterCopy, , Range("B1"), True


michdenis avait soumis l'idée :

Absolument pas. Tu fais un clic droit sur l'onglet de ta feuille
et tu choisis la commande "Visualiser le code" et tu colles le
code dans la feuille blanche. C'est tout.
Le code suppose que tes données débutent en ligne 2 et qu'en
ligne 1, tu as des étiquettes de colonne. Ce sont des détails
facilement modifiables dans la procédure si besoin !


Avatar
Bastan
Merci, ça fonctionne maintenant (sauf si j'écris dans la ligne de
titre).

Je n'y comprends rien.. (sorti de Do..Loop, For...Next...,If..Then...
et Select Case..., je galère un peu..)
Mais, je vais percer le secret ;-)

Je ne vais pas te laisser te reposer quand même..

Lorsque je remplis la colonne A, la colonne B réagit bien.
Si je supprime des entrées dans A, B se met également à jour, SAUF
lorsque j'efface la dernière donnée dans A (excepté le titre (ligne 1)
auquel je ne touche pas) , alors B ne réagit pas et la dernière donnée
reste affichée.

Ce n'est pas vital, mais ça serait plus "joli".

Une idée ?


michdenis avait soumis l'idée :
Exemple : http://cjoint.com/?cgegjpAM3s



"Bastan" a écrit dans le message de groupe de discussion :
4b6ca524$0$17490$
Désolé, mais ça ne fonctionne pas.

Je fais exactement ce que tu dis.

A la première donnée que je rentre en cellule A2, lorsque je quitte la
cellule, j'ai un message d'erreur d'execution 1004 "cette commande
requiert au moins deux lignes de données source" et s'arrête sur cette
ligne : .AdvancedFilter xlFilterCopy, , Range("B1"), True



Avatar
Mgr T. Banni
tu peux y aller, bastan
michdenis est du genre à faire le 3x8 à lui tout seul :-)
Mgr T.B.

"Bastan" a écrit dans le message de news: 4b6d2350$0$17518$

Je ne vais pas te laisser te reposer quand même..


Avatar
michdenis
| Merci, ça fonctionne maintenant (sauf si j'écris
| dans la ligne de titre).

*** La procédure utilise un filtre élaboré.
*** Le filtre élaboré requiert une étiquette de colonne.

*** Dans ta question, tu as cet énoncé :
| A la première donnée que je rentre en cellule A2
*** il est permis de conclure que A1 contient
l'étiquette de colonne

*** Si tu n'as qu'une cellule où il y a des données soit en
A1, pour le filtre élaboré, il s'agit de l'étiquette de la
colonne et le résultat du filtre ne contient pas
d'enregistrement -> rien à copier en B:B
-> rien ne s'affiche en B1

*** Si tu considères A1 comme une donnée, tu auras si le cas
se présente, une autre donnée dans ta plage égale en A1.
Le filtre considérant A1 comme étiquette de colonne et
non comme une donnée.



En conséquence,


Si en A1, tu as une donnée au lieu d'une étiquette, le
filtre élaborée permettra un doublon
as une donnée



Je n'y comprends rien.. (sorti de Do..Loop, For...Next...,If..Then...
et Select Case..., je galère un peu..)
Mais, je vais percer le secret ;-)

Je ne vais pas te laisser te reposer quand même..

Lorsque je remplis la colonne A, la colonne B réagit bien.
Si je supprime des entrées dans A, B se met également à jour, SAUF
lorsque j'efface la dernière donnée dans A (excepté le titre (ligne 1)
auquel je ne touche pas) , alors B ne réagit pas et la dernière donnée
reste affichée.

Ce n'est pas vital, mais ça serait plus "joli".

Une idée ?


michdenis avait soumis l'idée :
Exemple : http://cjoint.com/?cgegjpAM3s



"Bastan" a écrit dans le message de groupe de discussion :
4b6ca524$0$17490$
Désolé, mais ça ne fonctionne pas.

Je fais exactement ce que tu dis.

A la première donnée que je rentre en cellule A2, lorsque je quitte la
cellule, j'ai un message d'erreur d'execution 1004 "cette commande
requiert au moins deux lignes de données source" et s'arrête sur cette
ligne : .AdvancedFilter xlFilterCopy, , Range("B1"), True



Avatar
michdenis
| est du genre à faire le 3x8 à lui tout seul

C'est plutôt Mgr, l'homme de foi, qui a vendu
son âme à la bonne cause ! Qui s'en plaindrait ?
;-)
Avatar
Bastan
J'espère que les "***" ne traduisent pas un certain énervement ...

Bon, et bien je m'y replonge.
Merci de ta patience ;-)


michdenis a pensé très fort :
Merci, ça fonctionne maintenant (sauf si j'écris
dans la ligne de titre).



*** La procédure utilise un filtre élaboré.
*** Le filtre élaboré requiert une étiquette de colonne.

*** Dans ta question, tu as cet énoncé :
| A la première donnée que je rentre en cellule A2
*** il est permis de conclure que A1 contient
l'étiquette de colonne

*** Si tu n'as qu'une cellule où il y a des données soit en
A1, pour le filtre élaboré, il s'agit de l'étiquette de la
colonne et le résultat du filtre ne contient pas
d'enregistrement -> rien à copier en B:B
-> rien ne s'affiche en B1

*** Si tu considères A1 comme une donnée, tu auras si le cas
se présente, une autre donnée dans ta plage égale en A1.
Le filtre considérant A1 comme étiquette de colonne et
non comme une donnée.



En conséquence,


Si en A1, tu as une donnée au lieu d'une étiquette, le
filtre élaborée permettra un doublon
as une donnée



Je n'y comprends rien.. (sorti de Do..Loop, For...Next...,If..Then...
et Select Case..., je galère un peu..)
Mais, je vais percer le secret ;-)

Je ne vais pas te laisser te reposer quand même..

Lorsque je remplis la colonne A, la colonne B réagit bien.
Si je supprime des entrées dans A, B se met également à jour, SAUF
lorsque j'efface la dernière donnée dans A (excepté le titre (ligne 1)
auquel je ne touche pas) , alors B ne réagit pas et la dernière donnée
reste affichée.

Ce n'est pas vital, mais ça serait plus "joli".

Une idée ?


michdenis avait soumis l'idée :
Exemple : http://cjoint.com/?cgegjpAM3s



"Bastan" a écrit dans le message de groupe de discussion :
4b6ca524$0$17490$
Désolé, mais ça ne fonctionne pas.

Je fais exactement ce que tu dis.

A la première donnée que je rentre en cellule A2, lorsque je quitte la
cellule, j'ai un message d'erreur d'execution 1004 "cette commande
requiert au moins deux lignes de données source" et s'arrête sur cette
ligne : .AdvancedFilter xlFilterCopy, , Range("B1"), True





1 2