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...
Partager