Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tri sur deux zones nommées non contigue

6 réponses
Avatar
Jed
Bonjour a tous,
J'aimerai savoir s'il est possibile de fair un tri sur 2=20
zones nomm=E9es non contigues. Je fais mes tri par ces=20
codes:

Range("Lig_Detail").Select
Selection.Sort Key1:=3DRange("G18:G51"),Order1:=3DxlAscending,=20
Header:=3DxlGuess, OrderCustom:=3D1, MatchCase:=3DFalse, _=20
Orientation:=3DxlTopToBottom

If Range("Feuille_Fich").Value =3D 2 Then
Range("Lig_Detail2").Select
Selection.Sort Key1:=3DRange
("G82:G115"),Order1:=3DxlAscending, _
Header:=3DxlGuess, OrderCustom:=3D1, MatchCase:=3DFalse, _=20
Orientation:=3DxlTopToBottom
End If

Ca fonctionne bien mais je tri d'abord ma zone lig_detail=20
et ensuite lig_detail2, le probl=E8me c'est que c'est pas=20
trier sur l'ensemble des deux zones non contigues :-((((

Est ce faisable par vba ?
Merci d'avance de me mettre sur une voie .

Cdlt
Jed
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

"Etre d=E9butant" a un avantage, contrairement =E0 "Etre Con",
c'est qu'on ne l'est qu'au d=E9but

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

6 réponses

Avatar
Philippe.R
Bonsoir Jed,
D'après ce qu'il me raconte, Excel ne sait pas faire ça.
--
Amicales Salutations
XL 97 / 2000 / 2002
Retirer A_S_ pour répondre en privé.
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Jed" a écrit dans le message de news:
13b001c4d144$1a8399b0$
Bonjour a tous,
J'aimerai savoir s'il est possibile de fair un tri sur 2
zones nommées non contigues. Je fais mes tri par ces
codes:

Range("Lig_Detail").Select
Selection.Sort Key1:=Range("G18:G51"),Order1:=xlAscending,
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom

If Range("Feuille_Fich").Value = 2 Then
Range("Lig_Detail2").Select
Selection.Sort Key1:=Range
("G82:G115"),Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom
End If

Ca fonctionne bien mais je tri d'abord ma zone lig_detail
et ensuite lig_detail2, le problème c'est que c'est pas
trier sur l'ensemble des deux zones non contigues :-((((

Est ce faisable par vba ?
Merci d'avance de me mettre sur une voie .

Cdlt
Jed
================================================
"Etre débutant" a un avantage, contrairement à "Etre Con",
c'est qu'on ne l'est qu'au début

=================================================
Avatar
Jed
Booohhhh!!! Dommage...ça m'aurait bien arrangé.
Merci de vous êtes penché sur le problème.
Cdlt
Jed
-----Message d'origine-----
Bonsoir Jed,
D'après ce qu'il me raconte, Excel ne sait pas faire ça.
--
Amicales Salutations
XL 97 / 2000 / 2002
Retirer A_S_ pour répondre en privé.
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Jed" a écrit dans
le message de news:

13b001c4d144$1a8399b0$
Bonjour a tous,
J'aimerai savoir s'il est possibile de fair un tri sur 2
zones nommées non contigues. Je fais mes tri par ces
codes:

Range("Lig_Detail").Select
Selection.Sort Key1:=Range("G18:G51"),Order1:=xlAscending,
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom

If Range("Feuille_Fich").Value = 2 Then
Range("Lig_Detail2").Select
Selection.Sort Key1:=Range
("G82:G115"),Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom
End If

Ca fonctionne bien mais je tri d'abord ma zone lig_detail
et ensuite lig_detail2, le problème c'est que c'est pas
trier sur l'ensemble des deux zones non contigues :-((((

Est ce faisable par vba ?
Merci d'avance de me mettre sur une voie .

Cdlt
Jed
======================== =========================

"Etre débutant" a un avantage, contrairement à "Etre Con",
c'est qu'on ne l'est qu'au début

======================== =========================

.



Avatar
Bidouille
Bonjour,
Il faut le faire en deux fois :
Concrètement à partir de la feuille essaye
Colonnes A à D
Sélectionner la colonne C et faire Insertion - Saut de page
Sélectionner les colonnes A et B faire un tri sur A
Sélectionner les colonnes C et D faire un tri sur C

C'est ce que tu cherches ?
Bidouille


"Jed" a écrit dans le message de news:
13b001c4d144$1a8399b0$
Bonjour a tous,
J'aimerai savoir s'il est possibile de fair un tri sur 2
zones nommées non contigues. Je fais mes tri par ces
codes:

Range("Lig_Detail").Select
Selection.Sort Key1:=Range("G18:G51"),Order1:=xlAscending,
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom

