[VBA/Excel] Différence entre exécutions directe et pas-à-pas [Résolu]

Messages postés
56
Date d'inscription
vendredi 4 mars 2005
Dernière intervention
4 octobre 2006
- 30 juin 2006 à 15:59 - Dernière réponse :
Messages postés
56
Date d'inscription
vendredi 4 mars 2005
Derniè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 ?

Merci d'avance pour vos contributions.

Config: Windows XP Pro SP1 | Excel 2003



Amateurement vôtre... 
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
961
Date d'inscription
lundi 30 mai 2005
Dernière intervention
21 août 2014
- 3 juil. 2006 à 09:33
3
Merci
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 --

Merci cs_eldim 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_eldim
Messages postés
961
Date d'inscription
lundi 30 mai 2005
Dernière intervention
21 août 2014
- 30 juin 2006 à 16:16
0
Merci
Bonjour,

Met ton code ce sera plus facil pour te dépanner

-- Pourquoi faire simple quand on peut faire compliquer --
Commenter la réponse de cs_eldim
Messages postés
56
Date d'inscription
vendredi 4 mars 2005
Dernière intervention
4 octobre 2006
- 1 juil. 2006 à 12:30
0
Merci
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... 
Commenter la réponse de cs_nico39
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
- 1 juil. 2006 à 14:13
0
Merci
Salut,

Essai juste avant d'appeler la procédure de placer une pause de 2 secondes.
Application.Wait(Now + TimeValue("0:00:02"))

Sait-on jamais... (déjà eu ce genre de problème et certains ce règle comme ceci)

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
Commenter la réponse de mortalino
Messages postés
961
Date d'inscription
lundi 30 mai 2005
Dernière intervention
21 août 2014
- 3 juil. 2006 à 07:46
0
Merci
As-tu désactivé le calcul automatique dans une partie de ta macro ?

-- Pourquoi faire simple quand on peut faire compliquer --
Commenter la réponse de cs_eldim
Messages postés
56
Date d'inscription
vendredi 4 mars 2005
Dernière intervention
4 octobre 2006
- 3 juil. 2006 à 08:46
0
Merci
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.

A+



Amateurement vôtre... 
Commenter la réponse de cs_nico39
Messages postés
961
Date d'inscription
lundi 30 mai 2005
Dernière intervention
21 août 2014
- 3 juil. 2006 à 08:53
0
Merci
As-tu des on error resume next ?

-- Pourquoi faire simple quand on peut faire compliquer --
Commenter la réponse de cs_eldim
Messages postés
56
Date d'inscription
vendredi 4 mars 2005
Dernière intervention
4 octobre 2006
- 3 juil. 2006 à 09:27
0
Merci
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...

Amateurement vôtre... 
Commenter la réponse de cs_nico39
Messages postés
56
Date d'inscription
vendredi 4 mars 2005
Dernière intervention
4 octobre 2006
- 3 juil. 2006 à 09:52
0
Merci
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.

Amateurement vôtre... 
Commenter la réponse de cs_nico39

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.