Supprimer doublons, et actualiser

Le
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 ;-)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #21129771
Bonsoir,


http://boisgontierjacques.free.fr/fichiers/fonctionsperso/FonctionSansDoubl ons3.xls
http://boisgontierjacques.free.fr/fichiers/fonctionsperso/Fonction_sansdoub lonsTrie.xls


Function SansDoublons2(champ As Range)
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In champ
If Not mondico.Exists(c.Value) And c.Value <> "" Then mondico.Add
c.Value, c.Value
Next c
Dim temp()
ReDim temp(1 To champ.Count)
i = 1
For Each c In mondico.items
temp(i) = c
i = i + 1
Next
SansDoublons2 = Application.Transpose(temp)
End Function

Sélectionner C2:C10
=sansdoublons(B2:B15)
valider avec maj+ctrl+entrée

JB

On 4 fév, 17:34, 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 ;-)


Bastan
Le #21130061
JB a présenté l'énoncé suivant :
Bonsoir,


http://boisgontierjacques.free.fr/fichiers/fonctionsperso/FonctionSansDoublons3.xls
http://boisgontierjacques.free.fr/fichiers/fonctionsperso/Fonction_sansdoublonsTrie.xls


Function SansDoublons2(champ As Range)
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In champ
If Not mondico.Exists(c.Value) And c.Value <> "" Then mondico.Add
c.Value, c.Value
Next c
Dim temp()
ReDim temp(1 To champ.Count)
i = 1
For Each c In mondico.items
temp(i) = c
i = i + 1
Next
SansDoublons2 = Application.Transpose(temp)
End Function

Sélectionner C2:C10
=sansdoublons(B2:B15)
valider avec maj+ctrl+entrée

JB

On 4 fév, 17:34, Bastan
Bonjour,

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

J'écris dans la colonne A:
Pierre




IMPECCABLE !

Merci beaucoup, je vais pouvoir frimer au boulot ;-))


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 ;-)




Bastan
Le #21130051
>JB a pensé très fort :



Merci beaucoup !
Bastan
Le #21132181
Dans son message précédent, JB a écrit :
Bonsoir,


http://boisgontierjacques.free.fr/fichiers/fonctionsperso/FonctionSansDoublons3.xls
http://boisgontierjacques.free.fr/fichiers/fonctionsperso/Fonction_sansdoublonsTrie.xls


Function SansDoublons2(champ As Range)
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In champ
If Not mondico.Exists(c.Value) And c.Value <> "" Then mondico.Add
c.Value, c.Value
Next c
Dim temp()
ReDim temp(1 To champ.Count)
i = 1
For Each c In mondico.items
temp(i) = c
i = i + 1
Next
SansDoublons2 = Application.Transpose(temp)
End Function

Sélectionner C2:C10
=sansdoublons(B2:B15)
valider avec maj+ctrl+entrée

JB

On 4 fév, 17:34, 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 ;-)





Me revoici, et c'est encore pour demander de l'aide .

Dans "=sansdoublonstrié(A2:A11)" j'essaie de modifier la plage, A2:A50
par exemple, mais Excel refuse, en me disant : "impossible de modifier
une partie de matrice"

Et me revoici bloqué...

Help ...
Bastan
Le #21132171
En fait, je viens de trouver qu'il faut valider par CTRL/MAJ/ENTREE
Mais après ça ne fonctionne plus...


Me revoici, et c'est encore pour demander de l'aide .

Dans "=sansdoublonstrié(A2:A11)" j'essaie de modifier la plage, A2:A50 par
exemple, mais Excel refuse, en me disant : "impossible de modifier une partie
de matrice"

Et me revoici bloqué...

Help ...


michdenis
Le #21133391
Bonjour,

Une autre approche :

Copie ce qui suit dans le code module de ta feuille où
l'action se déroule.

Dans la colonne B de ta feuille, tu n'auras pas de doublon
et tes données seront filtrées en ordre croissant à chaque
modification que tu feras en colonne A
'-------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 Then
Application.EnableEvents = False
With Range("A1:A" & Range("A65536").End(xlUp).Row)
.AdvancedFilter xlFilterCopy, , Range("B1"), True
End With
With Range("B1:B" & Range("B65536").End(xlUp).Row)
.Sort Key1:=.Item(2, 1), order1:=xlAscending, Header:=xlYes
End With
Application.EnableEvents = True
End If
End Sub
'-------------------------------------------




"Bastan" 4b6af72d$0$922$
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 ;-)
JB
Le #21133781
Bonjour,

-Pour écrire une formule matricielle, il faut sélectionner tout le
champ puis valider avec maj+ctrl+entrée
--Poureffacer une formule matricielle, il faut sélectionner tout le
champ puis apputer sur la touche Suppr.

JB

On 4 fév, 23:31, Bastan
En fait, je viens de trouver qu'il faut valider par CTRL/MAJ/ENTREE
Mais après ça ne fonctionne plus...





> Me revoici, et c'est encore pour demander de l'aide .

> Dans "=sansdoublonstrié(A2:A11)" j'essaie de modifier la plage, A2: A50 par
> exemple, mais Excel refuse, en me disant : "impossible de modifier une partie
> de matrice"

> Et me revoici bloqué...

> Help ...- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Bastan
Le #21138721
Je ne dois pas être doué, mais ta solution ne fonctionne pas chez
moi...
Il suffit juste de créer un module, et d'y coller ce code ?



Après mûre réflexion, michdenis a écrit :
Bonjour,

Une autre approche :

Copie ce qui suit dans le code module de ta feuille où
l'action se déroule.

Dans la colonne B de ta feuille, tu n'auras pas de doublon
et tes données seront filtrées en ordre croissant à chaque
modification que tu feras en colonne A
'-------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 Then
Application.EnableEvents = False
With Range("A1:A" & Range("A65536").End(xlUp).Row)
.AdvancedFilter xlFilterCopy, , Range("B1"), True
End With
With Range("B1:B" & Range("B65536").End(xlUp).Row)
.Sort Key1:=.Item(2, 1), order1:=xlAscending, Header:=xlYes
End With
Application.EnableEvents = True
End If
End Sub
'-------------------------------------------



Bastan
Le #21138851
Merci, j'avance doucement, mais c'est pas encore ça.

Dans le fichier que tu m'as envoyé "SansdoublonsTrie.xls"

- Je sélectionne D2:D14 et je supprime. OK
- Je resélectionne B2:B14, et dans la barre de formules j'écris
"=sansdoublonstrié(A2:A20)" pour modifier la plage d'origine qui est
A2:B11
- Je valide (maj+ctrl+entrée)
- Et là, Excel me dit "Nom ambigu detecté: SansDoublonTrié" et dans la
plage D2:D14 chaque cellule affiche #NOM?

Que faire docteur ? ;-)


JB a exprimé avec précision :
Bonjour,

-Pour écrire une formule matricielle, il faut sélectionner tout le
champ puis valider avec maj+ctrl+entrée
--Poureffacer une formule matricielle, il faut sélectionner tout le
champ puis apputer sur la touche Suppr.

JB


michdenis
Le #21139801
| Il suffit juste de créer un module, et d'y coller ce code ?

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 !
Publicité
Poster une réponse
Anonyme