OVH Cloud OVH Cloud

Doublons... mais en ligne cette fois

5 réponses
Avatar
rage
Bonjour,
J'ai un tableau constitué de la sorte :
AZER | UYTR | AZER | HGFD | VCXW | MLKJ
FGHG | WXCV | YUIO | GFDS| FGHG | YUIO

Mon soucis c'est que je souhaiterais nettoyer chaque lignes de ses doublons
(sans opérer de tri si possible).
J'ai le sentiment que VBA peut le faire (utilisation d'une array ?) mais
j'avoue ne pas savoir par quel bout le prendre

MErci de votre aide

5 réponses

Avatar
michdenis
Bonjour Rage,

Essaie ceci en adaptant le nom de la feuille et
la plage de cellules où sont tes données.

'--------------------------------
Sub test()
Dim Rg As Range, R as range
Dim A As Long, nb As Long

With Worksheets("Feuil2")
Set Rg = .Range("A1:F" & .Range("A65536").End(xlUp).Row)
End With

For Each r In Rg.Rows
nb = Rg.Columns.Count
For A = nb To 1 Step -1
If Application.CountIf(r, Cells(r.Row, A)) > 1 Then
Cells(r.Row, A).Delete xlToLeft
End If
Next
Next
Set Rg = Nothing : Set R = Nothing
End Sub
'---------------------------


Salutations!



"rage" a écrit dans le message de news:
Bonjour,
J'ai un tableau constitué de la sorte :
AZER | UYTR | AZER | HGFD | VCXW | MLKJ
FGHG | WXCV | YUIO | GFDS| FGHG | YUIO

Mon soucis c'est que je souhaiterais nettoyer chaque lignes de ses doublons
(sans opérer de tri si possible).
J'ai le sentiment que VBA peut le faire (utilisation d'une array ?) mais
j'avoue ne pas savoir par quel bout le prendre

MErci de votre aide
Avatar
FxM
Bonjour,
J'ai un tableau constitué de la sorte :
AZER | UYTR | AZER | HGFD | VCXW | MLKJ
FGHG | WXCV | YUIO | GFDS| FGHG | YUIO

Mon soucis c'est que je souhaiterais nettoyer chaque lignes de ses doublons
(sans opérer de tri si possible).
J'ai le sentiment que VBA peut le faire (utilisation d'une array ?) mais
j'avoue ne pas savoir par quel bout le prendre

MErci de votre aide



Bonsoir,

Pourquoi "sans trier" ?

Tu affectes un numéro croissant à chaque entrée (dans la liste ou
ailleurs puisque tu parles d'array) :
AZER -> 1 | UYTR -> 2 | AZER -> 3 | HGFD -> 4 | VCXW -> 5 | MLKJ -> 6
FGHG -> 7 | WXCV -> 8 | YUIO -> 9 | GFDS -> 10| FGHG -> 11| YUIO -> 12

Tu tries suivant les entrées :
AZER -> 1 | AZER -> 3 | FGHG -> 7 | FGHG -> 11| GFDS -> 10| HGFD -> 4
MLKJ -> 6 | UYTR -> 2 | VCXW -> 5 | WXCV -> 8 | YUIO -> 9 | YUIO -> 12

Tu supprimes les doublons :
AZER -> 1 | FGHG -> 7 | GFDS -> 10| HGFD -> 4
MLKJ -> 6 | UYTR -> 2 | VCXW -> 5 | WXCV -> 8 | YUIO -> 9 | YUIO -> 12

Tu retries selon le nombre maintenant :
AZER -> 1 | UYTR -> 2 | HGFD -> 4 | VCXW -> 5 | MLKJ -> 6
FGHG -> 7 | WXCV -> 8 | YUIO -> 9 | GFDS -> 10| YUIO -> 12

Tu enlèves les numéros ajoutés :
AZER | UYTR | HGFD | VCXW | MLKJ
FGHG | WXCV | YUIO | GFDS | YUIO

Et voilà.

@+
FxM

Avatar
jps
et pourquoi qu'il s'est pas supprimé le doublon YUIO, hein, monsieur FxM????
que je ne vous y reprenne pas....
jps

"FxM" a écrit dans le message de news:

Bonjour,
J'ai un tableau constitué de la sorte :
AZER | UYTR | AZER | HGFD | VCXW | MLKJ
FGHG | WXCV | YUIO | GFDS| FGHG | YUIO Mon soucis c'est que je
souhaiterais nettoyer chaque lignes de ses doublons (sans opérer de tri
si possible).
J'ai le sentiment que VBA peut le faire (utilisation d'une array ?) mais
j'avoue ne pas savoir par quel bout le prendre

MErci de votre aide



Bonsoir,

Pourquoi "sans trier" ?

