Extraction sans doublons, filtrer sur place???

Bonjour à tous, merci de me lire !

Le problème parait simple : j'ai une liste de 50 lignes (une par élève), 3 colonnes (nom, prenom, classe).

Dans cette liste, certains élèves sont notés 2 fois (même nom, prénom, et classe).

Je voudrais que les lignes en double soient supprimées.

Aprés quelques recherches, j'ai essayé le filtre élaboré, avec :

plage : tout le tableau

critére : la ligne 1 (nom prenom classe)

et filtrer sur place, sans doublon.

Ca marche pô du tout!!!

Pourquoi???

Merci encore.

5macro-sppac.xlsm (40.89 Ko)

Bonjour à tous,

Envoie ton fichier, qu'on y jette un œil

Amicalement

Claude.

voici le fichier, merci.

https://www.excel-pratique.com/~files/doc2/uP9BGmodele.xls

la liste est modifiée tous les jours, parfois avec des doublons, que je voudrais supprimer.

Il y a parfois jusqu'a 100 entrées.

re,

il doit y avoir + simple, mais pas trouvé mieux

https://www.excel-pratique.com/~files/doc2/filtre_doublons.xls

Amicalement

Claude.

merci pour le coup de main. Excel refuse d'executer cette macro, car non signée.

Ou peut etre l'administrateur qui refuse VBA, un truc comme ca...

merci quand meme!

je continue de chercher avec les filtres elaborés, ou peut une mise en forme conditionnelle.

re,

Si tu regarde d'un peu + près, tu verras qu'il s'agit d'un filtre élaboré !

Maintenant pour les macros, vois du coté sécurité et active les macros

Claude.

bon bon bon...

les macros, je sais pas vraiment ce que c'est, c'est juste que Excel me dit qu'il ne peut pas les activer a cause de mon niveazu de sécurité. Niveau que je ne peux changer moi meme apparament.

M'enfin.

Mais si c'est c'est un filtre élaboré, super !

Juste, dernière question, comment je fais pour l'appliquer dans mon document a moi???

Un copier-collé de quelque chose peut etre?

Merci encore.

7repartition.xlsm (225.41 Ko)

Bonjour le forum, Bonjour Claude et Loic,

Loïc,

pour que ta Macro soit active, tu va sur "Outil" - "Option" - "Sécurité"-"Sécurité des macros"(en bas à droite) et tu coche "niveau de sécurité moyen".

Pour ce qui est de récupérer tout cela, tu prends le fichier que Claude t'a modifié et tu l'enregistre chez toi soit à la place du tien initial soit sous un autre nom.

Claude, je parcours ton code et j'avoue que je ne comprend pas grand chose. Malgré tout, à un endroit, tu as inscrit ceci:

For i = 2 To Lg 'NB.SI compte les doublons

Cells(i, 5) = WorksheetFunction.CountIf(Range("d2:d32"), Cells(i, 4))

Next i

ce qui fait que le doublon CHEVALET en ligne 34 n'est pas compté. Face à ce constat, j'aimerai savoir si, quand on ajoute des lignes (jusqu'à 500 par exemple), le code change automatiquement ( par exemple ...("d2:d502")... ou s'il faut le modifier à la main? Dans ce dernier cas, y a-t-il une ficelle à ajouter pour que cela devienne automatique?

Bien cordialement, à te relire

Elfi

Bonjour à tous,

Elfi, tu as raison, j'aurais du écrire :

For i = 2 To Lg 'NB.SI compte les doublons
      Cells(i, 5) = WorksheetFunction.CountIf(Range("d2:d" & Lg), Cells(i, 4))
Next i

Puisque la variable Lg existait

Cette macro ne me plait pas, elle mouline de trop !

On doit pouvoir faire mieux

Amicalement

Claude.

Merci Claude,

Je suis heureux de pointillionner dans le VBA.

Il n'en est pas moins vrai que ce langage VBA, pour les trés nombreux profanes que nous sommes dans le forum, reste difficile à appréhender voire à comprendre.

Serait-il possible de "disséquer" chaque étape sur des exemples simples puis évoluants avec un explication compréhensible.

Exemples: que veut dire:

For i = 2 To Lg 'NB.SI compte les doublons

Cells(i, 5) = WorksheetFunction.CountIf(Range("d2:d32"), Cells(i, 4))

Next i

Qu'est-ce que "i"

Qu'est-ce que "cells"

etc

Certe, tu prends conscience de notre ignorance de base (pas informaticiens), et c'est lourd pour toi, mais cela aiderai beaucoup les pesonnes comme moi qui ne font que utiliser vos compétences au lieu de participer.

A te relire de nouveau,

trés amicalement,

re,

Voici un code qui me plait beaucoup mieux,

+ simple et surtout + rapide.

Sub essai2()
'Claude le 23 sept 09
Dim Cel As Range, Lg As Integer, i As Integer
    Application.ScreenUpdating = False
        Lg = Range("A65536").End(xlUp).Row
        Range("a2:c" & Lg).Interior.ColorIndex = xlNone

            For i = 2 To Lg 'concatène
                Cells(i, 4) = Cells(i, 1) & Cells(i, 2) & Cells(i, 3)
            Next i

            For Each Cel In Range("d2:d" & Lg)
                If WorksheetFunction.CountIf(Range("d2:d" & Lg), Cel) > 1 Then
                    Cel.Offset(0, -3).Interior.ColorIndex = 6
                End If
            Next Cel
        Range("d2:d" & Lg).ClearContents 'efface colonne D concaténée
End Sub

Fichier:

https://www.excel-pratique.com/~files/doc2/filtre_doublons2.xls

Dim Cel As Range, Lg As Integer, i As Integer

sont des variables déclarées par Dim,

Commence par des petites macros (en enregistrant), En VBA, on en apprend tous les

jours en regardant çà et là les codes des autres.

çà viendra tous seul, mais il faut pratiquer (macros, macros et encore macros)

Bonne journée

Claude.

Hello Claude,

message reçu, je vais bidouiller encore et encore, il en restera toujours quelque chose. Merci encore pour tout.

Au fait, effectivement, ton nouveau code est nettement plus simple.

A bientôt,

trés cordialement,

Elfi

re,

Comme quoi il ne faut pas que les macros empêchent de réfléchir ,

J'étais parti sur un filtre (à cause du titre du sujet)

Claude.

Rechercher des sujets similaires à "extraction doublons filtrer place"