Bonjour,
J'ai créé un classeur excel qui contient un panel de macro tant évenementielles qu'à des fonctions, et qui fait appel sur commande à un programme extérieur.
Mon problème est que lorsque j'ouvre ce classeur au bout d'un certain temps, Excel rencontre une erreur et doit fermer. Ce temps est assez variable (parfois immédiat) et n'est pas directement lié à une erreur de programmation (enfin du moins je le crois) car toutes mes procédures fonctionnent correctement et sont assez sécurisées.
Avez-vous déjà rencontré un tel problème? Avez-vous une idée d'ou ca pourrait venir, si certaines procédures pourrait rendre excel assez instable?
j'ai en particulier un certain nombre de combobox avec des codes associés et qui sont liées les unes aux autres car un choix dans une modifie les choix possible dans les autres
J'ai du coup tenté de réduire ces activations de combobox
ca marche assez bien mais mon erreur persiste et j'obtiens maintenant assez rapidement cette erreur lorsque je me sert de ces combobox:
Pourtant toutes mes variables sont bien définies, j'ai aussi utilisé pour la plupart des sub et fonction en private pour ne pas remplir ma mémoireexcel ne peut pas terminer cette tache avec les ressources disponibles,selectionnez moins de données ou fermez des applications
Sauriez vous comment résoudre cela et d'où cela peut-il venir?
merci par avance et désolé de la longueur du msg
rémi
ps: voici les codes qui se lancent au démarrage:
et
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 Private Sub Workbook_open() Dim i As Integer Dim l As Integer i = 2 Do While Worksheets("Configuration").Cells(i, 1).Value <> "" Worksheets("Modèle").Cells(i, 50).Value = Worksheets("Configuration").Cells(i, 1).Value i = i + 1 Loop l = LookForRow(1, "Modèle", "Ambient temperature") Worksheets("Modèle").Cells(l - 1, 2).Value = "Normal" l = LookForRow(1, "Modèle", "Pression Enceinte") Worksheets("Modèle").Cells(l - 1, 2).Value = "Normal" l = LookForRow(5, "Modèle", "% Pressure Tolerance") Worksheets("Modèle").Cells(l, 6).Value = 0.05 Worksheets("Modèle").Cells(l + 1, 6).Value = 0.05 Worksheets("Modèle").Cells(l + 2, 6).Value = 5000 Worksheets("Modèle").Activate End Sub Private Function LookForRow(ColumnId As Integer, feuille As String, target As Variant) As Integer 'trouve le numéro de ligne sur laquelle est écrit le nom du projet/réseau/resultat (target) que l'on veut lancer On Error GoTo Error_LookForRow LookForRow = 1 Do While Worksheets(feuille).Cells(LookForRow, ColumnId).Value <> target LookForRow = LookForRow + 1 If LookForRow = 5000 Then GoTo Error_LookForRow Loop Exit Function Error_LookForRow: MsgBox ("le mot " & target & " est introuvable dans la feuille " & feuille & " dans la colonne" & ColumnId) End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub WorkSheet_activate() Dim marange As Range Dim i As Integer i = 2 While Worksheets("Modèle").Cells(i, 50) <> "" i = i + 1 Wend Set marange = Range(Worksheets("Modèle").Cells(2, 50), Worksheets("Modèle").Cells(i, 50)) If ComboBox1.ListFillRange <> marange.Address Then ComboBox1.ListFillRange = marange.Address End Sub
Partager