Bonjour,
j'ai un problème de tri sous excel avec un programme VBA. Pour résumer, j'ai un userform qui me permet de saisir des enregistrements. Chaque enregistrement se place ensuite dans la feuille Excel qui est alors retriée pour mettre le nouvel enregistrement à la bonne place.
Le tri en lui même se passe très bien. Là où cela se gatte, c'est avec les boutons et cases à cocher que j'ai sur chaque ligne.
La commande
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address
qui me permet de récupérer les coordonnées du bouton sur lequel j'ai appuyé me restitue une mauvaise adresse pour les lignes ayant été déplacées.
Lorsque je fais le tri manuellement cela fonctionne bien. J'ai donc enregistré la macro pour la reporter dans le programme mais cela ne fonctionne pas mieux.
Ma commande de tri est la suivante :
Sub tri_mois(nom_feuille As String)
'Tri des opérations du mois par date
'------------------------------------
Dim plage As String
Dim tri As String
'Calcul du nombre de lignes
num_ligne = Range("B5").End(xlDown).Row
plage = ("B6:I") & num_ligne
tri = ("B6:B") & num_ligne
Range(plage).Select
ActiveWorkbook.Worksheets(nom_feuille).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(nom_feuille).Sort.SortFields.Add Key:=Range( _
tri), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets(nom_feuille).Sort
.SetRange Range(plage)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
soit beaucoup plus compliqué que ma commande de tri initiale qui était
'Range(plage).Sort key1:=Range("B6"), order1:=xlAscending
Merci beaucoup pour votre aide.
j'ai un problème de tri sous excel avec un programme VBA. Pour résumer, j'ai un userform qui me permet de saisir des enregistrements. Chaque enregistrement se place ensuite dans la feuille Excel qui est alors retriée pour mettre le nouvel enregistrement à la bonne place.
Le tri en lui même se passe très bien. Là où cela se gatte, c'est avec les boutons et cases à cocher que j'ai sur chaque ligne.
La commande
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address
qui me permet de récupérer les coordonnées du bouton sur lequel j'ai appuyé me restitue une mauvaise adresse pour les lignes ayant été déplacées.
Lorsque je fais le tri manuellement cela fonctionne bien. J'ai donc enregistré la macro pour la reporter dans le programme mais cela ne fonctionne pas mieux.
Ma commande de tri est la suivante :
Sub tri_mois(nom_feuille As String)
'Tri des opérations du mois par date
'------------------------------------
Dim plage As String
Dim tri As String
'Calcul du nombre de lignes
num_ligne = Range("B5").End(xlDown).Row
plage = ("B6:I") & num_ligne
tri = ("B6:B") & num_ligne
Range(plage).Select
ActiveWorkbook.Worksheets(nom_feuille).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(nom_feuille).Sort.SortFields.Add Key:=Range( _
tri), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets(nom_feuille).Sort
.SetRange Range(plage)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
soit beaucoup plus compliqué que ma commande de tri initiale qui était
'Range(plage).Sort key1:=Range("B6"), order1:=xlAscending
Merci beaucoup pour votre aide.