OVH Cloud OVH Cloud

faire apparaître des doublons

5 réponses
Avatar
fred_naizin
Bonjour,
dans un tableau apparaissent:
- codes articles
- date1
- date2
Pour chaque code article, j'ais Date1 et Date2

je voudrai trier des données de la façon suivante: pour les doublons de
codes articles uniquement,avoir sur une même ligne la "date1" minimum et
"date2" maximun.
Je vous remercie d'avance
cordialement
fred

5 réponses

Avatar
Ellimac
Bonjour,

Le tableau croisé y est presque :
en ligne le code article et pour chacun le Min de la date
1 et le Max de la date 2. Cela fait 2 lignes pour chaque
code article.

Camille

-----Message d'origine-----
Bonjour,
dans un tableau apparaissent:
- codes articles
- date1
- date2
Pour chaque code article, j'ais Date1 et Date2

je voudrai trier des données de la façon suivante: pour
les doublons de

codes articles uniquement,avoir sur une même ligne
la "date1" minimum et

"date2" maximun.
Je vous remercie d'avance
cordialement
fred


.



Avatar
Bob Phillips
Bonjour Fred,

Fait cette macro aide?

Sub Reformat()
Dim cLastRow As Long
Dim i As Long
Dim rng As Range

cLastRow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To cLastRow Step 3
Cells(i, "B").Value = Cells(i + 1, "A").Value
Cells(i, "C").Value = Cells(i + 2, "A").Value
If rng Is Nothing Then
Set rng = Cells(i + 1, "B").Resize(2, 1)
Else
Set rng = Union(rng, Cells(i + 1, "B").Resize(2, 1))
End If
Next i
If Not rng Is Nothing Then
rng.EntireRow.Delete
End If

End Sub

--

HTH

RP
(remove nothere from the email address if mailing direct)


"fred_naizin" wrote in message
news:
Bonjour,
dans un tableau apparaissent:
- codes articles
- date1
- date2
Pour chaque code article, j'ais Date1 et Date2

je voudrai trier des données de la façon suivante: pour les doublons de
codes articles uniquement,avoir sur une même ligne la "date1" minimum et
"date2" maximun.
Je vous remercie d'avance
cordialement
fred




Avatar
fred_naizin
bonjour et merci pour votre aide.
Ta macro fait planter Excel. Je ne sais pas de quoi ça vient.
Je reformule ma question:
Il s'agit de code article stocké et ces même codes destockés; voici à quoi
ressemble ma feuille Excel

codeart|état colis|date
12 stocké 12/12/04
12 stocké 15/01/05
13 stocké 01/02/05
12 destocké 26/12/01

je souhaiterai qu'Excel supprimer tout d'abord les ligne unique (ici le code
"13"). Puis, pour un code article commun, n'afficher que la date la + longue
pour le "destocké" et que la date la + courte pour le stocké

En espérant avoir été précis, je vous remercie encore
cordialement
fred



Bonjour Fred,

Fait cette macro aide?

Sub Reformat()
Dim cLastRow As Long
Dim i As Long
Dim rng As Range

cLastRow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To cLastRow Step 3
Cells(i, "B").Value = Cells(i + 1, "A").Value
Cells(i, "C").Value = Cells(i + 2, "A").Value
If rng Is Nothing Then
Set rng = Cells(i + 1, "B").Resize(2, 1)
Else
Set rng = Union(rng, Cells(i + 1, "B").Resize(2, 1))
End If
Next i
If Not rng Is Nothing Then
rng.EntireRow.Delete
End If

End Sub

--

HTH

RP
(remove nothere from the email address if mailing direct)


"fred_naizin" wrote in message
news:
Bonjour,
dans un tableau apparaissent:
- codes articles
- date1
- date2
Pour chaque code article, j'ais Date1 et Date2

je voudrai trier des données de la façon suivante: pour les doublons de
codes articles uniquement,avoir sur une même ligne la "date1" minimum et
"date2" maximun.
Je vous remercie d'avance
cordialement
fred









Avatar
AV
Avec ton exemple, ton tableau doit devenir
12 * stocké * 12/12/04 * déstocké * 26/01/01
C'est à dire au final, 1 ligne et 5 colonnes ?

AV
Avatar
Ellimac
Bonjour,

La macro suivante quoique un peu longue devrait répondre à
ton attente :

