VBA excel : insertion par macro non validée

Fermé
arsouille136 - 3 avril 2009 à 15:39
 arsouille136 - 6 avril 2009 à 15:19
Bonjour,

contexte : classeur XL avec feuilles de relevés hebdo Sn (semaine n). 1 par sem.
j'ai fait une macro qui permet d'insérer une feuille après la semaine n en mettant à jour son nom dans l'onglet (S n+1)
NB : S15 est la feuille référence répliquée.
Ces feuilles Sn ont des références entre elles (sur Sn-1 et sur Sn+1) dans certaines cases. Il me fallait donc incrémenter toutes les ref relatives à des feuilles lors de la création d'une nouvelle feuille.


le code :

Sub nvlSem()
Names.Add Name:="NouvFeuille", RefersTo:="=" & [NouvFeuille] + 1
Sheets("S15").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "S" & Format([NouvFeuille], "00")
ActiveSheet.Range("E4") = "S" & Format([NouvFeuille], "00")
ActiveSheet.Range("E33") = "=SI(" & "S" & Format([NouvFeuille] - 1) & "!E83=1," & Chr(34) & "we" & Chr(34) & "," & Chr(34) & Chr(34) & ")"
ActiveSheet.Range("E86") = "=" & "S" & Format([NouvFeuille] - 1) & "!E84"

' nvlSem Macro
' Macro enregistrée le 02/04/2009 par'
' Touche de raccourci du clavier: Ctrl+s

End Sub



Pb :
les formules dans les cases se mettent bien à jour en fonction du rang n+i, MAIS elles apparaisent sous la forme #nom (pour E33 avec le test SI notamment) et il faut double-cliquer sur la case, et ensuite appuyer sur entrer, comme pour valider la formule insérée par la macro pour qu'elle se mette à jour.

merci de bien vouloir m'aider ! j'aimerais pouvoir finir cette feuille et pouvoir laisser les utlisateurs autonomes sur cet outil !
cordialement,

Alex
A voir également:

2 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 644
4 avril 2009 à 17:02
Bonjour,

Aprés test, il faut juste remplacer :
ActiveSheet.Range("E33") = "=SI(" & "S" & Format([NouvFeuille] - 1) & "!E83=1," & Chr(34) & "we" & Chr(34) & "," & Chr(34) & Chr(34) & ")"

par :

ActiveSheet.Range("E33") = "=IF(" & "S" & Format([NouvFeuille] - 1) & "!E83=1," & Chr(34) & "we" & Chr(34) & "," & Chr(34) & Chr(34) & ")"

Parceque VBA est en anglais et qu'a l'interprétation il va de lui même "franciser" la formule.

A+
0
merci Pilas pour ta réponse aussi rapide !
0