Problème de lancement de macro

Zlopeck

XLDnaute Junior
Bonjour à toutes et à tous,

Afin de lancer une macro à partir du contenu d'une cellule et comme mes connaissances en VBA sont très limitées, j'ai cherché sur le forum et j'ai trouvé ce qui semblait me convenir : si le contenu de la cellule C3 est OUI, la macro "macro_oui" est lancée et la "macro_non" si C3 = NON

Private Sub Worksheet_Change(ByVal Target As Range)
if target.address = "$C$3" then
if target.value = "OUI" then call macro_oui
if target.value = "NON" then call macro_non
end if
end sub

J'ai donc essayé d'adapter cette macro à mes besoins :



Private Sub Worksheet_Change(ByVal Target As Range)
if target.address = "$D$15" then
if target.value = "MODIFICATION" then call Déverrouillage_feuille
if target.value <> "MODIFICATION" then call Verrouillage_feuille
end if
end sub


Mais lorsque ma cellule D15 affiche MODIFICATION ma macro Déverouillage_feuille ne s'execute pas (la feuille ne se déverrouille pas) et lorsque ma feuille est déverrouillée, le fait que le contenu de D15 soit différent de MODIFICATION, ma macro Verrouillage_feuille (insertion d'une formule et verrouillage de la feuille) ne se lance pas.

Cependant je n'ai pas de message d'erreur ni de débogage (J'en suis d'ailleurs étonné)

Ces deux macros réalisées avec l'enregistreur de macros fonctionnent parfaitement lorsqu'elles sont lancées par la fonction executer mais pas moyen d'automatiser le lancement à partir du contenu de D15.

J'ai placé le code dans Worksheet et j'ai copié mes macros dans différents endroits sans succès.

Je précise que la cellule sensée lancer les macros est renseignée via une liste déroulante et contient la formule suivante

=SI(INDEX(Liste;data!$B$26;1)="";"";INDEX(Liste;data!$B$26;1))

Je ne sais pas si mon problème vient de là ou si l'emplacement du code et des macros est en cause mais je tourne en rond :confused:depuis un bon moment et j'en appelle à vous afin de vous demander de l'aide afin de pouvoir résoudre ce problème.
( Je ne sais pas si c'est important mais j'utilise excel 2007)

Je remercie par avance tous ceux qui pourront m'apporter de l'aide.
 

wilfried_42

XLDnaute Barbatruc
Re : Problème de lancement de macro

re:

dis moi modification tu l'as mis comment sur la feuille en majuscule ou en minuscule

voila une modi qui te permetra de ne plus t'en inquiéter

if ucase(target.value) = "MODIFICATION" then call Déverrouillage_feuille
if ucase(target.value) <> "MODIFICATION" then call Verrouillage_feuille

ps: je viens de tester sur 2007, les interruption sur liste de validation fonctionnent
 
Dernière édition:

wilfried_42

XLDnaute Barbatruc
Re : Problème de lancement de macro

re:

tu vas mettre un point d'arret devant la premiere ligne pour voir s'il passe

mais il est possible que l'evennementiel soit deconnecter

tu vas mettre
sub init()
application.enableevents=true
end sub

tu te positionnes sur application
tout en haut, au dessous du F de format, tu as une petite fleche (un triangle)
c'est pour lancer la macro, tu cliques dessus et ensuite tu testes

@ te lire
 

Cousinhub

XLDnaute Barbatruc
Re : Problème de lancement de macro

Bonsoir,
regarde plutôt du côté de l'évènement Calculate (ta cellule provient d'une formule)

Private Sub Worksheet_Calculate()
If Range("D15").Value = "MODIFICATION" Then
Call Déverrouillage_feuille
Else
Call Verrouillage_feuille
End If
End Sub
 

Zlopeck

XLDnaute Junior
Re : Problème de lancement de macro

re-

Comme convenu voila une version allégée de mon fichier.
Pour une histoire de poids j'ai séparé et zippé les 3 feuilles concernées par mon problème.

Certaines macros sont sans doute peu orthodoxes mais je suis débutant en VBA et ce sont des macros que j'ai piochées un peu partout sur ce forum et que j'ai essayé d'adapter à mes besoins.

Merci encore pour votre aide...
 