If Range("Feuille_Fich").Value = 2 Then
Range("Lig_Detail2").Select
Selection.Sort Key1:=Range
("G82:G115"),Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom
End If

Ca fonctionne bien mais je tri d'abord ma zone lig_detail
et ensuite lig_detail2, le problème c'est que c'est pas
trier sur l'ensemble des deux zones non contigues :-((((

Est ce faisable par vba ?
Merci d'avance de me mettre sur une voie .

Cdlt
Jed
================================================
"Etre débutant" a un avantage, contrairement à "Etre Con",
c'est qu'on ne l'est qu'au début

=================================================
Avatar
PMO
Bonjour,

J'ai écrit le code suivant en me basant sur votre propre code et
en utilisant les mêmes noms de plages nommées qui y figurent.
Il n'y a plus qu'à le tester.
ATTENTION: testez sur une copie de votre classeur.

'**************************
Option Explicit
Sub Tri2Zones()
Dim A$
Dim R As Range
Dim R1 As Range
Dim R2 As Range
Dim var1
Dim var2
Dim nbLig1&
Dim nbLig2&
Dim nbCol&
Dim T()
Dim h&
Dim i&
Dim j&
On Error GoTo Erreur
A$ = ActiveSheet.Name
Set R = Range("Feuille_Fich")
If R <> 2 Then
Set R1 = Range("Lig_Detail")
R1.Sort Key1:=Range(R1.Address), _
Order1:=xlAscending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:úlse, _
Orientation:=xlTopToBottom
Else
Set R1 = Range("Lig_Detail")
Set R2 = Range("Lig_Detail2")
var1 = R1
var2 = R2
If R1.Columns.Count <> R2.Columns.Count Then
MsgBox prompt:="Nombre de colonnes " & _
"différentes pour les 2 plages.", _
Title:="Programme stoppé"
Exit Sub
End If
nbLig1& = R1.Rows.Count
nbLig2& = R2.Rows.Count
nbCol& = R1.Columns.Count
ReDim T(1 To nbLig1& + nbLig2&, 1 To nbCol&)
For i& = 1 To nbLig1&
For j& = 1 To nbCol&
T(i&, j&) = var1(i&, j&)
Next j&
Next i&
h& = nbLig1&
For i& = 1 To nbLig2&
For j& = 1 To nbCol&
T(h& + i&, j&) = var2(i&, j&)
Next j&
Next i&
Application.ScreenUpdating = False
Sheets.Add before:=Sheets(1)
Set R = Range(Cells(1, 1), _
Cells(UBound(T, 1), UBound(T, 2)))
R = T
R.Sort Key1:=[a1], _
Order1:=xlAscending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:úlse, _
Orientation:=xlTopToBottom
var1 = Range(Cells(1, 1), Cells(nbLig1&, nbCol&))
var2 = Range(Cells(1 + nbLig1&, 1), _
Cells(nbLig1& + nbLig2&, nbCol&))
Application.DisplayAlerts = False
Sheets(1).Delete
R1 = var1
R2 = var2
Sheets(A$).Activate
End If
Erreur:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
'**************************

Est-que ça vous convient ?

Cordialement.

PMO
Patrik Morange



Bonjour a tous,
J'aimerai savoir s'il est possibile de fair un tri sur 2
zones nommées non contigues. Je fais mes tri par ces
codes:

Range("Lig_Detail").Select
Selection.Sort Key1:=Range("G18:G51"),Order1:=xlAscending,
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom

If Range("Feuille_Fich").Value = 2 Then
Range("Lig_Detail2").Select
Selection.Sort Key1:=Range
("G82:G115"),Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom
End If

Ca fonctionne bien mais je tri d'abord ma zone lig_detail
et ensuite lig_detail2, le problème c'est que c'est pas
trier sur l'ensemble des deux zones non contigues :-((((

Est ce faisable par vba ?
Merci d'avance de me mettre sur une voie .

Cdlt
Jed
================================================ >
"Etre débutant" a un avantage, contrairement à "Etre Con",
c'est qu'on ne l'est qu'au début

================================================ >



Avatar
jed
Woaw ca a l'air super mais je viens de reunion, je teste
et je vous tiens au courant !
Merci c'est super sympa.
jed
-----Message d'origine-----
Bonjour,

J'ai écrit le code suivant en me basant sur votre propre
code et

en utilisant les mêmes noms de plages nommées qui y
figurent.

Il n'y a plus qu'Ã le tester.
ATTENTION: testez sur une copie de votre classeur.

