inhiber le woorkbook open

  • Initiateur de la discussion Initiateur de la discussion campus
  • 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 !

C

campus

Guest
Débutant avec les macros, je recherche comment, après enregistrement d'un fichier sous un autre nom que son nom initial, empêcher la macro open de se remettre en route quand je rouvre le nouveau fichier.
Merci pour votre aide
 
Re : inhiber le woorkbook open

Bonsoir à tous

campus [highlight][Bienvenue sur le forum][/code]
Débutant avec les macros
Débutant avec le forum aussi apparemment...🙄
extrait de la charte du forum
2 – Lorsqu’on rentre sur un fil, comme dans la vie de tous les jours, on est poli en disant « Bonjour ».

Pour ta question, une possibilité: enregistrer ta copie en *.xlsx

ou si présence d'autres macros nécessaire, supprimer la procédure Workbook_Open de la copie par le biais de VBA
(voir les exemples à ce sujet qui ne manquent pas dans les archives du forum)
Là, encore relire la charte du forum, notamment le point 1), section Demandeur 😉
 
Dernière édition:
Re : inhiber le woorkbook open

Toutes mes excuses pour cette entrée en matière "involontaire". Un survol trop rapide de la charte en est la cause !!
Je vais prendre le temps de mieux comprendre le fonctionnement de votre site !!
 
Re : inhiber le woorkbook open

Re

Pour illustrer ce que je suggérai dans la dernière partie de mon précédent message
(test OK sur Excel 2013)
1) Copier le code ci-dessous dans un module standard
2) Enregistrer le classeur avec l'extension *.xls
Puis lancer la macro
Une copie sera créée et dans cette copie, et tout le code VBA présent dans ThisWorkBook sera supprimé.
(Par contre le module standard lui sera conservé dans la copie)
VB:
Sub SupprWBookOpen()
'Cocher dans les références de VBE :
'Microsoft Visual Basic for Applications Extensibility 5.3
Dim wCopie, aWBK As Workbook
On Error GoTo gErreur
    wCopie = _
        Application.GetSaveAsFilename(FileFilter:="Classeur Excel,*.xls", InitialFileName:="CopieClasseur", Title:="Sauvegarde spéciale")
    If wCopie = False Then Exit Sub
ActiveWorkbook.SaveCopyAs wCopie
Set aWBK = Workbooks.Open(wCopie) '* - ici le léger problème ;-)
    With aWBK.VBProject.VBComponents("ThisWorkbook")
        .CodeModule.DeleteLines 1, .CodeModule.CountOfLines
    End With
aWBK.Save: aWBK.Close True
Exit Sub
gErreur:
MsgBox Err.Description, vbExclamation, "Une erreur est survenue."
End Sub

NB: Reste un léger problème :
Lorsque la macro *ouvre la sauvegarde , la procédure WorkBook_Open est exécutée puis seulement après sera supprimée.
 
Dernière édition:
Re : inhiber le woorkbook open

Salut
Re
Une copie sera créée et dans cette copie, et tout le code VBA présent dans ThisWorkBook sera supprimé.
et s'il y a d'autres évènements qu'on veut garder ? (dans l'exemple joint, shee.activate)
.


Du Manant des sources d'idées
Mon Sieur Staple vous êtes vraiment radical : vous tranchez, vous coupez les têtes allègrement 😛 !

Une cellule "sentinelle libre qui agite un Drapeau", ici A1, pourrait éviter de perdre toute trace, non ?
Dans ThisWorbook
Code:
Private Sub Workbook_Open()
  If [A1] <> "" Then Exit Sub
  'la suite d'actions prévues
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  If SaveAsUI Then [A1] = 1 'boîte de dialogue Enregistrer sous
End Sub

et pour ne pas tester en reste,
NB : Reste un problème quand on enregistre sous en gardant le même nom malgré l'avertissement !
 

Pièces jointes

Re : inhiber le woorkbook open

bonjour,
Merci pour votre aide. Je viens te tester vos solutions, effectivement le open est inactif, mais "un peu trop" !!! En effet, il faudrait que open refonctionne à chaque réouverture du fichier initial, et plus sur la copie. Désolé si je n'ai pas été assez clair !

Cordialement
 
Re : inhiber le woorkbook open

Bonjour à tous,

La solution de Si... me semble fonctionner parfaitement, L'éventualité de Sauvegarder Sous ne présente pas de problème, puisque l'exécution de WorkBook_Open doit être conservée dans ce cas.

Une autre solution possible consiste à vérifier le nom du classeur initial:

Code:
Private Sub Workbook_Open()
  If Not ThisWorkbook.Name = "nomfichier" Then Exit Sub
  'la suite d'actions prévues
End Sub
Cordialement.
 
Dernière édition:
Re : inhiber le woorkbook open

Bonjour à tous


Si...
[TABLE="class: outer_border, width: 500"]
[TR]
[TD][highlight][De l'alleutier radical au manant neuronal][/code]
La question est plutôt pourquoi prévoir du code dans le Worbook_Open si c'est pour ensuite chercher à l'inhiber ?
[/TD]
[/TR]
[/TABLE]


Sinon pour être moins radical, il suffisait de modifier le code en conséquence, ne supprimer que la procédure WorkBook ou mettre ces lignes en commentaires (le tout toujours par VBA)

Quoique maintenant j'affiche ma mine dubitative (et j'aime pas cela, ça fait ressortir mes rides) à la lecture de ceci:
En effet, il faudrait que open refonctionne à chaque réouverture du fichier initial, et plus sur la copie.


EDITION: Bonjour Papou-net
 
Dernière édition:
Re : inhiber le woorkbook open

re bonjour à tous,

Explications: Ouvrir fichier TEST avec macro dans open qui génère des valeurs, enregistrement après traitement et calculs sous FICH1. Réouverture du fichier TEST avec nouvelles valeurs, puis idem et enregistrement sous FICH2.
Donc empêcher la macro dans le open du fichier TEST de fonctionner lors de l'ouverture de FICH1 ET FICH2.
Merci à vous tous, quel chemin il me reste à parcourir !!!!
 
Re : inhiber le woorkbook open

Re

campus
Merci à vous tous, quel chemin il me reste à parcourir !!!!
Alors là tout de suite, il est un chemin tout court que tu peux emprunter derechef 😉
Joindre ton fichier TEST avec ses valeurs, ses formules et son WorkBook_Open 😉

Comme cela on testera in situ sur des bases identiques aux tiennes.
 
Re : inhiber le woorkbook open

re à tous,

Trop content !!! la solution de papou-net en vérifiant le nom du classeur fonctionne parfaitement.
Bien aimé ton commentaire staple 1600 !!! un chemin ou bien une auto route à construire !!!
Un grand merci pour votre aide, super rapide en plus, ça fait plaisir que des "pros" ne dénigrent pas les "débutants".
Je pense que vous allez me retrouver très vite sur le forum pour d'autres questions !!!!!!
Pour staple: une indication pour ta question - 30 élèves donc 30 sujets différents c'est mieux!
Bien cordialement.
 
Re : inhiber le woorkbook open

Re

campus
Pour staple: une indication pour ta question - 30 élèves donc 30 sujets différents c'est mieux!
Et sur ces 30 élèves combien savent qu'on peut ouvrir un classeur sans activer les macros ? 😉

La solution de Papou_net (que je salue au passage) fonctionnera tant que les macros seront activées...
(et c'est le cas évidemment pour tout classeur contenant du code VBA)
 
Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
XL 2016 MACROS-VBA
Réponses
1
Affichages
568
Réponses
26
Affichages
2 K
Réponses
3
Affichages
410
Retour