Copier et stocker les formules
Bonjour à toutes et tous,
Je voudrais pouvoir via macro copier toutes les formules d'une feuille de classeur puis les stocker (les enregistrer) dans une macro. Pour pouvoir par exemple les insérer dans les feuilles 2, 3, 4 et ainsi de suite.
Le classeur final pouvant contenir un nombre de feuilles très important, je voudrais ne pas faire appel à copier, collage spécial formules en sélectionnant toutes le feuilles, car une une fois les formules coller sur chaque feuilles et calculées le classeur sera enregistré uniquement acec les valeurs sans les formules mais je voudrais via la macro pouvoir réinjecter les formules pour mises à jour si besoin.
Auriez vous une solution a me proposer ?
Merci
Cordialement
Hugues
Bonjour Hugues,
L'ensemble des valeurs stockées dans des variables d'une macro est effacé à la fermeture du fichier. A moins de stocker tout ça sur une feuille (caché et/ou protégée), tu ne pourras pas procéder ainsi.
Bonjour Pedro,
Merci pour ton retour rapide.
Si j'ai bien compris ta réponse il faudrait que j'envisage par exemple d'écrire toutes mes formules en vba dans un module pour ensuite appliquer la macro aux feuilles concernées.
Certes pour quelques formules cela peut se faire mais la feuille initiale de mon classeur final comporte un nombre importants de formules sur plusieurs lignes et colonnes et je cherche un code qui pourrait justement récupérer ces formules sans que j'ai à les saisir moi dans un module.
En effet via l'enregistreur de macro j'arrive à récupérer les formules (touche entrée dans la barre de formule de chaque cellule comportant une formule) puis à les simplifier mais si je dois le faire pour chacune de mes formules cela va être très long.
Sub Testmacroformules()
Range("A10:F29").FormulaR1C1 = "=R3C+2"
Range("A30").FormulaR1C1 = "=R[-4]C*2"
Range("B30").FormulaR1C1 = "=R[-4]C*100"
Range("C30").FormulaR1C1 = "=RC[-1]-120"
Range("D30").FormulaR1C1 = "=R[-4]C*4000"
Range("E30").FormulaR1C1 = "=RC[-4]+3-RC[-1]"
Range("F30").FormulaR1C1 = "=R[-6]C"
Range("A31:F32").FormulaR1C1 = "=R3C+2"
Range("A33:A35").FormulaR1C1 = "=R[-4]C*2"
Range("B33:B35").FormulaR1C1 = "=R[-4]C*100"
Range("C33:C35").FormulaR1C1 = "=RC[-1]-120"
Range("D33:D35").FormulaR1C1 = "=R[-4]C*4000"
Range("E33:E35").FormulaR1C1 = "=RC[-4]+3-RC[-1]"
Range("F33:F35").FormulaR1C1 = "=R[-6]C"
Range("A36:F36").FormulaR1C1 = "=R3C+2"
End SubEst il possible de récupérer relativement rapidement, tous du moins sans saisie une par une par une, les formules de ma feuille initiale ?
Merci
Cordialement
Hugues
A ma connaissance non, ce que je voulais dire c'est qu'un code général pour copier, enregistrer et coller des formule EXCEL sans les connaitre à priori n'est pas possible à moins de les stocker dans une feuille Excel.
Si j'écris une macro comme ceci :
MaVariable As Integer
Sub MaMacro()
MaVariable = MaVariable + 1
MsgBox MaVariable
End SubA la première exécution, MaVariable devient égale à 1. Si je ferme le classeur, que je le ré-ouvre et que j’exécute ce code :
Sub MaMacro2()
MsgBox MaVariable
End SubLa valeur stockée dans MaVariable a été réinitialisée à la fermeture et ce code renvoie donc 0.
Par contre si je fais :
MaVariable As Integer
Sub MaMacro()
MaVariable = MaVariable + 1
MsgBox MaVariable
Sheets("FeuilleCachée").Range("A1") = MaVariable
End Sub
'Fermeture du classeur
'Ré-ouverture
Sub MaMacro2()
MaVariable = Sheets("FeuilleCachée").Range("A1")
MsgBox MaVariable
End SubJe retrouve bien la dernière valeur que j'ai stocké dans cette variable.
L'autre possibilité est bien celle que tu as commencé à faire : écrire toutes les formules en dur via VBA...
Bonsoir Pedro,
Je vais ce week end essayer de mettre en place ton approche en faisant appel à une feuille référence.
Je ferais un retour à l'issue
Merci
Cordialement
Hugues
Bonjour Pedro, à toutes et tous,
Même si cela va être fastidieux j'ai choisi d'écrire mes formules en "dure" à l'intérieur d'une macro.
Faute d'avoir pu trouver une solution pour récupérer automatiquement via macro toutes les formules d'une feuille donnée.
Merci beaucoup Pedro, pour tes réponses et tes conseils
Bien à vous toutes et tous
Cordialement
Hugues