'**************************
Option Explicit
Sub Tri2Zones()
Dim A$
Dim R As Range
Dim R1 As Range
Dim R2 As Range
Dim var1
Dim var2
Dim nbLig1&
Dim nbLig2&
Dim nbCol&
Dim T()
Dim h&
Dim i&
Dim j&
On Error GoTo Erreur
A$ = ActiveSheet.Name
Set R = Range("Feuille_Fich")
If R <> 2 Then
Set R1 = Range("Lig_Detail")
R1.Sort Key1:=Range(R1.Address), _
Order1:=xlAscending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:úlse, _
Orientation:=xlTopToBottom
Else
Set R1 = Range("Lig_Detail")
Set R2 = Range("Lig_Detail2")
var1 = R1
var2 = R2
If R1.Columns.Count <> R2.Columns.Count Then
MsgBox prompt:="Nombre de colonnes " & _
"différentes pour les 2 plages.", _
Title:="Programme stoppé"
Exit Sub
End If
nbLig1& = R1.Rows.Count
nbLig2& = R2.Rows.Count
nbCol& = R1.Columns.Count
ReDim T(1 To nbLig1& + nbLig2&, 1 To nbCol&)
For i& = 1 To nbLig1&
For j& = 1 To nbCol&
T(i&, j&) = var1(i&, j&)
Next j&
Next i&
h& = nbLig1&
For i& = 1 To nbLig2&
For j& = 1 To nbCol&
T(h& + i&, j&) = var2(i&, j&)
Next j&
Next i&
Application.ScreenUpdating = False
Sheets.Add before:=Sheets(1)
Set R = Range(Cells(1, 1), _
Cells(UBound(T, 1), UBound(T, 2)))
R = T
R.Sort Key1:=[a1], _
Order1:=xlAscending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:úlse, _
Orientation:=xlTopToBottom
var1 = Range(Cells(1, 1), Cells(nbLig1&, nbCol&))
var2 = Range(Cells(1 + nbLig1&, 1), _
Cells(nbLig1& + nbLig2&, nbCol&))
Application.DisplayAlerts = False
Sheets(1).Delete
R1 = var1
R2 = var2
Sheets(A$).Activate
End If
Erreur:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
'**************************

Est-que ça vous convient ?

Cordialement.

PMO
Patrik Morange



Bonjour a tous,
J'aimerai savoir s'il est possibile de fair un tri sur
2


zones nommées non contigues. Je fais mes tri par ces
codes:

Range("Lig_Detail").Select
Selection.Sort Key1:=Range
("G18:G51"),Order1:=xlAscending,


Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom

If Range("Feuille_Fich").Value = 2 Then
Range("Lig_Detail2").Select
Selection.Sort Key1:=Range
("G82:G115"),Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom
End If

Ca fonctionne bien mais je tri d'abord ma zone
lig_detail


et ensuite lig_detail2, le problème c'est que c'est
pas


trier sur l'ensemble des deux zones non contigues :-((((

Est ce faisable par vba ?
Merci d'avance de me mettre sur une voie .

Cdlt
Jed
========================= ========================

"Etre débutant" a un avantage, contrairement à "Etre
Con",


c'est qu'on ne l'est qu'au début

========================= ========================


.





Avatar
Jed
Merci d'avoir repondu à mon post,
Mon probleme c'est de fusioner les deux zones pour le tri.
mes tris separement ca marche mais s'il y a une valeur
dans la 2ieme plage qui doit être remonter dans la
premiere plage alors là ca fonctionne plus.
Apres test ta soluce ne fonctionne pas dans mon cas!
Merci en tout cas.
jed

-----Message d'origine-----
Bonjour,
Il faut le faire en deux fois :
Concrètement à partir de la feuille essaye
Colonnes A à D
Sélectionner la colonne C et faire Insertion - Saut de
page

Sélectionner les colonnes A et B faire un tri sur A
Sélectionner les colonnes C et D faire un tri sur C

C'est ce que tu cherches ?
Bidouille


"Jed" a écrit dans
le message de news:

13b001c4d144$1a8399b0$
Bonjour a tous,
J'aimerai savoir s'il est possibile de fair un tri sur 2
zones nommées non contigues. Je fais mes tri par ces
codes:

Range("Lig_Detail").Select
Selection.Sort Key1:=Range("G18:G51"),Order1:=xlAscending,
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom

If Range("Feuille_Fich").Value = 2 Then
Range("Lig_Detail2").Select
Selection.Sort Key1:=Range
("G82:G115"),Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom
End If

Ca fonctionne bien mais je tri d'abord ma zone lig_detail
et ensuite lig_detail2, le problème c'est que c'est pas
trier sur l'ensemble des deux zones non contigues :-((((

Est ce faisable par vba ?
Merci d'avance de me mettre sur une voie .

Cdlt
Jed
======================== =========================

"Etre débutant" a un avantage, contrairement à "Etre Con",
c'est qu'on ne l'est qu'au début

======================== =========================


.