OVH Cloud OVH Cloud

"doublons" spéciaux....

5 réponses
Avatar
vincent
bonjour,

je souhaiterai automatiser la suppression de certaines lignes qui possèdent
les caractéristiques suivantes:

dans la colonne A se trouvent les ordres de fabrication.
dans la colonne B se trouvent leurs opérations associées.

je souhaiterais ne conserver qu'un seul ordre de fabrication avec
l'opération associée la plus haute.
il s'agit donc de supprimer des doublons, voire triplé ou plus de la colonne
A mais en tenant compte de la valeur la plus haute de la colonne B.

ex: avant
OF OP
1234 10
1234 20
1234 30
1234 40
5678 5
5678 10
5678 20
.... ....
.... ....
après traitement
OF OP
1234 40
5678 20


merci de votre aide

vincent

5 réponses

Avatar
Gilgamesh
"vincent" a écrit dans le message
de news:
bonjour,

après traitement
OF OP
1234 40
5678 20


-- Une formule permettant de mettre un 1 devant les lignes à conserver :

Si OF est en colonne A1:A8, OP en colonne B1:B8.
=SI(B2=MAX(SI(A2=$A$2:$A$8;$B$2:$B$8));1;0)

Après pour la suppression proprement dit, je ne sais pas (faut une macro et
j'aime pas les macros).

A+

Avatar
Vincent.
Salut Vincent ;-)
J'utiliserai plutôt la formule suivante pour mettre des
zéros et des uns (pour la macro, j'ai mis cette formule en
colonne E) :
=SI(SOMMEPROD(MAX($B$2:$B$8*($A$2:$A$8¢)))²;1;0)
Evidemment, tu peux aller plus loin que 8 en ligne...

Ensuite, la macro pourrait être :

Sub DoublonsSPéc()
For i = 6 To 0 Step -1
If Range("E2").Offset(i).Value <> 1 Then
Range("E2").Offset(i).EntireRow.Delete
End If
Next
End Sub

Ca te va ?

-----Message d'origine-----
bonjour,

je souhaiterai automatiser la suppression de certaines
lignes qui possèdent

les caractéristiques suivantes:

dans la colonne A se trouvent les ordres de fabrication.
dans la colonne B se trouvent leurs opérations associées.

je souhaiterais ne conserver qu'un seul ordre de
fabrication avec

l'opération associée la plus haute.
il s'agit donc de supprimer des doublons, voire triplé ou
plus de la colonne

A mais en tenant compte de la valeur la plus haute de la
colonne B.


ex: avant
OF OP
1234 10
1234 20
1234 30
1234 40
5678 5
5678 10
5678 20
..... ....
..... ....
après traitement
OF OP
1234 40
5678 20


merci de votre aide

vincent


.



Avatar
AV
Plages à adapter (colonne C vide)
Sub zzz_Sup()
With [C2]
.FormulaArray = "²=MAX(($A$2:$A$10¢)*$B$2:$B$10)"
.AutoFill Destination:=[C2:C10]
End With
[C1:C10].AutoFilter Field:=1, Criteria1:úlse
[C2:C10].SpecialCells(xlCellTypeVisible).EntireRow.Delete
Selection.AutoFilter: [C:C].Clear
End Sub

AV

"vincent" a écrit dans le message
news:
bonjour,

je souhaiterai automatiser la suppression de certaines lignes qui possèdent
les caractéristiques suivantes:

dans la colonne A se trouvent les ordres de fabrication.
dans la colonne B se trouvent leurs opérations associées.

je souhaiterais ne conserver qu'un seul ordre de fabrication avec
l'opération associée la plus haute.
il s'agit donc de supprimer des doublons, voire triplé ou plus de la colonne
A mais en tenant compte de la valeur la plus haute de la colonne B.

ex: avant
OF OP
1234 10
1234 20
1234 30
1234 40
5678 5
5678 10
5678 20
.... ....
.... ....
après traitement
OF OP
1234 40
5678 20


merci de votre aide

vincent




Avatar
vincent
merci à tous celà marche très bien...

vincent

"AV" a écrit dans le message de
news:bmjlo4$nbh$
Plages à adapter (colonne C vide)
Sub zzz_Sup()
With [C2]
.FormulaArray = "²=MAX(($A$2:$A$10¢)*$B$2:$B$10)"
.AutoFill Destination:=[C2:C10]
End With
[C1:C10].AutoFilter Field:=1, Criteria1:úlse
[C2:C10].SpecialCells(xlCellTypeVisible).EntireRow.Delete
Selection.AutoFilter: [C:C].Clear
End Sub

AV

"vincent" a écrit dans le
message

news:
bonjour,

je souhaiterai automatiser la suppression de certaines lignes qui
possèdent


les caractéristiques suivantes:

dans la colonne A se trouvent les ordres de fabrication.
dans la colonne B se trouvent leurs opérations associées.

je souhaiterais ne conserver qu'un seul ordre de fabrication avec
l'opération associée la plus haute.
il s'agit donc de supprimer des doublons, voire triplé ou plus de la
colonne


A mais en tenant compte de la valeur la plus haute de la colonne B.

ex: avant
OF OP
1234 10
1234 20
1234 30
1234 40
5678 5
5678 10
5678 20
.... ....
.... ....
après traitement
OF OP
1234 40
5678 20


merci de votre aide

vincent








Avatar
Alain CROS
Bonjour.

Cette proc te créer une nouvelle feuille avec les informations qui t'intéresse.
Tes données en colonne A et B de Feuil1.
Insertion Nom Définir OF = DECALER(Feuil1!$A$A;;;NBVAL(Feuil1!$A:$A))

Sub Doublonspeciaux()
Dim WS As Worksheet, LeNom As String, NbRow As Long
Set WS = Worksheets.Add
WS.Name = "PageSansDoublons"
NbRow = [OF].Rows.Count
Range([OF].Address(external:=True)).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=WS.Range("A1:A" & NbRow), Unique:=True
LeNom = [OF].Parent.Name
WS.[B1] = Worksheets(LeNom).[B1]
WS.[B2].FormulaArray = "=MAX(IF(" & LeNom & "!A$2:A$" & NbRow & _
"¢," & LeNom & "!B$2:B$" & NbRow & ",""""))"
WS.[B2].Resize(Application.CountA(WS.[A:A]) - 1).FillDown
Set WS = Nothing
End Sub

Alain CROS.

"vincent" a écrit dans le message de news:
bonjour,

je souhaiterai automatiser la suppression de certaines lignes qui possèdent
les caractéristiques suivantes:

dans la colonne A se trouvent les ordres de fabrication.
dans la colonne B se trouvent leurs opérations associées.

je souhaiterais ne conserver qu'un seul ordre de fabrication avec
l'opération associée la plus haute.
il s'agit donc de supprimer des doublons, voire triplé ou plus de la colonne
A mais en tenant compte de la valeur la plus haute de la colonne B.

ex: avant
OF OP
1234 10
1234 20
1234 30
1234 40
5678 5
5678 10
5678 20
.... ....
.... ....
après traitement
OF OP
1234 40
5678 20


merci de votre aide

vincent