Lancement de macro à l'ouverture d'Excel

Bonjour à Tous

J'appelle quelques macros à l'ouverture du fichier, le problème et que cela ne marche que si au dernier enregistrement, j'ai sélectionné le 1er onglet.

Ci-joint ma procédure Workbook_open

Private Sub Workbook_open()
MDP = "toto"
Call creabouton
Call masqueopen
Call protectopen
End Sub

A vrai dire je pense que mon problème, viens plûtot d'une macro que j'appelle, mais je ne vois pas du tout le problème.

Sub masqueopen()
Dim she As Worksheet
For Each she In ThisWorkbook.Worksheets
With she
.EnableAutoFilter = True
.EnableOutlining = True
.Protect Contents:=True, Password:=MDP, UserInterfaceOnly:=True
End With
MsgBox she.Name
Next she
End Sub

Je vous remercie d'avance de vos réponses

Bonjour

En principe cela ne devrait pas empêcher la macro de se déclencher

Modifies ta macro : Ajout de messages

Private Sub Workbook_open()
MDP = "toto"
Call creabouton
MsgBox "retour creabouton"
Call masqueopen
MsgBox "retour masqueopen"
Call protectopen
MsgBox "retour protectopen"
End Sub

Si aucun message n'apparait ton fichier va être indispensable

Bonjour

Malheureusement c'est un fichier professionnel, je ne peux pas le mettre en ligne.

Pas contre, ce qui peut changer par rapport à un fichier standard, c’est que j’ai des onglets cachés, un onglet graph et des protections un peu partout. En essayant de supprimer une à une c’est contraintes j’ai toujours le même problème.

Existe-t-il una eutre solution à mon problème ?

Bonjour

Et qu'en est-il des messages ?

Les messages s'affichent aléatoirement suivant l'onglet qui est sélectionné au dernier enregistrement du fichier excel.

Après avoir bidouillé dans tout les sens, j'ai enfin trouvé la source de mon probléme.

Mais je n'arrive par à contourner le probléme.

Pour les besoins de mon fichier, j'ai créé les 2 formules excel suivantes dans un module spécifique.

'Création d'une Fonction spécifique pour vérifier si une cellule contient le caractère "=" en début de formule
Function EstFormule(cel As Range) As Boolean
    EstFormule = False
    Application.Volatile
    If Left(cel.FormulaLocal, 1) = "=" Then EstFormule = True
End Function

'Création d 'une Fonction spécifique pour vérifier si une cellule à les signe ";;" dans la formule
Function Estblanc(cel As Range) As Boolean
    Estblanc = False
    Application.Volatile
    If WorksheetFunction.Search(";;", cel.FormulaLocal) > 0 Then Estblanc = True
End Function

Malheureusement pour que ma macro marche au démarrage, il faudrait que j'enleve ses fonctions.

Est ce que mes fonctions sont mal programmées (dans l'état elles font le boulot que je leur demande )?

Si non il y a t-il un moyen de éviter mon problème?

D'avance merci pour vos solutions

Bonsoir

atchoume50 a écrit :

Malheureusement pour que ma macro marche au démarrage, il faudrait que j'enleve ses fonctions.

Je ne vois pas en quoi elles gênent ?

atchoume50 a écrit :

Est ce que mes fonctions sont mal programmées (dans l'état elles font le boulot que je leur demande )?

Je ne trouve pas, je n'aurai pas mis "EstFormule = False" ou "Estblanc = False" car par défaut c'est False

atchoume50 a écrit :

Si non il y a t-il un moyen de éviter mon problème?

Sans un fichier avec ce problème, je ne sais pas

Bonsoir Banzai64

Tu trouveras ci-joint un fichier allégé mais le principe et le problème restent les mêmes.

Les deux formules que j'ai créées sont utilisés pour des mises en forme conditionnelle dans les colonnes C, F, K, L, N, O.

Je me tiens à ta disposition pour toutes questions

13base.xlsm (41.27 Ko)

Bonsoir

Pour moi c'est une colle

En faisant du pas à pas dans la macro masqueopen

Sur l'instruction ".Protect Contents:=True, Password:="toto", UserInterfaceOnly:=True" ---> F8 ---> fin de la macro sans passer par la fin End With etc ....

Si quelqu'un comprend ?

Rechercher des sujets similaires à "lancement macro ouverture"