OVH Cloud OVH Cloud

Filtrer des valeurs

2 réponses
Avatar
beurnoir
Salut tout le monde,

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

'Tri des valeurs
Sheets("Finale").Select
Range("A2").Sort Key1:=3DRange("A2"), Order1:=3DxlAscending,=20
Header:=3DxlGuess, _
OrderCustom:=3D1, MatchCase:=3DFalse,=20
Orientation:=3DxlTopToBottom

'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.

Merci

2 réponses

Avatar
isabelle
bonjour beurnoir,

présentement tu obtient comme résultat le tableau suivant :

Ref Prix aerien Prix total
1 2 0
2 9
3 5 4
6 1

peux tu montrer le tableau final que tu aimerais obtenir.

isabelle


Salut tout le monde,

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

'Tri des valeurs
Sheets("Finale").Select
Range("A2").Sort Key1:=Range("A2"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom

'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


Avatar
Je viens de vous envoyer un mail

Merci

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

présentement tu obtient comme résultat le tableau
suivant :


Ref Prix aerien Prix total
1 2 0
2 9
3 5 4
6 1

peux tu montrer le tableau final que tu aimerais obtenir.

isabelle


Salut tout le monde,

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

'Tri des valeurs
Sheets("Finale").Select
Range("A2").Sort Key1:=Range("A2"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom

'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
.