OVH Cloud OVH Cloud

Pb de tri d'une liste située sur une autre feuille à partir d'un Userform

4 réponses
Avatar
Antoine
Bonjour

Juste une petite question !

A partir d'une feuille "variable" du fichier, j'appelle un Userform qui, via
une ComboBox, recueille le nom d'un pays.
Ce pays doit être ajouté en fin de liste sur une autre feuille constante
("Sommaire") en colonne L.
Là où j'ai un petit problème, c'est pour faire le tri par ordre alphabétique
de cette ligne : le code qui suit, ne fonctionne pas, sauf à ce que j'ajoute
Sheets("Sommaire").Activate, ce qui m'oblige à devoir auparavant enregistrer
le nom de la feuille où j'étais pour la réactiver ensuite...
Est-il possible d'éviter cette double activation, peut-être inutile ?

' ajoute la destination aux destinations déjà enregistrés
Sheets("Sommaire").[L65536].End(xlUp).Offset(1) = Range("C8").Value
' classe les destinations enregistrées par ordre alphabétique
Range(Range(Sheets("Sommaire").[L1].Address),
Range(Sheets("Sommaire").[L65536].End(xlUp).Address)).Select
' ou Range(Sheets("Sommaire").[L1].Address & ":" &
Sheets("Sommaire").[L65536].End(xlUp).Address).Select
Selection.Sort key1:=Range(Sheets("Sommaire").[L1].Address),
order1:=xlAscending
Range("L1").Select

Merci à tous

Antoine

4 réponses

Avatar
JLuc
*Bonjour Antoine*,
Sheets("Sommaire").Range("L1:L" & Range("L65536").End(xlUp).Row) _
.Sort key1:=Sheets("Sommaire").Range("L1"), order1:=xlAscending
Ca devrait faire l'affaire, dis nous

Bonjour

Juste une petite question !

A partir d'une feuille "variable" du fichier, j'appelle un Userform qui, via
une ComboBox, recueille le nom d'un pays.
Ce pays doit être ajouté en fin de liste sur une autre feuille constante
("Sommaire") en colonne L.
Là où j'ai un petit problème, c'est pour faire le tri par ordre alphabétique
de cette ligne : le code qui suit, ne fonctionne pas, sauf à ce que j'ajoute
Sheets("Sommaire").Activate, ce qui m'oblige à devoir auparavant enregistrer
le nom de la feuille où j'étais pour la réactiver ensuite...
Est-il possible d'éviter cette double activation, peut-être inutile ?

' ajoute la destination aux destinations déjà enregistrés
Sheets("Sommaire").[L65536].End(xlUp).Offset(1) = Range("C8").Value
' classe les destinations enregistrées par ordre alphabétique
Range(Range(Sheets("Sommaire").[L1].Address),
Range(Sheets("Sommaire").[L65536].End(xlUp).Address)).Select
' ou Range(Sheets("Sommaire").[L1].Address & ":" &
Sheets("Sommaire").[L65536].End(xlUp).Address).Select
Selection.Sort key1:=Range(Sheets("Sommaire").[L1].Address),
order1:=xlAscending
Range("L1").Select

Merci à tous

Antoine



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS

Avatar
Antoine
Bonsoir Jean Luc

Je viens de faire le test. Malheureusement, cela ne change rien au
problème...
Je crois que je vais opter pour un "aller et retour" d'activation !

Merci à toi

Antoine

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

*Bonjour Antoine*,
Sheets("Sommaire").Range("L1:L" & Range("L65536").End(xlUp).Row) _
.Sort key1:=Sheets("Sommaire").Range("L1"), order1:=xlAscending
Ca devrait faire l'affaire, dis nous

Bonjour

Juste une petite question !

A partir d'une feuille "variable" du fichier, j'appelle un Userform qui,
via une ComboBox, recueille le nom d'un pays.
Ce pays doit être ajouté en fin de liste sur une autre feuille constante
("Sommaire") en colonne L.
Là où j'ai un petit problème, c'est pour faire le tri par ordre
alphabétique de cette ligne : le code qui suit, ne fonctionne pas, sauf à
ce que j'ajoute Sheets("Sommaire").Activate, ce qui m'oblige à devoir
auparavant enregistrer le nom de la feuille où j'étais pour la réactiver
ensuite...
Est-il possible d'éviter cette double activation, peut-être inutile ?

' ajoute la destination aux destinations déjà enregistrés
Sheets("Sommaire").[L65536].End(xlUp).Offset(1) = Range("C8").Value
' classe les destinations enregistrées par ordre alphabétique
Range(Range(Sheets("Sommaire").[L1].Address),
Range(Sheets("Sommaire").[L65536].End(xlUp).Address)).Select
' ou Range(Sheets("Sommaire").[L1].Address & ":" &
Sheets("Sommaire").[L65536].End(xlUp).Address).Select
Selection.Sort key1:=Range(Sheets("Sommaire").[L1].Address),
order1:=xlAscending
Range("L1").Select

Merci à tous

Antoine



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs et
astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS





Avatar
michdenis
Bonjour Antoine,

Ceci devrait très bien fonctionné :

Header:=xlYes -> signifie que la première
ligne de la colonne contient une étiquette de colonne.
XlNo si aucune

