[ RESOLU ]Suppresion de doublons dans une lignes de plusieurs cellules.

Guido

XLDnaute Accro
Bonjour Le Forum

J'aimerais suppimer les doublons dans une lignes de plusieurs cellules.

Voir le petit Fichier

Merci d'avance

Guido
 

Pièces jointes

  • Suprimer les doublons...xls
    15 KB · Affichages: 94

thebenoit59

XLDnaute Accro
Re : Suppresion de doublons dans une lignes de plusieurs cellules.

Bonjour Guido.

Avec le code suivant, tu obtiens une réponse à ta demande.
Je te laisse le soin d'adapter les colonnes à ton fichier original.

Code:
Sub Suppression_Doublon_Ligne()
Dim d As Object
Dim i As Long
    Set d = CreateObject("scripting.dictionary")
    For i = 4 To 11: d(Cells(13, i).Value) = "": Next i
    Range("d13:k13").ClearContents
    Range("d13").Resize(, d.Count).Value = d.keys
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Suppresion de doublons dans une lignes de plusieurs cellules.

Bonjour le fil, bonjour le forum,

Pareil que TheBenoit mais comme le code est commenté, j'envoie quand même... :
Code:
Sub Macro1()[COLOR=#000080][/COLOR]
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)

Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
Set PL = Range("D13:K13") 'définit la plage PL
For Each CEL In PL 'boucle sur toutes les cellules CEL de la palge PL
    D(CEL.Value) = "" 'alimente le dictionnaire D
Next CEL 'prochaine cellule de la boucle
PL.ClearContents 'vide la plage PL
Range("D13").Resize(1, D.Count).Value = D.keys 'renvoie dans D13 redimensionnée les éléments du dicttionnaire D sans doublon
End Sub
 

Guido

XLDnaute Accro
Re : Suppresion de doublons dans une lignes de plusieurs cellules.

Bonjour Guido.

Avec le code suivant, tu obtiens une réponse à ta demande.
Je te laisse le soin d'adapter les colonnes à ton fichier original.

Code:
Sub Suppression_Doublon_Ligne()
Dim d As Object
Dim i As Long
    Set d = CreateObject("scripting.dictionary")
    For i = 4 To 11: d(Cells(13, i).Value) = "": Next i
    Range("d13:k13").ClearContents
    Range("d13").Resize(, d.Count).Value = d.keys
End Sub


Re

Je reviens pour 3 plage differente,

D23K23----et D53K53 -----et D73K73 ou dois inserer le rajout

Merci

Guido
 

laetitia90

XLDnaute Barbatruc
Re : [resolu]Suppresion de doublons dans une lignes de plusieurs cellules.

bonjour Guido :) thebenoit59:) Robert:):)

contente de te croiser le Robert:):)

le mieux passer par un array definir tes plages

Code:
For Each s In Array(plag1, plag2, plag3, plag4)
 'ton code
 Next s

attention entre chaque plage vider ton dico

Code:
d.RemoveAll

pas le temps de regarder maintenant desole:(
 

Guido

XLDnaute Accro
Re : [resolu]Suppresion de doublons dans une lignes de plusieurs cellules.

bonjour Guido :) thebenoit59:) Robert:):)

contente de te croiser le Robert:):)

le mieux passer par un array definir tes plages

Code:
For Each s In Array(plag1, plag2, plag3, plag4)
 'ton code
 Next s

attention entre chaque plage vider ton dico

Code:
d.RemoveAll

