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
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
codes articles uniquement,avoir sur une même ligne la "date1" minimum et
"date2" maximun. Je vous remercie d'avance cordialement fred
.
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
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
codes articles uniquement,avoir sur une même ligne la "date1" minimum et
"date2" maximun. Je vous remercie d'avance cordialement fred
.
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
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" <frednaizin@discussions.microsoft.com> wrote in message
news:3A99BB91-A8B9-43BA-8843-A756FC11E34F@microsoft.com...
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
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
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
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
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
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" <frednaizin@discussions.microsoft.com> wrote in message
news:3A99BB91-A8B9-43BA-8843-A756FC11E34F@microsoft.com...
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
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
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
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
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 ?
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
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.
codes articles uniquement,avoir sur une même ligne la "date1" minimum et
"date2" maximun. Je vous remercie d'avance cordialement fred
.
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:=False,
Orientation:=xlTopToBottom
Range("A1").Subtotal GroupBy:=3, Function:=xlMin,
TotalList:=Array(4), _
Replace:=False, PageBreaks:=False,
SummaryBelowData:=True
Range("A1").Subtotal GroupBy:=3, Function:=xlMax,
TotalList:=Array(4), _
Replace:=False, PageBreaks:=False,
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.
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.