'------------------------------
Dim Sh As Worksheet
Set Sh = Sheets("Sommaire")
With Sh
With .Range("L1:L" & .Range("L65536").End(xlUp).Row)
.Sort key1:=Sh.Range("L2"), order1:=xlAscending, Header:=xlYes
End With
End With
'------------------------------


Salutations!



"Antoine" a écrit dans le message de news: %
Bonsoir Jean Luc

Je viens de faire le test. Malheureusement, cela ne change rien au
problème...
Je crois que je vais opter pour un "aller et retour" d'activation !

Merci à toi

Antoine

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

*Bonjour Antoine*,
Sheets("Sommaire").Range("L1:L" & Range("L65536").End(xlUp).Row) _
.Sort key1:=Sheets("Sommaire").Range("L1"), order1:=xlAscending
Ca devrait faire l'affaire, dis nous

Bonjour

Juste une petite question !

A partir d'une feuille "variable" du fichier, j'appelle un Userform qui,
via une ComboBox, recueille le nom d'un pays.
Ce pays doit être ajouté en fin de liste sur une autre feuille constante
("Sommaire") en colonne L.
Là où j'ai un petit problème, c'est pour faire le tri par ordre
alphabétique de cette ligne : le code qui suit, ne fonctionne pas, sauf à
ce que j'ajoute Sheets("Sommaire").Activate, ce qui m'oblige à devoir
auparavant enregistrer le nom de la feuille où j'étais pour la réactiver
ensuite...
Est-il possible d'éviter cette double activation, peut-être inutile ?

' ajoute la destination aux destinations déjà enregistrés
Sheets("Sommaire").[L65536].End(xlUp).Offset(1) = Range("C8").Value
' classe les destinations enregistrées par ordre alphabétique
Range(Range(Sheets("Sommaire").[L1].Address),
Range(Sheets("Sommaire").[L65536].End(xlUp).Address)).Select
' ou Range(Sheets("Sommaire").[L1].Address & ":" &
Sheets("Sommaire").[L65536].End(xlUp).Address).Select
Selection.Sort key1:=Range(Sheets("Sommaire").[L1].Address),
order1:=xlAscending
Range("L1").Select

Merci à tous

Antoine



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs et
astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS





Avatar
Antoine
Touché ! Coulé !
, comme on disait quand on faisait des batailles navales !

Comme je n'ai pas de ligne de titre, j'ai mis xlNo selon ton conseil, et
cela marche parfaitement du 1er coup...
Un conseil de pro !

Merci à toi michdenis, avec tout le plaisir que cela peut procurer de
réussir à faire (non sans aide extérieure...), exactement ce que je pouvais
souhaiter faire pour optimiser au mieux la procédure...

Antoine

"michdenis" a écrit dans le message de news:
%
Bonjour Antoine,

Ceci devrait très bien fonctionné :

Header:=xlYes -> signifie que la première
ligne de la colonne contient une étiquette de colonne.
XlNo si aucune

'------------------------------
Dim Sh As Worksheet
Set Sh = Sheets("Sommaire")
With Sh
With .Range("L1:L" & .Range("L65536").End(xlUp).Row)
.Sort key1:=Sh.Range("L2"), order1:=xlAscending, Header:=xlYes
End With
End With
'------------------------------


Salutations!



"Antoine" a écrit dans le message de news:
%
Bonsoir Jean Luc

Je viens de faire le test. Malheureusement, cela ne change rien au
problème...
Je crois que je vais opter pour un "aller et retour" d'activation !

Merci à toi

Antoine

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

*Bonjour Antoine*,
Sheets("Sommaire").Range("L1:L" & Range("L65536").End(xlUp).Row) _
.Sort key1:=Sheets("Sommaire").Range("L1"), order1:=xlAscending
Ca devrait faire l'affaire, dis nous

Bonjour

Juste une petite question !

A partir d'une feuille "variable" du fichier, j'appelle un Userform qui,
via une ComboBox, recueille le nom d'un pays.
Ce pays doit être ajouté en fin de liste sur une autre feuille constante
("Sommaire") en colonne L.
Là où j'ai un petit problème, c'est pour faire le tri par ordre
alphabétique de cette ligne : le code qui suit, ne fonctionne pas, sauf
à
ce que j'ajoute Sheets("Sommaire").Activate, ce qui m'oblige à devoir
auparavant enregistrer le nom de la feuille où j'étais pour la réactiver
ensuite...
Est-il possible d'éviter cette double activation, peut-être inutile ?

' ajoute la destination aux destinations déjà enregistrés
Sheets("Sommaire").[L65536].End(xlUp).Offset(1) = Range("C8").Value
' classe les destinations enregistrées par ordre alphabétique
Range(Range(Sheets("Sommaire").[L1].Address),
Range(Sheets("Sommaire").[L65536].End(xlUp).Address)).Select
' ou Range(Sheets("Sommaire").[L1].Address & ":" &
Sheets("Sommaire").[L65536].End(xlUp).Address).Select
Selection.Sort key1:=Range(Sheets("Sommaire").[L1].Address),
order1:=xlAscending
Range("L1").Select

Merci à tous

Antoine



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs et
astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS