J'aimerais obtenir pour une meme r=E9f=E9rence tous les prix=20
(aerien, route) pour celle ci sur une meme ligne.
Dans le cas il n'y a pas de valeur ds la cellule il=20
faudrait une cellule vide.
En fait, je possede 2 feuilles differentes et j'aimerais=20
regrouper les colonnes de ces feuilles en fonction des=20
references communes.
Exemple : Feuille 1=20
Ref Prix aerien
1 2
3 5
6 1
Feuille 2
Ref Prix total
2 9
1 0
3 4
Et je veux dans une meme feuille :=20
Ref Prix aerien Prix total
1 2 0
2 9
3 5 4
6 1
Je poss=E8de d=E9ja la macro suivante mais elle ne realise le=20
tri que pour la premiere ligne :=20
Sub regroupement()
Dim c As Range, i As Integer
i =3D 1
Sheets("Aerien").Select
For Each c In Sheets("Aerien").Range("B2", Range("B2").End
(xlDown))
Sheets("Finale").Select
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 0) =3D c
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 1) =3D=20
c.Offset(0, 27)
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 2) =3D=20
c.Offset(0, 28)
i =3D i + 1
Sheets("Aerien").Select
Next
Sheets("Route").Select
For Each c In Sheets("Route").Range("B2", Range("B2").End
(xlDown))
Sheets("Finale").Select
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 0) =3D c
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 3) =3D=20
c.Offset(0, 27)
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 4) =3D=20
c.Offset(0, 28)
i =3D i + 1
Sheets("Route").Select
Next
Sheets("Prix").Select
For Each c In Sheets("Prix").Range("B2", Range("B2").End
(xlDown))
Sheets("Finale").Select
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 0) =3D c
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 5) =3D=20
c.Offset(0, 5)
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 6) =3D=20
c.Offset(0, 6)
i =3D i + 1
Sheets("Prix").Select
Next
'cas de la 1=E8re ligne
For Each c In Sheets("Finale").Range("A1:A2")
If c =3D c.Offset(1, 0) Then
c.Offset(0, 3) =3D c.Offset(1, 3)
c.Offset(0, 4) =3D c.Offset(1, 4)
c.Offset(0, 5) =3D c.Offset(1, 5)
c.Offset(0, 6) =3D c.Offset(1, 6)
c.Offset(1, 0).EntireRow.Delete
End If
Next
'Comparaison des valeurs et effacement des lignes inutiles
For Each c In Sheets("Finale").Range("A1", Range("A1").End
(xlDown))
If c =3D c.Offset(1, 0) Then
If c.Offset(0, 3) =3D "" Then
c.Offset(0, 3) =3D c.Offset(1, 3)
End If
If c.Offset(0, 4) =3D "" Then
c.Offset(0, 4) =3D c.Offset(1, 4)
End If
If c.Offset(0, 5) =3D "" Then
c.Offset(0, 5) =3D c.Offset(1, 5)
End If
If c.Offset(0, 6) =3D "" Then
c.Offset(0, 6) =3D c.Offset(1, 6)
End If
c.Offset(1, 0).EntireRow.Delete
End If
Next
End Sub
J'aimerais donc avoir soit une nouvelle macro capable de=20
faire ce tri soit une boucle capable de faire le tri de la=20
ligne 1 pour toutes les lignes.
J'ai essay=E9 de faire cette boucle rien a faire ca plante.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
ru-th
Salut
en lançant à partir de la feuil1 Sub test() On Error Resume Next With Range("C2") .FormulaLocal = _ "=INDEX(Feuil2!b:b;equiv(Feuil1!a2;Feuil2!a:a;0))" .AutoFill Destination:=Range("C2:C" & [a65536].End(xlUp).Row) End With With Columns("C:C") .SpecialCells(xlCellTypeFormulas, 16).ClearContents .Copy .PasteSpecial Paste:=xlValues ActiveSheet.Paste Application.CutCopyMode = False End With With Sheets("feuil2") For i = 2 To .[a65536].End(xlUp).Row If Application.CountIf(Sheets("Feuil1").Columns(1), .Cells(i, 1)) = 0 Then ligne = Sheets("Feuil1").[a65536].End(xlUp).Row + 1 Sheets("Feuil1").Cells(ligne, 1) = .Cells(i, 1) Sheets("Feuil1").Cells(ligne, 3) = .Cells(i, 2) End If Next End With Range("A2").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes Columns("B:B").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft End Sub
a+ rural thierry "beurnoir" a écrit dans le message de news: 1bb4401c42134$d806d940$ Salut tout le monde,
J'aimerais obtenir pour une meme référence tous les prix (aerien, route) pour celle ci sur une meme ligne. Dans le cas il n'y a pas de valeur ds la cellule il faudrait une cellule vide. En fait, je possede 2 feuilles differentes et j'aimerais regrouper les colonnes de ces feuilles en fonction des references communes. Exemple : Feuille 1 Ref Prix aerien 1 2 3 5 6 1
Feuille 2 Ref Prix total 2 9 1 0 3 4
Et je veux dans une meme feuille :
Ref Prix aerien Prix total 1 2 0 2 9 3 5 4 6 1
Je possède déja la macro suivante mais elle ne realise le tri que pour la premiere ligne :
Sub regroupement() Dim c As Range, i As Integer i = 1 Sheets("Aerien").Select For Each c In Sheets("Aerien").Range("B2", Range("B2").End (xlDown)) Sheets("Finale").Select Sheets("Finale").Range("A2").End(xlUp).Offset(i, 0) = c Sheets("Finale").Range("A2").End(xlUp).Offset(i, 1) c.Offset(0, 27) Sheets("Finale").Range("A2").End(xlUp).Offset(i, 2) c.Offset(0, 28) i = i + 1 Sheets("Aerien").Select Next
Sheets("Route").Select For Each c In Sheets("Route").Range("B2", Range("B2").End (xlDown)) Sheets("Finale").Select Sheets("Finale").Range("A2").End(xlUp).Offset(i, 0) = c Sheets("Finale").Range("A2").End(xlUp).Offset(i, 3) c.Offset(0, 27) Sheets("Finale").Range("A2").End(xlUp).Offset(i, 4) c.Offset(0, 28) i = i + 1 Sheets("Route").Select Next
Sheets("Prix").Select For Each c In Sheets("Prix").Range("B2", Range("B2").End (xlDown)) Sheets("Finale").Select Sheets("Finale").Range("A2").End(xlUp).Offset(i, 0) = c Sheets("Finale").Range("A2").End(xlUp).Offset(i, 5) c.Offset(0, 5) Sheets("Finale").Range("A2").End(xlUp).Offset(i, 6) c.Offset(0, 6) i = i + 1 Sheets("Prix").Select Next
'cas de la 1ère ligne For Each c In Sheets("Finale").Range("A1:A2") If c = c.Offset(1, 0) Then c.Offset(0, 3) = c.Offset(1, 3) c.Offset(0, 4) = c.Offset(1, 4) c.Offset(0, 5) = c.Offset(1, 5) c.Offset(0, 6) = c.Offset(1, 6) c.Offset(1, 0).EntireRow.Delete End If Next
'Comparaison des valeurs et effacement des lignes inutiles For Each c In Sheets("Finale").Range("A1", Range("A1").End (xlDown)) If c = c.Offset(1, 0) Then If c.Offset(0, 3) = "" Then c.Offset(0, 3) = c.Offset(1, 3) End If If c.Offset(0, 4) = "" Then c.Offset(0, 4) = c.Offset(1, 4) End If If c.Offset(0, 5) = "" Then c.Offset(0, 5) = c.Offset(1, 5) End If If c.Offset(0, 6) = "" Then c.Offset(0, 6) = c.Offset(1, 6) End If c.Offset(1, 0).EntireRow.Delete End If Next
End Sub
J'aimerais donc avoir soit une nouvelle macro capable de faire ce tri soit une boucle capable de faire le tri de la ligne 1 pour toutes les lignes. J'ai essayé de faire cette boucle rien a faire ca plante.
Merci
Salut
en lançant à partir de la feuil1
Sub test()
On Error Resume Next
With Range("C2")
.FormulaLocal = _
"=INDEX(Feuil2!b:b;equiv(Feuil1!a2;Feuil2!a:a;0))"
.AutoFill Destination:=Range("C2:C" & [a65536].End(xlUp).Row)
End With
With Columns("C:C")
.SpecialCells(xlCellTypeFormulas, 16).ClearContents
.Copy
.PasteSpecial Paste:=xlValues
ActiveSheet.Paste
Application.CutCopyMode = False
End With
With Sheets("feuil2")
For i = 2 To .[a65536].End(xlUp).Row
If Application.CountIf(Sheets("Feuil1").Columns(1), .Cells(i, 1)) = 0 Then
ligne = Sheets("Feuil1").[a65536].End(xlUp).Row + 1
Sheets("Feuil1").Cells(ligne, 1) = .Cells(i, 1)
Sheets("Feuil1").Cells(ligne, 3) = .Cells(i, 2)
End If
Next
End With
Range("A2").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes
Columns("B:B").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft
End Sub
a+
rural thierry
"beurnoir" <benoit.pommereuil@utbm.fr> a écrit dans le message de news:
1bb4401c42134$d806d940$a501280a@phx.gbl...
Salut tout le monde,
J'aimerais obtenir pour une meme référence tous les prix
(aerien, route) pour celle ci sur une meme ligne.
Dans le cas il n'y a pas de valeur ds la cellule il
faudrait une cellule vide.
En fait, je possede 2 feuilles differentes et j'aimerais
regrouper les colonnes de ces feuilles en fonction des
references communes.
Exemple : Feuille 1
Ref Prix aerien
1 2
3 5
6 1
Feuille 2
Ref Prix total
2 9
1 0
3 4
Et je veux dans une meme feuille :
Ref Prix aerien Prix total
1 2 0
2 9
3 5 4
6 1
Je possède déja la macro suivante mais elle ne realise le
tri que pour la premiere ligne :
Sub regroupement()
Dim c As Range, i As Integer
i = 1
Sheets("Aerien").Select
For Each c In Sheets("Aerien").Range("B2", Range("B2").End
(xlDown))
Sheets("Finale").Select
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 0) = c
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 1) c.Offset(0, 27)
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 2) c.Offset(0, 28)
i = i + 1
Sheets("Aerien").Select
Next
Sheets("Route").Select
For Each c In Sheets("Route").Range("B2", Range("B2").End
(xlDown))
Sheets("Finale").Select
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 0) = c
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 3) c.Offset(0, 27)
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 4) c.Offset(0, 28)
i = i + 1
Sheets("Route").Select
Next
Sheets("Prix").Select
For Each c In Sheets("Prix").Range("B2", Range("B2").End
(xlDown))
Sheets("Finale").Select
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 0) = c
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 5) c.Offset(0, 5)
Sheets("Finale").Range("A2").End(xlUp).Offset(i, 6) c.Offset(0, 6)
i = i + 1
Sheets("Prix").Select
Next
'cas de la 1ère ligne
For Each c In Sheets("Finale").Range("A1:A2")
If c = c.Offset(1, 0) Then
c.Offset(0, 3) = c.Offset(1, 3)
c.Offset(0, 4) = c.Offset(1, 4)
c.Offset(0, 5) = c.Offset(1, 5)
c.Offset(0, 6) = c.Offset(1, 6)
c.Offset(1, 0).EntireRow.Delete
End If
Next
'Comparaison des valeurs et effacement des lignes inutiles
For Each c In Sheets("Finale").Range("A1", Range("A1").End
(xlDown))
If c = c.Offset(1, 0) Then
If c.Offset(0, 3) = "" Then
c.Offset(0, 3) = c.Offset(1, 3)
End If
If c.Offset(0, 4) = "" Then
c.Offset(0, 4) = c.Offset(1, 4)
End If
If c.Offset(0, 5) = "" Then
c.Offset(0, 5) = c.Offset(1, 5)
End If
If c.Offset(0, 6) = "" Then
c.Offset(0, 6) = c.Offset(1, 6)
End If
c.Offset(1, 0).EntireRow.Delete
End If
Next
End Sub
J'aimerais donc avoir soit une nouvelle macro capable de
faire ce tri soit une boucle capable de faire le tri de la
ligne 1 pour toutes les lignes.
J'ai essayé de faire cette boucle rien a faire ca plante.
en lançant à partir de la feuil1 Sub test() On Error Resume Next With Range("C2") .FormulaLocal = _ "=INDEX(Feuil2!b:b;equiv(Feuil1!a2;Feuil2!a:a;0))" .AutoFill Destination:=Range("C2:C" & [a65536].End(xlUp).Row) End With With Columns("C:C") .SpecialCells(xlCellTypeFormulas, 16).ClearContents .Copy .PasteSpecial Paste:=xlValues ActiveSheet.Paste Application.CutCopyMode = False End With With Sheets("feuil2") For i = 2 To .[a65536].End(xlUp).Row If Application.CountIf(Sheets("Feuil1").Columns(1), .Cells(i, 1)) = 0 Then ligne = Sheets("Feuil1").[a65536].End(xlUp).Row + 1 Sheets("Feuil1").Cells(ligne, 1) = .Cells(i, 1) Sheets("Feuil1").Cells(ligne, 3) = .Cells(i, 2) End If Next End With Range("A2").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes Columns("B:B").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft End Sub
a+ rural thierry "beurnoir" a écrit dans le message de news: 1bb4401c42134$d806d940$ Salut tout le monde,
J'aimerais obtenir pour une meme référence tous les prix (aerien, route) pour celle ci sur une meme ligne. Dans le cas il n'y a pas de valeur ds la cellule il faudrait une cellule vide. En fait, je possede 2 feuilles differentes et j'aimerais regrouper les colonnes de ces feuilles en fonction des references communes. Exemple : Feuille 1 Ref Prix aerien 1 2 3 5 6 1
Feuille 2 Ref Prix total 2 9 1 0 3 4
Et je veux dans une meme feuille :
Ref Prix aerien Prix total 1 2 0 2 9 3 5 4 6 1
Je possède déja la macro suivante mais elle ne realise le tri que pour la premiere ligne :
Sub regroupement() Dim c As Range, i As Integer i = 1 Sheets("Aerien").Select For Each c In Sheets("Aerien").Range("B2", Range("B2").End (xlDown)) Sheets("Finale").Select Sheets("Finale").Range("A2").End(xlUp).Offset(i, 0) = c Sheets("Finale").Range("A2").End(xlUp).Offset(i, 1) c.Offset(0, 27) Sheets("Finale").Range("A2").End(xlUp).Offset(i, 2) c.Offset(0, 28) i = i + 1 Sheets("Aerien").Select Next
Sheets("Route").Select For Each c In Sheets("Route").Range("B2", Range("B2").End (xlDown)) Sheets("Finale").Select Sheets("Finale").Range("A2").End(xlUp).Offset(i, 0) = c Sheets("Finale").Range("A2").End(xlUp).Offset(i, 3) c.Offset(0, 27) Sheets("Finale").Range("A2").End(xlUp).Offset(i, 4) c.Offset(0, 28) i = i + 1 Sheets("Route").Select Next
Sheets("Prix").Select For Each c In Sheets("Prix").Range("B2", Range("B2").End (xlDown)) Sheets("Finale").Select Sheets("Finale").Range("A2").End(xlUp).Offset(i, 0) = c Sheets("Finale").Range("A2").End(xlUp).Offset(i, 5) c.Offset(0, 5) Sheets("Finale").Range("A2").End(xlUp).Offset(i, 6) c.Offset(0, 6) i = i + 1 Sheets("Prix").Select Next
'cas de la 1ère ligne For Each c In Sheets("Finale").Range("A1:A2") If c = c.Offset(1, 0) Then c.Offset(0, 3) = c.Offset(1, 3) c.Offset(0, 4) = c.Offset(1, 4) c.Offset(0, 5) = c.Offset(1, 5) c.Offset(0, 6) = c.Offset(1, 6) c.Offset(1, 0).EntireRow.Delete End If Next
'Comparaison des valeurs et effacement des lignes inutiles For Each c In Sheets("Finale").Range("A1", Range("A1").End (xlDown)) If c = c.Offset(1, 0) Then If c.Offset(0, 3) = "" Then c.Offset(0, 3) = c.Offset(1, 3) End If If c.Offset(0, 4) = "" Then c.Offset(0, 4) = c.Offset(1, 4) End If If c.Offset(0, 5) = "" Then c.Offset(0, 5) = c.Offset(1, 5) End If If c.Offset(0, 6) = "" Then c.Offset(0, 6) = c.Offset(1, 6) End If c.Offset(1, 0).EntireRow.Delete End If Next
End Sub
J'aimerais donc avoir soit une nouvelle macro capable de faire ce tri soit une boucle capable de faire le tri de la ligne 1 pour toutes les lignes. J'ai essayé de faire cette boucle rien a faire ca plante.