Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème de lancement de macro

  • Initiateur de la discussion Initiateur de la discussion Zlopeck
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 😕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.
 
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:
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
 
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
 
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

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

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
 
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....
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
163
Réponses
14
Affichages
248
Réponses
4
Affichages
243
Réponses
41
Affichages
698
Réponses
4
Affichages
177
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…