pas le temps de regarder maintenant desole:(

ok ,ben quand tu auras un peu de temps

Bonsoir le Forum

La je ne connais rien...

est ce que quelqu'un peut juste mecrire la macro svp


car j'ai essayé d'inserer le texte 4 fois en modifiant les plages sans succes.

Merci Guido
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : [resolu]Suppresion de doublons dans une lignes de plusieurs cellules.

Bonsoir le fil, bonsoir le forum,

Content aussi Lætitia...

Guido, à peine ta question posée que tu as obtenu une réponse. Mais, tu changes la donne ! Et tu obtiens quand même une autre réponse. Que tu n'y parviens pas à adapter...
Donc, pour les prochaines fois, je te conseille d'énoncer clairement ton vrai problème. On y gagnera tous du temps...

Le code ci-dessous basé sur la proposition de Lætitia :
Code:
Sub Macro1()
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim TPL As Variant 'décalre la variable TPL (Tableau des PLages)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)

Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
TPL = Array(Range("D13:K13"), Range("D23:K33"), Range("D53:K53"), Range("D73:K73")) 'définit le tableau des plages TPL
For I = 0 To UBound(TPL, 1) 'boucle 1 : sur toutes les plages du tableau des plages TPL
    Set PL = TPL(I) 'définit la plage PL
    For Each CEL In PL 'boucle 2 : sur toutes les cellules CEL de la plage PL
        D(CEL.Value) = "" 'alimente le dictionnaire D
    Next CEL 'prochaine cellule de la boucle 2
    PL.ClearContents 'vide la plage PL
    'renvoie dans la première cellule redimensionnée de la plage PL les éléments du dictionnaire D sans doublon
    PL.Cells(1, 1).Resize(1, D.Count).Value = D.keys
    D.RemoveAll 'vide le dictionnaire D (Choukran Lætitia)
Next I 'prochaine plage de la boucle 1
End Sub
 

Guido

XLDnaute Accro
Re : Suppresion de doublons dans une lignes de plusieurs cellules.

Re

Bonjour Robert et le Forum

Oui,parfois je m'exprime mal,je m'en excuse c'est peut etre l'age...

je vais suivre ta proposition,merci

A plus

slts

Guido
 

Marc L

XLDnaute Occasionnel
Une autre voie …


Bonjour, (salut Robert !)

sans dictionnaire, juste via le B-A-BA d'Excel, la fonction EQUIV (Match en VBA) :

VB:
Sub Demo()
         Dim Rg As Range, C%, VA, V
    For Each Rg In Feuil1.[D13:K13,D23:K23,D53:K53,D73:K73].Rows
             C = 0
            VA = Rg.Value
            ReDim VR(1 To UBound(VA, 2))
        For Each V In VA
            If IsError(Application.Match(V, VR, 0)) Then C = C + 1: VR(C) = V
        Next
             Rg.Value = VR
    Next
End Sub
_______________________________________________________________________________
Merci de cliquer sur J'aime ce post en bas à gauche de chaque message ayant aidé …

_______________________________________________________________________________
Je suis Paris, Charlie, Bruxelles, …
 
Dernière édition:

Marc L

XLDnaute Occasionnel

Merci de ton retour !

Mon code précédent gère chaque plage quelles que soient les cellules de début et de fin.
Si ton besoin est toujours en ligne entre les colonnes D & K,
l'écriture des plages peut être réduite juste aux numéros de lignes si cela t'intéresse …
 
Dernière édition:

Guido

XLDnaute Accro
Re : [ RESOLU ]Suppresion de doublons dans une lignes de plusieurs cellules.


Merci de ton retour !

Mon code précédent gère chaque plage quelles que soient les cellules de début et de fin.
Si ton besoin est toujours en ligne entre les colonnes D & K,
l'écriture des plages peut être réduite juste aux numéros de lignes si cela t'intéresse …

Bonjour Marc L

Merci pour l'info

a bientôt

slts

Guido
 

Marc L

XLDnaute Occasionnel
Version avec juste les numéros de lignes :

VB:
Sub Demo2()
        Dim C%, R, V
        Application.ScreenUpdating = False
    For Each R In [{13,23,53,73}]
            C = 0
            ReDim VA(1 To 8)
        With Feuil1.Cells(R, 4).Resize(, 8)
            For Each V In .Value
                If IsError(Application.Match(V, VA, 0)) Then C = C + 1: VA(C) = V
            Next
                .Value = VA
        End With
    Next
        Application.ScreenUpdating = True
End Sub
_______________________________________________________________________________
Merci de cliquer sur J'aime ce post en bas à gauche de chaque message ayant aidé …
 

Discussions similaires

Réponses
11
Affichages
553

Statistiques des forums

Discussions
314 207
Messages
2 107 274
Membres
109 791
dernier inscrit
frederic.perrier@hotmail.