cs_nico39
Messages postés56Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 4 octobre 2006
-
30 juin 2006 à 15:59
cs_nico39
Messages postés56Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 4 octobre 2006
-
3 juil. 2006 à 09:52
Bonjour,
J'ai un problème quelque bizarre avec ma macro:
lorsque j'exécute directement (automatiquement) ma macro, une des ses sous-procédures ne se lance pas et la macro tourne comme si elle n'existait pas. Par contre, si je fais la exécuter en mode pas-à-pas ou si j'insère un point d'arrêt dans le code de cette sous-procédure, celle-ci est bien détectée et se déclenche, et la macro continue sans problème!!??
D'où peut venir cette différence de comportement entre exécution directe et mode pas-à-pas ?
cs_eldim
Messages postés956Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention21 août 20141 3 juil. 2006 à 09:33
Ben voila c'est surement de là que par le problème
dans le module qui appel celui la vire les on error resume next
comme ça si y a une erreur tu sauras d'où elle vient
(car un on error resume next dans une procedure parente arrete la procedure fille en cas d'erreur sans que tu sache ce qui c'est passé)
-- Pourquoi faire simple quand on peut faire compliquer --
cs_nico39
Messages postés56Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 4 octobre 2006 1 juil. 2006 à 12:30
Salut eldim,
Mon code est assez gros. Je vais donc essayer de l'expliquer assez succintement:
- je récupère d'abord des données de deux tables Access que je place dans 2 groupes de colonnes de ma feuille Excel (p. ex. colonnes A:C et D:F). Jusque là, absolument aucun problème.
- je "filtre" (sans fonction .Filter) mon deuxième groupe de colonnes (D:F): si D4 contient du texte, suppression de D4:F4. Jusque là, toujours pas de problème.
- je "filtre" (sans fonction .Filter) ensuite mon premier groupe de colonnes (A:C): si la valeur de Ai ne se trouve pas dans la colonne D, suppression de Ai:Ci. Encore là, toujours pas de problème.
- et enfin, je calcule les moyennes, minima et maxima des valeurs des colonnes fraîchement filtrées C et F.
Sur ce dernier point, le mode pas-à-pas donne de valeurs de moyennes correctes, alors que l'exécution directe ne calcule pas du tout ces moyennes.
J'ai remarqué que si je plaçais l'instruction de calcul des moyennes AVANT le deuxième filtrage (bien que ce ne soit pas le but du programme), l'exécution automatique la prenait en compte.
Est-ce alors possible que le deuxième filtrage "fasse perdre la boule" à VBA, jusqu'à ce qu'il en oublie les instructions immédiatement suivantes ?
J'espère avoir été assez clair dans mes explications.
Amateurement vôtre...
cs_nico39
Messages postés56Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 4 octobre 2006 3 juil. 2006 à 08:46
Bonjour,
- mortalino: j'ai essayé de retarder l'exécution avec ta ligne de code mais rien n'y fait (même en retardant jusqu'à 10s). De plus, j'ai intercalé une MsgBox entre ta ligne de code et ma sous-procédure "problématique": la Msgbox s'exécute (parfois!), mais la sous-procédure jamais!
- eldim: je ne sais pas comment activer/désactiver le calcul automatique. Je n'utilise pas de formule sur le feuille Excel (parce que ma plage de valeurs n'est jamais de taille fixe), mais je calcule directement les fonctions dans ma macro. Donc, si c'est lié au calcul automatique des feuilles Excel, ca n'a pas lieu d'être...
Je ne sais vraiment plus comment m'y prendre avec cette macro.
Merci pour toute l'aide que vous pourrez m'apportez.
cs_nico39
Messages postés56Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 4 octobre 2006 3 juil. 2006 à 09:27
Salut eldim,
non, ou du moins, pas du tout dans ce module, mais dans un autre module qui est exécuté avant celui-là.
Je ne suis, en fait, pas très à l'aise avec les gestions d'erreurs...
cs_nico39
Messages postés56Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 4 octobre 2006 3 juil. 2006 à 09:52
Salut eldim,
sans doute, mais le module où se trouve le OnError Resume Next et le module où j'ai mon problème n'ont aucun lien de programmation (aucun appel de procédure, aucun passage de variable...). Ils sont simplement exécuté l'un après l'autre, le deuxième étant déclenché par un click sur une Listbox de ma feuille, alors que le premier se déclenche à partir d'un bouton sur ma feuille.
Leurs codes respectifs se trouvent même sur deux feuilles de codes séparées: le premier dans un module, le second sur la page de code de la feuille Excel correspondante!
Toujours est-il qu'il se trouve que j'ai bien une erreur dans ma sous-procédure "défectueuse" (erreur que d'ailleurs je ne comprends pas, et qui fera sansdoute l'objet d'un nouveau sujet), donc le OnError pouirrait bien être la cause du problème.