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

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

10 réponses

1 2
Avatar
JB
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 wrote:
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 ;-)


Avatar
Bastan
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 wrote:
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 ;-)




Avatar
Bastan
>JB a pensé très fort :



Merci beaucoup !
Avatar
Bastan
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 wrote:
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 ...
Avatar
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 ...


Avatar
michdenis
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" a écrit dans le message de groupe de discussion :
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 ;-)
Avatar
JB
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 wrote:
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 -


Avatar
Bastan
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
'-------------------------------------------



Avatar
Bastan
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


Avatar
michdenis
| 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 !
1 2