Bonjour

J'ai écrit une macro qui fonctionne bien sous excel 2010 2013. Mon client ayant également des postes excel 2003, j'ai converti en.xls ma macro.
Ce qui fonctionnait bien sous 2010 a un comportement qui m’étonne en 2003

Le classeur contient une feuille menu qui contient des objets dessinés permettant de lancer la macro. Chaque objet (des simples rectangles) contient une valeur différente. c'est un choix du client. Il trouve cela plus esthétique
La macro commence par trier puis filtrer une liste située dans une feuille cachée (variable sh_bd) en fonction de la valeur affiché sur l'objet dessiné
Elle copie ensuite une feuille excel contenant des tableaux mis en forme et un graphique.
les valeurs issues de la liste de données sont écrites dans cette feuille excel afin de pouvoir faire des simulations de calcul
Une image représentant le logo de l'entreprise permet de revenir au menu général
La première fois cela marche sans soucis mais dés que l'on sélectionne un autre bouton (peu importe lequel), excel se plante pendant le tri de la liste de données
et la seule solution est le gestionnaire de taches

j'ai testé sur plusieurs postes différents. toujours le même plantage
Je ne comprend pas car ma liste de données ne fait que 800 lignes

Y a t-il des limites au nombre de tri succesifs qu'excel est capable d'assumer ?

Voici le code où excel plante


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Dim stproduction As String, intnblignes As String
Dim i As Integer, intnumcolonne As Integer
Dim sh_bd As Worksheet
 
Application.ScreenUpdating = False
stnomdefeuille = ActiveSheet.Name
Sheets(stnomdefeuille).Unprotect Stmdp
 
stregion = Left(ActiveSheet.Range("b2").Value, InStr(ActiveSheet.Range("b2"), " -") - 1) 
stproduction = Range("av1").Value 
 
 
Set sh_bd = Sheets("bd_production")
 
sh_bd.Visible = True
sh_bd.Activate
sh_bd.Unprotect Stmdp
 
If sh_bd.AutoFilterMode = True Then
     Selection.AutoFilter
End If
 
'tri initial par région, type de culture et année
sh_bd.Range("A1").Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("b2"), Order2:=xlAscending, _
Key3:=Range("s2"), Order3:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

C'est pendant ce tri que le programme plante. Excel affiche la feuille contenant cette liste et ne poursuit pas la séquence qui est un filtre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
sh_bd.Range("A1").AutoFilter
sh_bd.Range("A1").AutoFilter Field:=1, Criteria1:=stregion


Si quelqu'un a une idée...