Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

RESOLU - Fonction / Macro qui supprime les doublons

  • Initiateur de la discussion Initiateur de la discussion Melomie
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Melomie

XLDnaute Occasionnel
Bonjour,

Question toute simple:
Je cherche une fonction ou une macro qui supprimerait les doublons d'une colonne.
En fait j'ai une colonne avec des références, certaines de ces références sont en doubles dans la colonne et je cherche donc à supprimer les doublons pour qu'il ne reste qu'un référence de chaque...

J'ai essayé à la main mais ma colonne est bien trop grosse, ce serait bcp trop long...


Merci par avance ! 😉
 
Dernière édition:
Re : Fonction / Macro qui supprime les doublons

Bonjour Rachid_0661, merci pour ta réponse,

Le souci c'est que dans mon cas, il faudrait que les valeurs restent sur leurs mêmes lignes, comme dans mon exemple ci joint.

david84 m'a trouvé une bonne solution, seul hic, il me faudrait avoir des zéros à la place de blancs mais au pire ce n'est pas très grave...
 

Pièces jointes

  • exemple.JPG
    69.4 KB · Affichages: 78
  • exemple.JPG
    69.4 KB · Affichages: 82
  • exemple.JPG
    69.4 KB · Affichages: 74
Re : Fonction / Macro qui supprime les doublons

Bonsoir Melomie, Rachid_0661, David84

Je poste ce petit bout de code simple mais je me suis vraiment cassé la tête pour trouver cette astuce. Boisgontier ma aider à trouver l’astuce pour extraire juste la troisième colonne (dans d’autre poste) c’est un expert très agréable avec son site très riche.

Normalement cela doit traiter vos donner à la vitesse de Leclerc sur des milliers de donner sans ralentissement.

VB:
Sub Test()

Dim t() As Variant

f = Range("a65536").End(xlUp).Row
Range(Cells(2, 3), Cells(f, 3)).Clear

t = Range(Cells(2, 1), Cells(f, 3))
For i = 1 To UBound(t, 1)
x = i + 1
For j = x To UBound(t, 1)
If t(i, 2) = t(j, 2) Then
t(j, 3) = t(j, 3) + 1
End If
Next j
Next i

For i = 1 To UBound(t, 1)
If t(i, 3) = Empty Then
t(i, 3) = t(i, 2)
ElseIf t(i, 3) <> Empty Then
t(i, 3) = 0
End If
Next i

'Restitution de la colone 3 uniquement (Merci à Boisgontier)
Cells(2, 3).Resize(UBound(t, 1)) = Application.Index(t, , 3)
 
End Sub

Au plaisir de vous aider

Laurent
 

Pièces jointes

Dernière édition:
Re : Fonction / Macro qui supprime les doublons

ça fonctionne ! voici mon bout de code:

Sheets("Feuil1").Range("I1") = "Stock sans doublons"
Sheets("Feuil1").Range("I2").FormulaLocal = "=SI(NB.SI(H$2:H2;H2)=1;H2;0)"

Merci à tous !
 
Re : Fonction / Macro qui supprime les doublons

Bonsoir,

Solution 1

Code:
Sub supdoublons()
  Set mondico = CreateObject("Scripting.Dictionary")
  For Each c In Range("a2", [a65000].End(xlUp))
    mondico(c.Value) = c.Offset(, 1)
  Next c
  [E2].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
  [F2].Resize(mondico.Count, 1) = Application.Transpose(mondico.items)
End Sub


Solution2


On masque les doublons par mfc
 

Pièces jointes

Re : Fonction / Macro qui supprime les doublons

Bonjour à tous,

laurent950, ta solution fonctionnait aussi, mis à part que les zéro qui étaient générés quand il y avait doublons, n'étaient (je pense) pas considérés comme des chiffres. On ne pouvait pas les utiliser par la suite pour faire un calcul. Sinon ta solution était très rapide, c'est vrai !

Merci
 
Re : Fonction / Macro qui supprime les doublons

Boisgontier,

je n'ai pas encore testé la solution 1, mais la solution 2 ne peut pas s'adapter à ma situation étant donné que les chiffres sans doublons se mettent tous à la suite au lieu de rester sur leurs lignes respectives...

Je test la 1 !
 
Re : Fonction / Macro qui supprime les doublons

Le souci maintenant, c'est plutôt que dans la colonne où il cherche les doublons il m'arrive d'avoir des #N/A qui me faussent mes résultats par la suite...

Savez vous comment je peux faire pour avoir des zéros à la place ?
Ma fonction est la suivante:

ActiveCell.FormulaR1C1 = _
"=VLOOKUP(C[-7],'P:\DOSSIER ELODIE BLANCHET\Macro\[CCNV2.xls]Feuil1'!R2C8:R1000C10,3)"

et il faudrait que, si erreur, elle me mette des zéros...
je ne suis vraiment pas douée, ça doit être assez basique mais je n'ai aucune idée de comment faire !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
385
Réponses
3
Affichages
190
Réponses
5
Affichages
142
Réponses
5
Affichages
448
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…