Pb de maitrise de sortie de macro / procédure

nicola40

XLDnaute Junior
Sur les conseils de MITA, je reposte avec un intitulé plus adapté;)


Bonjour à tous,

à cette heure tardive, je bute sur un pb persistant.

L'exécution d'un code vba ne correspond pas à mes attentes, et je "donne ma langue au chat" ....

Inévitablement, je dois faire une erreur de logique, mais ou ?

Ci-joint petit fichier écrit pour simuler le pb.

Merci d'avance pour votre aide.
 

Pièces jointes

  • exploitation x2.zip
    17.2 KB · Affichages: 25
  • exploitation x2.zip
    17.2 KB · Affichages: 26
  • exploitation x2.zip
    17.2 KB · Affichages: 30

JCGL

XLDnaute Barbatruc
Re : Pb de maitrise de sortie de macro / procédure

Bonjour à tous,

J'ai nommé DDAte par Insertion / Nom / Définir...
Mais je ne suis pas sûr que cela te convienne

Amitié à Jean-Roch

A+ à tous
 

Pièces jointes

  • JC exploitation x2.zip
    12.7 KB · Affichages: 27

nicola40

XLDnaute Junior
Re : Pb de maitrise de sortie de macro / procédure

Bonjour à tous,

J'ai nommé DDAte par Insertion / Nom / Définir...
Mais je ne suis pas sûr que cela te convienne

Amitié à Jean-Roch

A+ à tous

Merci de ta réponse JCGL.

Mais je ne vois pas d'amélioration. Si tu mets un point d'arrêt dans Sub Worksheet_Change (of ouverts), puis que tu débuge pas à pas avec f8, tu verras que nous partons au milieu de la procédure seamaine_num. Puis la sortie se fait sans repasser dans la procédure inirtiale, donc sans remettre application.enanbleevents à true.

Pour moi, c'et un fonctionnement non maitrisé et je voudrais comprendre pourquoi.
Le fonctionnement de mon pg nécessite de revenir à true. C'est cette valeur que j'affiche dans la boite de dialogue.
Si tu effaces la formule en b10, ça marche ! incompréhensible non ?

Je vais continuer à cogiter, mais si tu as une piste je suis preneur.

Bonne fin de WE
 

pierrejean

XLDnaute Barbatruc
Re : Pb de maitrise de sortie de macro / procédure

bonjour nicola40

Salut JC :)

A tester:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim derlig1
    Application.EnableEvents = False
    With Sheets("Of ouverts")
    derlig1 = [COLOR=red].[/COLOR]Range("b65536").End(xlUp).Row
    [COLOR=red].[/COLOR]Range("e13:M900").Select
    Selection.Clear
    Application.EnableEvents = True
   End With
End Sub

Sinon a quoi il sert le With !!!

Nota: Je ne suis pas allé plus loin
 

nicola40

XLDnaute Junior
Re : Pb de maitrise de sortie de macro / procédure

bonjour nicola40

Salut JC :)

A tester:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim derlig1
    Application.EnableEvents = False
    With Sheets("Of ouverts")
    derlig1 = [COLOR=red].[/COLOR]Range("b65536").End(xlUp).Row
    [COLOR=red].[/COLOR]Range("e13:M900").Select
    Selection.Clear
    Application.EnableEvents = True
   End With
End Sub

Sinon a quoi il sert le With !!!

Nota: Je ne suis pas allé plus loin



Merci pour ta réponse Pierre-Jean,


mais pas d'amélioration.

tant que l'appui sur le bouton conduit à avoir une msgbox avec faux, cela veut dire que la sortie de la procédure se fait avant de remettre application.enableEvents à vrai, donc de façon brutale et non maitrisée (essaye de débuger et pas à pas avec F8 : comportement étonnant !)

J'aimerais comprendre pour pouvoir fiabiliser mon appli ....


Bonne fin de WE et merci
 

pierrejean

XLDnaute Barbatruc
Re : Pb de maitrise de sortie de macro / procédure

Re

Sauf que chez moi l'appui sur le bouton me donne une msgbox avec Vrai !!!
 

Pièces jointes

  • exploitation x2.zip
    12.9 KB · Affichages: 22
  • exploitation x2.zip
    12.9 KB · Affichages: 23
  • exploitation x2.zip
    12.9 KB · Affichages: 24

Pierrot93

XLDnaute Barbatruc
Re : Pb de maitrise de sortie de macro / procédure

Bonjour nicola, Pierre-Jean:), Jean-Claude:)

pas tout suivi, ni certainement pas tout compris, mais si tu veux éviter de rentrer dans ta fonction, tu peux essayer en utilisant le code ci-dessous :

Code:
Dim s As Long
s = Application.Calculation
Application.Calculation = xlCalculationManual
'ton code
Application.Calculation = s

si ca peut faire avancer la chose...

bonne soirée
@+
 

pierrejean

XLDnaute Barbatruc
Re : Pb de maitrise de sortie de macro / procédure

Re

