souci interaction entre 2 macros

tsgri

XLDnaute Junior
Bonjour,

erreur = "impossible de définir la propriété CurrentPage de la donnée PivotField"

J'ai 2 feuilles avec macro :

"BDD" (liste de contacts) : qui une macro : pour formater la saisie des colonnes nom et prénom :

Code:
Code :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub '<-- pour éviter que ça coince si on sélectionne plusieurs cellules
If Target.Column = 5 Then
Target.Value = UCase(Target.Value)
End If
If Target.Column = 6 Then
Target.Value = StrConv(Target.Value, 3)
End If
End Sub

"consultation" qui a une liste deroulante contrôle de formulaire lié par macro à un TCD (Cette feuille me sert pour faciliter l'accès aux informations du contact et les synthètiser)

Code:
Code :
Private Sub Worksheet_Calculate()
Dim MaVal As String
Application.EnableEvents = False
MaVal = Range("G3")
    Worksheets("CONSULTATION").PivotTables("TableauBDD").PivotFields("SOCIETE").CurrentPage = MaVal
Application.EnableEvents = True
End Sub

La consultation fonctionne, mais le souci est que : dès que ja vais sur BDD pour ajouter ou supprimer un nom (une ligne etc..) , ca bugg et je suis obligée de faire Echap avec le message ci-dessus cité qui s'affiche.

Je précise que a priori, j'ai ce problème depuis j'ai fait la macro avec le TCD qui indépendemment marche très bien.
Quand je n'ai que la macro Majuscule je n'ai pas ce problème.

Merci
 

tsgri

XLDnaute Junior
Re : souci interaction entre 2 macros

Bonjour,
(Décidement mes discussions n'ont pas de succès, je dois mal rédiger je suppose, snif.)

Quand je fais "echap" voici les 2 type de messages :
"espace pile insuffisant"
ou
"impossible de définir la propriété CurrentPage de la classe PivotField"


si je ne fais pas echap, il part dans un grand calcul sembe t'il et après blocage.
 

tototiti2008

XLDnaute Barbatruc
Re : souci interaction entre 2 macros

Bonjour tsgri,

tu devrais ajouter un

Application.EnableEvents = False

au début de Worksheet_Change

et un

Application.EnableEvents = True

à la fin.

en effet, le code :Target.Value = UCase(Target.Value) change la valeur de la cellule, et donc relance un Worksheet_change.
il arrive que ça ne plante pas mais ta deuxième macro évènementielle a du agraver les choses... et de toute façon c'est plus propre comme ça
 

tsgri

XLDnaute Junior
Re : souci interaction entre 2 macros

Bonjour tototiti,

Génial, sur ma base de test ca marche super, je verrai demain sur ma base réelle.

Merci beaucoup.

Juste une petite chose si tu veux bien m'expliquer, tu ecris :
"il arrive que ça ne plante pas mais ta deuxième macro évènementielle a du agraver les choses... "
par les ....dois-je comprendre (je suis hypra débutante) que je ne devrais pas avoir 2 macro evenementielle ?
 

tototiti2008

XLDnaute Barbatruc
Re : souci interaction entre 2 macros

Bonjour,

Juste une petite chose si tu veux bien m'expliquer, tu ecris :
"il arrive que ça ne plante pas mais ta deuxième macro évènementielle a du agraver les choses... "
par les ....dois-je comprendre (je suis hypra débutante) que je ne devrais pas avoir 2 macro evenementielle ?

non, ça veut simplement dire que dans le principe, je ne sais pas pouquoi le Worksheet_change ne plante pas tout seul. Il devrait s'appeler seul à l'infini et déjà aboutir sur une erreur du type "espace pile insuffisant" (la pile contient la liste des procédures appelées, et donc elle devrait déborder ;))

Mais j'avais déjà observé que ce type de code ne plantait pas, sans savoir pourquoi.

Tu peux gérer de nombreuses procédures évènementielles en même temps mais il faut faire attention qu'elles ne s'appellent pas l'une-l'autre à l'infini, c'est assez régulièrement le cas avec Change et Calculate. D'où l'intérêt de parfois désactiver les évènements...
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 848
Membres
103 972
dernier inscrit
steeter