Tu affectes un numéro croissant à chaque entrée (dans la liste ou ailleurs
puisque tu parles d'array) :
AZER -> 1 | UYTR -> 2 | AZER -> 3 | HGFD -> 4 | VCXW -> 5 | MLKJ -> 6
FGHG -> 7 | WXCV -> 8 | YUIO -> 9 | GFDS -> 10| FGHG -> 11| YUIO -> 12

Tu tries suivant les entrées :
AZER -> 1 | AZER -> 3 | FGHG -> 7 | FGHG -> 11| GFDS -> 10| HGFD -> 4
MLKJ -> 6 | UYTR -> 2 | VCXW -> 5 | WXCV -> 8 | YUIO -> 9 | YUIO -> 12

Tu supprimes les doublons :
AZER -> 1 | FGHG -> 7 | GFDS -> 10| HGFD -> 4
MLKJ -> 6 | UYTR -> 2 | VCXW -> 5 | WXCV -> 8 | YUIO -> 9 | YUIO -> 12

Tu retries selon le nombre maintenant :
AZER -> 1 | UYTR -> 2 | HGFD -> 4 | VCXW -> 5 | MLKJ -> 6
FGHG -> 7 | WXCV -> 8 | YUIO -> 9 | GFDS -> 10| YUIO -> 12

Tu enlèves les numéros ajoutés :
AZER | UYTR | HGFD | VCXW | MLKJ
FGHG | WXCV | YUIO | GFDS | YUIO

Et voilà.

@+
FxM



Avatar
FxM
C'était pour voir si tu suivais ! ;o)

@+
FxM


et pourquoi qu'il s'est pas supprimé le doublon YUIO, hein, monsieur
FxM????
que je ne vous y reprenne pas....
jps

"FxM" a écrit dans le message de news:

Bonjour,
J'ai un tableau constitué de la sorte :
AZER | UYTR | AZER | HGFD | VCXW | MLKJ
FGHG | WXCV | YUIO | GFDS| FGHG | YUIO Mon soucis c'est que je
souhaiterais nettoyer chaque lignes de ses doublons (sans opérer de
tri si possible).
J'ai le sentiment que VBA peut le faire (utilisation d'une array ?)
mais j'avoue ne pas savoir par quel bout le prendre

MErci de votre aide



Bonsoir,

Pourquoi "sans trier" ?

Tu affectes un numéro croissant à chaque entrée (dans la liste ou
ailleurs puisque tu parles d'array) :
AZER -> 1 | UYTR -> 2 | AZER -> 3 | HGFD -> 4 | VCXW -> 5 | MLKJ -> 6
FGHG -> 7 | WXCV -> 8 | YUIO -> 9 | GFDS -> 10| FGHG -> 11| YUIO -> 12

Tu tries suivant les entrées :
AZER -> 1 | AZER -> 3 | FGHG -> 7 | FGHG -> 11| GFDS -> 10| HGFD -> 4
MLKJ -> 6 | UYTR -> 2 | VCXW -> 5 | WXCV -> 8 | YUIO -> 9 | YUIO -> 12

Tu supprimes les doublons :
AZER -> 1 | FGHG -> 7 | GFDS -> 10| HGFD -> 4
MLKJ -> 6 | UYTR -> 2 | VCXW -> 5 | WXCV -> 8 | YUIO -> 9 | YUIO -> 12

Tu retries selon le nombre maintenant :
AZER -> 1 | UYTR -> 2 | HGFD -> 4 | VCXW -> 5 | MLKJ -> 6
FGHG -> 7 | WXCV -> 8 | YUIO -> 9 | GFDS -> 10| YUIO -> 12

Tu enlèves les numéros ajoutés :
AZER | UYTR | HGFD | VCXW | MLKJ
FGHG | WXCV | YUIO | GFDS | YUIO

Et voilà.

@+
FxM






Avatar
rage
Merci beaucoup messieurs ca marche à merveille.
Par fierté j'aurais aimé comprendre mais ce sera pour un prochaine fois

Bonne journée et merci encore


Bonjour Rage,

Essaie ceci en adaptant le nom de la feuille et
la plage de cellules où sont tes données.

'--------------------------------
Sub test()
Dim Rg As Range, R as range
Dim A As Long, nb As Long

With Worksheets("Feuil2")
Set Rg = .Range("A1:F" & .Range("A65536").End(xlUp).Row)
End With

For Each r In Rg.Rows
nb = Rg.Columns.Count
For A = nb To 1 Step -1
If Application.CountIf(r, Cells(r.Row, A)) > 1 Then
Cells(r.Row, A).Delete xlToLeft
End If
Next
Next
Set Rg = Nothing : Set R = Nothing
End Sub
'---------------------------


Salutations!



"rage" a écrit dans le message de news:
Bonjour,
J'ai un tableau constitué de la sorte :
AZER | UYTR | AZER | HGFD | VCXW | MLKJ
FGHG | WXCV | YUIO | GFDS| FGHG | YUIO

Mon soucis c'est que je souhaiterais nettoyer chaque lignes de ses doublons
(sans opérer de tri si possible).
J'ai le sentiment que VBA peut le faire (utilisation d'une array ?) mais
j'avoue ne pas savoir par quel bout le prendre

MErci de votre aide