Sub Toto()
Range("a2").Select
While ActiveCell <> ""
a = ActiveCell
n = Application.CountIf(Columns(1), a)
If n = 1 Then ActiveCell.EntireRow.Delete
ActiveCell.Offset(1).Select
Wend
der = Range("a50000").End(xlUp).Row
Columns("C:C").Insert
Range("C1:c" & der) = "=+RC[-2]&RC[-1]"
Range("A1").Sort Key1:=Range("C2"),
Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
Range("A1").Subtotal GroupBy:=3, Function:=xlMin,
TotalList:=Array(4), _
Replace:úlse, PageBreaks:úlse,
SummaryBelowData:=True
Range("A1").Subtotal GroupBy:=3, Function:=xlMax,
TotalList:=Array(4), _
Replace:úlse, PageBreaks:úlse,
SummaryBelowData:=True
der = Range("a50000").End(xlUp).Row
Range("E1") = "Date 1"
Range("F1") = "Date 2"
Range("e2:f" & der).NumberFormat = "dd/mm/yy"
Range("a2").Select
While ActiveCell <> ""
If ActiveCell.Offset(1) = "" Then
ActiveCell.Offset(, 5) = ActiveCell.Offset(1, 3)
Else
ActiveCell.End(xlDown).Select
ActiveCell.Offset(, 5) = ActiveCell.Offset(1, 3)
n = Range(ActiveCell, ActiveCell.End
(xlUp)).Cells.Count
If n = 2 Then
ActiveCell.Offset(-1).EntireRow.Delete
Else
Range(ActiveCell.Offset(-1), ActiveCell.Offset
(n - 2)).EntireRow.Delete
End If
End If

ActiveCell.End(xlDown).Select
If ActiveCell.Offset(1) = "" Then
ActiveCell.Offset(, 4) = ActiveCell.Offset(1, 3)
Else
ActiveCell.End(xlDown).Select
ActiveCell.Offset(, 4) = ActiveCell.Offset(1, 3)
n = Range(ActiveCell, ActiveCell.End
(xlUp)).Cells.Count
If n = 2 Then
ActiveCell.Offset(-1).EntireRow.Delete
Else
Range(ActiveCell.Offset(-1), ActiveCell.Offset
(-n + 1)).EntireRow.Delete
End If
End If
If ActiveCell.End(xlDown).Row = 65536 Then
GoTo suite
Else
ActiveCell.End(xlDown).Select
End If
Wend
suite: ActiveCell.End(xlUp).Select
a = Application.CountA(Columns(1)) - 2
For cpt = 1 To a
Range(ActiveCell.Offset(-1), ActiveCell.Offset(-
2)).EntireRow.Delete
If ActiveCell = "" Then
ActiveCell.End(xlUp).End(xlUp).Select
Else
ActiveCell.End(xlUp).Select
End If
Next
Range("a5000").End(xlUp).Offset(1).Range
("a1:a4").EntireRow.Delete
n = Application.CountA(Columns(5)) - 1
Range("e2").Select
For cpt = 1 To n
ActiveCell = ActiveCell.Offset(1)
ActiveCell.Offset(1).EntireRow.Delete
ActiveCell.Offset(1).Select
Next
End Sub

Camille

-----Message d'origine-----
bonjour et merci pour votre aide.
Ta macro fait planter Excel. Je ne sais pas de quoi ça
vient.

Je reformule ma question:
Il s'agit de code article stocké et ces même codes
destockés; voici à quoi

ressemble ma feuille Excel

codeart|état colis|date
12 stocké 12/12/04
12 stocké 15/01/05
13 stocké 01/02/05
12 destocké 26/12/01

je souhaiterai qu'Excel supprimer tout d'abord les ligne
unique (ici le code

"13"). Puis, pour un code article commun, n'afficher que
la date la + longue

pour le "destocké" et que la date la + courte pour le
stocké


En espérant avoir été précis, je vous remercie encore
cordialement
fred



Bonjour Fred,

Fait cette macro aide?

Sub Reformat()
Dim cLastRow As Long
Dim i As Long
Dim rng As Range

cLastRow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To cLastRow Step 3
Cells(i, "B").Value = Cells(i + 1, "A").Value
Cells(i, "C").Value = Cells(i + 2, "A").Value
If rng Is Nothing Then
Set rng = Cells(i + 1, "B").Resize(2, 1)
Else
Set rng = Union(rng, Cells(i + 1, "B").Resize
(2, 1))


End If
Next i
If Not rng Is Nothing Then
rng.EntireRow.Delete
End If

End Sub

--

HTH

RP
(remove nothere from the email address if mailing
direct)




"fred_naizin"
wrote in message


news:3A99BB91-A8B9-43BA-8843-



Bonjour,
dans un tableau apparaissent:
- codes articles
- date1
- date2
Pour chaque code article, j'ais Date1 et Date2

je voudrai trier des données de la façon suivante:
pour les doublons de



codes articles uniquement,avoir sur une même ligne
la "date1" minimum et



"date2" maximun.
Je vous remercie d'avance
cordialement
fred






.