Je n'ai pas excel 2003
par contre j'ai une fonction numsem (de mon cru)
Veux-tu tester le comportement avec cette fonction ?

Edit: Salut pierrot :)
 

Pièces jointes

  • exploitation x2.zip
    13.9 KB · Affichages: 25
  • exploitation x2.zip
    13.9 KB · Affichages: 23
  • exploitation x2.zip
    13.9 KB · Affichages: 24

JCGL

XLDnaute Barbatruc
Re : Pb de maitrise de sortie de macro / procédure

Bonjour à tous,
Salut PJ :),
Salut Pierrot :),

Sous XL 2003, la boite de dialogue me renvoie VRAI...
J'ai remplacé la fonction personnalisée par la fonction de base XL NO.SEMAINE() et cela fonctionne aussi bien (renvoi de VRAI)

Désolé de ne pas pouvoir reproduire ton problème (visiblement, je ne suis pas le seul)
A++
A+ à tous
 

nicola40

XLDnaute Junior
Re : Pb de maitrise de sortie de macro / procédure

Bonjour nicola, Pierre-Jean:), Jean-Claude:)

pas tout suivi, ni certainement pas tout compris, mais si tu veux éviter de rentrer dans ta fonction, tu peux essayer en utilisant le code ci-dessous :

Code:
Dim s As Long
s = Application.Calculation
Application.Calculation = xlCalculationManual
'ton code
Application.Calculation = s

si ca peut faire avancer la chose...

bonne soirée
@+

Merci à toi PIERROT93, mais pas d'amélioration.

Je ne comprends toujours pas pourquoi le pg part au milieu de la fonction semaine-num ?

Bonne fin de we
 

nicola40

XLDnaute Junior
Re : Pb de maitrise de sortie de macro / procédure

Re

Je n'ai pas excel 2003
par contre j'ai une fonction numsem (de mon cru)
Veux-tu tester le comportement avec cette fonction ?

Edit: Salut pierrot :)


Je viens de tester. Toujours pareil : faux

En mode débug, selection.clear m'envoie dans la procédure numsem, puis sortie directe sans remettre la valeur à true.

Est-il normal de partir dans cette fonction avec l'instruction selection.clear ?
As-tu le même comportement chez toi ?

..... je vais continuer de cogiter


merci
 

pierrejean

XLDnaute Barbatruc
Re : Pb de maitrise de sortie de macro / procédure

Re

En partie
A savoir que selection.clear envoie dans le calcul de numsem mais une fois le recalcul effectué j'ai bien
Application.EnableEvents = True
et
End With
Je precise tout de même que je n'observe ceci que si j'effectue un changement dans la feuille Of ouverts
Le clic sur le bouton n'affecte pas la feuille et il n'y a donc pas de declanchement de l'evenement change
J'ai encadré par Application.calculation manual puis auto et le parcours dans la macro change n'est plus interrompu mais en fin de macro le recalcul s'effectue
Je crois qu'il faut rechercher ce qui lance la macro change a partir du bouton (ce qui n'existe pas dans le fichier avec lequel je travaille)
 

nicola40

XLDnaute Junior
Re : Pb de maitrise de sortie de macro / procédure

Re

En partie
A savoir que selection.clear envoie dans le calcul de numsem mais une fois le recalcul effectué j'ai bien
Application.EnableEvents = True
et
End With
Je precise tout de même que je n'observe ceci que si j'effectue un changement dans la feuille Of ouverts
Le clic sur le bouton n'affecte pas la feuille et il n'y a donc pas de declanchement de l'evenement change
J'ai encadré par Application.calculation manual puis auto et le parcours dans la macro change n'est plus interrompu mais en fin de macro le recalcul s'effectue
Je crois qu'il faut rechercher ce qui lance la macro change a partir du bouton (ce qui n'existe pas dans le fichier avec lequel je travaille)

Le bouton active la macro4 qui est dans le module 6.
Elle lance le recalcul du tcd, donc induit un changement dans la feuille of ouverts, donc lance la sub Worksheet_Change.

Si je lance la réactualisation manuelle du tcd, pas de msgbox, car application.eneableevents est à faux, et la détection du cht ne se fait donc pas.


Merci
 

nicola40

XLDnaute Junior
Re : Pb de maitrise de sortie de macro / procédure

Faute de mieux, j'ai caché le problème (un emplâtre sur une jambe de bois .....).

Il semble que ce soit la fonction aujourdhui() qui génère le pb. A l'ouverture du fichier, je fige cette valeur --> plus de pb. Et à l'enregistrement, je remets aujourdhui() dans la zone.

Pas élégant, mais ça marche.

il n'empêche que je rage de n'avoir pas compris le pourquoi de mon problème.

Merci à tous pour votre aide et bonne fin de soirée.

Encore bravo pour la richesse et la qualité du forum.
 

Discussions similaires

Statistiques des forums

Discussions
312 520
Messages
2 089 301
Membres
104 092
dernier inscrit
karbone57