Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
[ RESOLU ]Suppresion de doublons dans une lignes de plusieurs cellules.
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 !
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 : 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
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 : [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
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, …
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 …
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 …
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é …
- 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