Bonjour vdlattre,
Je confirme d'abord les réponses précédentes de James007 et MFerrand :
1) Le code de la sub Workbook_Open() doit être dans ThisWorkbook
2) Pour les Range() à droite de Then, il faut bien un point devant
J'ajoute tout ce qui est ci-dessous.
Ton classeur contient une seule feuille, qui est donc forcément la feuille active ; si ça restera comme ça
(tu n'ajouteras pas d'autre feuille, même plus tard), tu peux enlever ton bloc With, donc tous les points
correspondants, car si une feuille n'est pas indiquée explicitement, c'est la feuille active qui est utilisée.
Private Sub Workbook_Open()
If Range("F3") <> "0" Then Range("F3") = "0"
If Range("E4") <> "0" Then Range("E4") = "15' - 16'"
If Range("E5") <> "0" Then Range("E5") = "Eco Leger"
End Sub
À propos des 3 tests
rappel : une cellule vide a pour valeur le nombre 0 ;
ton 1er test serait plutôt : If Range("F3") <> 0 Then Range("F3") = 0
sans les guillemets autour de 0 (à moins que tu aies décoché l'option Excel
générale « ☐ Afficher un zéro dans les cellules qui ont une valeur nulle »).
Je crois que tes 2 tests suivants seraient plutôt :
If Range("E4") <> "15' - 16'" Then Range("E4") = "15' - 16'"
If Range("E5") <> "Eco Leger" Then Range("E5") = "Eco Leger"
(peut-être un oubli d'adaptation après un copier / coller ? )
Tu as écrit : « je souhaite que les cellules F3, E4 et E5 prennent toujours les valeurs suivantes... » ;
dans ce cas, pourquoi faire un test au préalable ? code VBA (avec notation abrégée) :
Private Sub Workbook_Open()
[F3] = 0: [E4] = "15' - 16'": [E5] = "Eco Léger"
End Sub
et peu importe si les 3 mêmes valeurs y étaient déjà : ça prend
moins d'une seconde pour écrire ces 3 données !
Merci de me donner ton avis.
Cordialement