Pièces jointes

  • feuille 1.zip
    43.6 KB · Affichages: 32
  • feuille 1.zip
    43.6 KB · Affichages: 35
  • feuille 1.zip
    43.6 KB · Affichages: 30
  • feuille 2.zip
    33.4 KB · Affichages: 26
  • feuille 2.zip
    33.4 KB · Affichages: 28
  • feuille 2.zip
    33.4 KB · Affichages: 35
  • feuille 3.zip
    26.8 KB · Affichages: 28

Zlopeck

XLDnaute Junior
Re : Problème de lancement de macro

Bonjour et encore merci de passer du temps à m'aider,

Je viens de refaire un essai en créant un fichier ne comportant que la fonction me posant un problème et je me suis rendu compte que le problème se pose au moment du déverrouillage : en effet pour verrouiller, il suffit que la valeur de ma cellule soit différente de MODIFICATION et que je clique sur cette cellule pour que la macro s'execute et protège ma feuille mais pour déverrouiller je donne la valeur MODIFICATION à ma cellule mais comme la feuille est protégée je ne peux pas cliquer sur la cellule et la macro déverrouillage ne se lance pas.
Je joins un nouveau fichier ne comportant que la fonction "verrouillage / déverrouillage".
 

Pièces jointes

  • Classeur1.xls
    40 KB · Affichages: 58
  • Classeur1.xls
    40 KB · Affichages: 59
  • Classeur1.xls
    40 KB · Affichages: 66

Cousinhub

XLDnaute Barbatruc
Re : Problème de lancement de macro

Bonjour Zlopeck

tu lis les réponses données?
ta cellule G3 provient d'une formule, donc pour intercepter son changement, il faut passer par l'évènement Calculate
essaie

Private Sub Worksheet_Calculate()
If Range("G3").Value = "MODIFICATION" Then
Call déverrouillage
Else
Call Verrouillage
End If
End Sub

et ta macro verrouillage :

Sub Verrouillage()

Application.EnableEvents = False
Range("I3").FormulaR1C1 = "=R[7]C[3]+R[7]C[4]"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Application.EnableEvents = True
End Sub

(je comprends pas le pourquoi de la formule, mais bon...)
si tu enlèves cette ligne (Range("I3").FormulaR1C1 = "=R[7]C[3]+R[7]C[4]"),
tu peux aussi enlever (Application.EnableEvents = False) et (Application.EnableEvents = True)
bon week-end
 

Zlopeck

XLDnaute Junior
Re : Problème de lancement de macro

Bonjour bhbh et tous les participants au forum,

Si, si, je lis les réponses mais quand j'ai essayé le premier code que que tu m'as envoyé j'avais toujours le même problème de validation mais en appliquant le deuxième code (macro verrouillage) tout semble être rentré dans l'ordre (le problème venait il de là ?)et l'action déverrouillage,verrouillage semble fonctionner à merveille. Je te remercie ainsi que tous ceux qui m'on aidé dans mon projet.

Pour info, bhbh, mon fichier comporte une cellule protégée contenant une formule qui renvoit des infos et il arrive quelquefois que j'ai besoin de rentrer l'info manuellement et donc d'écraser la formule. Cette macro me permet de deverrouiller ma feuille, de rentrer mes données et ensuite en selectionnant un autre nom dans ma liste ma formule est de nouveau dans ma cellule et ma feuille de nouveau verrouillée.

Merci encore à vous tous....
 

Cousinhub

XLDnaute Barbatruc
Re : Problème de lancement de macro

re-,

(le problème venait il de là ?)

de quoi? du nom de la macro appelée? dans ton premier post, tu nommes ta macro : Verrouillage_feuille et dans ton fichier elle s'appelle Verrouillage..
Ensuite, la ligne : Application.EnableEvents = False est à manipuler avec précaution, en cas de plantage lors de la macro, il ne faut pas oublier de remettre à True, sinon, plus d'interception d'évènements.
Une petite sub toute simple si un jour cela t'arrive :

Sub remet()
Application.EnableEvents = True
End Sub

tu la déroules et tu retrouves tes évènements
 

Discussions similaires

Statistiques des forums

Discussions
312 595
Messages
2 090 099
Membres
104 375
dernier inscrit
Willycampina