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

PB avec macro "feuille active"

3 réponses
Avatar
meb2604
Bonjour,

Je ne suis pas une experte en conception de macro mais je me d=E9brouille p=
our mes besoins. J'ai un PB avec la macro suivante :


Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("BD - H=E9bergement").AutoFilter.Sort.SortFie=
lds._
Clear
ActiveWorkbook.Worksheets("BD - H=E9bergement").AutoFilter.Sort.SortFie=
lds.Add _
Key:=3DRange("A1"), SortOn:=3DxlSortOnValues, Order:=3DxlAscending,=
DataOption _
:=3DxlSortTextAsNumbers
With ActiveWorkbook.Worksheets("BD - H=E9bergement").AutoFilter.Sort
.Header =3D xlYes
.MatchCase =3D False
.Orientation =3D xlTopToBottom
.SortMethod =3D xlPinYin
.Apply
End With
Range("A1").Select
End Sub



En fait, j'ai une feuille dont le contenu change r=E9guli=E8rement mais pou=
r laquelle je veux toujours trier =E0 partir de la colonne A. Cette macro f=
onctionne super bien mais je voudrais pouvoir l'utiliser avec d'autres feui=
lles. Le PB est que cette macro s'applique sp=E9cifiquement sur la feuille =
BD - H=E9bergement. Comment je peux la modifier pour qu'elle s'applique sur=
la feuille active, peu importe la feuille, tout simplement.

Merci de votre aide !!!

3 réponses

Avatar
MichD
Bonjour,

Copie la procédure suivante dans le THISWORKBOOK du
projetVBA de ton classeur :

À chaque fois que tu vas modifier une cellule dans la colonne A:A
de chaque feuille de calcul du classeur, un tri sera effectué sur cette
colonne automatiquement en tenant compte de l'ensemble du
tableau des données.

'----------------------------------
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Rg As Range
Set Rg = Intersect(Target, Range("A:A"))
If Not Rg Is Nothing Then
With Range("A1:A" & Range("A65536").End(xlUp).Row).CurrentRegion
.Range("A1").Sort Key1:=.Item(1, 1), _
order1:=xlAscending, Header:=xlYes, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End With
End If
End Sub
'----------------------------------



MichD
---------------------------------------------------------------
Avatar
meb2604
Bonjour,

Merci pour la réponse mais je ne veux pas utiliser le Thisworkbook. Je ve ux pouvoir exécuter ma macro sur commande. C'est une macro qui contient u ne série d'actions dont le tri, donc le Thisworkbook n'est pas appropri é à mon besoin.

Elle fonctionne super bien mais en fait, je voudrais savoir comment écrir e cette macro en n'utilisant pas le nom de la feuille mais en indiquant d'u tiliser la feuille active. Est-ce possible ?


Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("BD - Hébergement").AutoFilter.Sort.SortFie lds._
Clear
ActiveWorkbook.Worksheets("BD - Hébergement").AutoFilter.Sort.SortFie lds.Add _
Key:=Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("BD - Hébergement").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
End Sub


Merci beaucoup !
Avatar
MichD
Tu remplaces :

ActiveWorkbook.Worksheets("BD - Hébergement")

Par :

ActiveWorkbook.Worksheets.ActiveSheet




MichD
---------------------------------------------------------------