Formule qui devient #Valeur

Le
rmill...
Bonjour.

J'utilise du code pour amener des fichiers dans PDF Creator et alors pour certaines feuilles du classeur j'utilise Sheets(Var_ActiveSheet).Copy afin de copier la feuille dans un nouveau classeur Excel.

Mais suite Í  ceci j'ai une formule dont le résultat devient #Valeur.

La formule est =STXT(@CELLULE("Filename";'PERSO-1'!$A$1);TROUVE("]";@CELLULE("Filename"))+1;31) dont le but est d'afficher le nom d'une feuille du classeur.

En fait je fais plusieurs Sheets(Var_ActiveSheet).Copy dand la macro. Le fait que le résultat devient #Valeur me cause des ennuis dans le déroulement.

La faon dont j'ai trouvé pour que le déroulement se passe bien est d'ajouter le code ThisWorkbook.Sheets(Feuil1.Name).Range("CN_ParamNomFeuilPersoRealZone").Calculate soit pour calculer la plage contenant ces formules. Alors le nom de la feuille revient.

Mais selon vous est-ce normal et n'y aurait-il pas une meilleure façon de procéder et d'éviter d'avoir Í  ajouter ce code comme pour que la formule ne renvoi pas #Valeur?

Merci Í  l'avance.
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
MichD
Le #26563429
Le 19/12/20 Í  15:12, a écrit :
Bonjour.
J'utilise du code pour amener des fichiers dans PDF Creator et alors pour certaines feuilles du classeur j'utilise Sheets(Var_ActiveSheet).Copy afin de copier la feuille dans un nouveau classeur Excel.
Mais suite Í  ceci ... j'ai une formule dont le résultat devient #Valeur.
La formule est =STXT(@CELLULE("Filename";'PERSO-1'!$A$1);TROUVE("]";@CELLULE("Filename"))+1;31) ... dont le but est d'afficher le nom d'une feuille du classeur.
En fait je fais plusieurs Sheets(Var_ActiveSheet).Copy dand la macro. Le fait que le résultat devient #Valeur ... me cause des ennuis dans le déroulement.
La faon dont j'ai trouvé pour que le déroulement se passe bien ... est d'ajouter le code ... ThisWorkbook.Sheets(Feuil1.Name).Range("CN_ParamNomFeuilPersoRealZone").Calculate ... soit pour calculer la plage contenant ces formules. Alors le nom de la feuille revient.
Mais selon vous est-ce normal et n'y aurait-il pas une meilleure façon de procéder et d'éviter d'avoir Í  ajouter ce code ... comme pour que la formule ne renvoi pas #Valeur?
Merci Í  l'avance.


Ceci retourne le nom de la feuille "Perso-1" dans le classeur o͹ est
écrire la formule.
=STXT(@CELLULE("Filename";'PERSO-1'!$A$1);TROUVE("]";@CELLULE("Filename"))+1;31)
Si tu copies cette feuille sans un autre classeur, la feuille "Perso-1"
est absente et la formule retourne "#valeur!".
Au moment de copier la feuille de calcul o͹ est cette formule existe, en
supposant que la formule de la feuille tu copies est en A1
Sheets(Var_ActiveSheet).copy
activesheet.range("A1") =STXT(CELLULE("Filename";'[tttt.xlsm]PERSO-1'!A1);TROUVE("]";CELLULE("Filename";'[tttt.xlsm]PERSO-1'!A1))+1;21)
Dans mon exemple, le nom du fichier source est "TTTT.xlsm". Le hic,
c'est que cette formule retourne #N/A! lorsque tu fermes le fichier source.
Comme tu ne dis pas Í  quoi te sert le nom de cette feuille dans le
nouveau classeur créé, je ne peux pas t'en dire plus!
Cette ligne de code affiche le nom de la feuille "Perso-1", tu dois
adapter le nom du fichier source "tttt.xlsm".
MsgBox
Evaluate("MID(CELL(""Filename"",'[tttt.xlsm]PERSO-1'!A1),FIND(""]"",CELL(""Filename"",'[tttt.xlsm]PERSO-1'!A1))+1,21)")
MichD
rmill...
Le #26563994
Bonjour,
J'en profite pour vous souhaiter une excellente année 2021. Tout ce dont vous désirez et surtout de la santé. Aussi pour vous remercier pour toute votre précieuse aide.
Lorsque je copie la feuille dans un nouveau classeur ... la feuille est toujours aussi dans le classeur source. Donc le nom de la feuille est dans les 2 classeurs.
Mais j'en déduis alors que la formule considère qu'elle n'y est plus ... ou que du moins le nom de la feuille n'y est plus. même si elle y est. Alors comme si la formule doit être recalculée.
Alors je recalcule la plage. Encore un grand merci.
MichD
Le #26564002
Le 01/01/21 Í  13:48, a écrit :
Bonjour,
J'en profite pour vous souhaiter une excellente année 2021. Tout ce dont vous désirez et surtout de la santé. Aussi pour vous remercier pour toute votre précieuse aide.
Lorsque je copie la feuille dans un nouveau classeur ... la feuille est toujours aussi dans le classeur source. Donc le nom de la feuille est dans les 2 classeurs.
Mais j'en déduis alors que la formule considère qu'elle n'y est plus ... ou que du moins le nom de la feuille n'y est plus. même si elle y est. Alors comme si la formule doit être recalculée.
Alors je recalcule la plage. Encore un grand merci.


Ta formule ne fonctionne pas dans le nouveau classeur. Si tu veux t'en
rendre compte, fais un double-clic dans la cellule, au sortir de la
cellule, elle affichera "#valeur! Dans le nouveau classeur, la feuille
dont il est fait référence dans la formule n'existe pas.
Si tu as besoin du nom de la feuille inscrite dans la feuille source en
cellule A1
Pourquoi ne pas faire ceci :
'-----------------------
Sub test()
With ActiveSheet
x = .Range("A1").Value
.Copy
End With
With ActiveWorkbook
With .ActiveSheet
.Range("A1").Value = x
End With
End With
End Sub
'-----------------------
MichD
Poster une réponse
Anonyme