Exécution d'une macro dans une feuille à l'ouverture d'un classeur

Bonjour à tous, je m'en réfère à vos talents pour un problème que je n'arrive à résoudre :

J'aimerais, lorsque j'ouvre un classeur Excel, que la seconde feuille s'affiche avec l'exécution d'une macro étant liée à cette feuille.

J'ai 2 codes dans ce classeur :

le 1er dans [ThisWorbook] étant celui-ci :

Private Sub Workbook_Open()

Select Case MsgBox("Ne pas supprimer les cellules comportant des formules !", vbOKOnly + vbExclamation, "AVERTISSEMENT")

End Select

End Sub

le 2ème dans la feuille 2 :

Sub macro_formules()

Range("B3").Select

ActiveCell.FormulaR1C1 = "=IF(ISBLANK(RC[-1]),"""",R[-1]C+1)"

Range("B3").Resize(998).FillDown

Range("H2").Select

ActiveCell.FormulaR1C1 = "=IF(C6=""AC"",""2"","""")&IF(C6=""ICP"",""3"","""")&IF(C6=""P"",""2"","""")&IF(C6=""Q"",""2"","""")&IF(C6=""S"",""1"","""")&IF(C6=""TM"",""1"","""")"

Range("H2").Resize(999).FillDown

Range("E2").Select

ActiveCell.FormulaR1C1 = "=IF(RC[-1]>0,EDATE(RC[-1],1),"""")"

Range("E2").Resize(999).FillDown

End Sub

J'ai essayé plusieurs solutions mais le problème est que quand je ferme le classeur en étant sur la feuille 2 après enregistrement, j'ai un message d'erreur venant de VBA dès que je l'ouvre à nouveau.

Salut,

Je trouve que ta demande n'est pas très claire et ton fichier modèle manque incontestablement

Je me suis dit que tu souhaitais qu'à l'ouverture - quelle que soit la feuille sur laquelle a été enregistré et fermé le fichier - la ''Feuille 1'' soit activée et que la macro ''macro_formules'' soit déclenché à chaque fois. Ceci serait le cas dans le fichier ci-joint.

Si ce n'est pas ça, joins ton fichier et soit plus clair

Cordialement.

30mappe1.xlsm (24.76 Ko)

Merci pour ta réponse et il m'est impossible d'exécuter ta macro car mon entreprise bloque toutes celles venant du web !

Je pense avoir trouvé le code, que j'ai inscrit dans ThisWorkBook :

Private Sub Workbook_Open()

Feuil2.Range("B3").FormulaR1C1 = "=IF(ISBLANK(RC[-1]),"""",R[-1]C+1)"

Feuil2.Range("B3").Resize(998).FillDown

Feuil2.Range("H2").FormulaR1C1 = "=IF(C6=""AC"",""2"","""")&IF(C6=""ICP"",""3"","""")&IF(C6=""P"",""2"","""")&IF(C6=""Q"",""2"","""")&IF(C6=""S"",""1"","""")&IF(C6=""TM"",""1"","""")"

Feuil2.Range("H2").Resize(999).FillDown

Feuil2.Range("E2").FormulaR1C1 = "=IF(RC[-1]>0,EDATE(RC[-1],1),"""")"

Feuil2.Range("E2").Resize(999).FillDown

End Sub

Ainsi, quand j'ouvre mon classeur, ayant été enregistré et fermé sur la feuille1 ou la feuille2, la macro s'exécute automatiquement sur la feuille2 comme je le souhaitais

C'est effectivement une autre manière de réaliser ton besoin.

Tu as supprimé tous les ''Select'' de ton code, c'est un bon nettoyage.

Tu peux encore alléger ton code de la manière suivante :

With Feuil2
    .Range("B3").FormulaR1C1 = "=IF(ISBLANK(RC[-1]),"""",R[-1]C+1)"
    .Range("B3").Resize(998).FillDown
    .Range("H2").FormulaR1C1 = "=IF(C6=""AC"",""2"","""")&IF(C6=""ICP"",""3"","""")&IF(C6=""P"",""2"","""")&IF(C6=""Q"",""2"","""")&IF(C6=""S"",""1"","""")&IF(C6=""TM"",""1"","""")"
    .Range("H2").Resize(999).FillDown
    .Range("E2").FormulaR1C1 = "=IF(RC[-1]>0,EDATE(RC[-1],1),"""")"
    .Range("E2").Resize(999).FillDown
End With

Tout cela est parfait, merci pour le précieux coup de main

J'en profite pour souhaiter de bonnes fêtes

Rechercher des sujets similaires à "execution macro feuille ouverture classeur"