Comment récupérer la formule d'une cellule ?? [VBA] [Résolu] - VB/VBA/VBS - Programmation
Marsh Posté le 23-06-2008 à 13:20:10
Re bonjour,
Je m'inquiète un peu, j'ai pas encore de réponse à ce message...
Je me dis que ce que je demande n'est peut etre pas assez clair ?? Ou alors c'est peut etre trop compliquer de procéder comme ça ??
Aidez moi svp... Dites moi au moins si vous comprenez ma requête ? lol
Merci !!
Marsh Posté le 23-06-2008 à 13:54:40
bonjour,
utilise
y=Range("A11" ).FormulaR1C1Local
pour recupere la formule
EDIT:
je tai fait une macro (dapres ce que jai compris) qui marche
http://cjoint.com/?gxoeY2U4kh
Marsh Posté le 23-06-2008 à 14:23:12
Bonjour !
Merci beaucoup pour votre réponse, mais malheureusement, ça ne fonctionne pas, voilà ce qu'est devenu mon programme :
e = 3
Sheets("Résult Aw1" ).Cells(6, 5 + 2 * e - 2).Select
ActiveCell.Formula = "=C6*$C$4"
f = 1
g = Range("I6" ).FormulaR1C1Local
Do While f < e
ActiveCell.Formula = "=E6*$E$4"
h = Sheets("Résult Aw1" ).Cells(6, 5 + 2 * e - 2).FormulaR1C1Local
g = g + h
f = f + 1
Loop
Le compilateur m'indique une imcompatibilité de type '13' pour la ligne g = Range("I6" ).FormulaR1C1Local, alors j'ai enlevé le "R1C1" mais toujours le meme problème...
Et je ne sais pas comment j'ai pu voir ça, mais la ligne g = g + h ne fonctionne pas non plus, j'ai remplacé par : "=SOMME(g;h)" mais aucun résultat...
Que doit-je faire ?
Marsh Posté le 23-06-2008 à 14:24:57
Ah j'avais pas vu le fichier joint !!! Je vais tester ça tout de suite !! Merci !
Marsh Posté le 23-06-2008 à 15:48:37
ça y est, j'ai réussi à récupérer la formule que je voulais !
Mais je me suis mal exprimée dans ma requête je crois, désolée...
En fait, je ne veux pas faire de somme de formule qui sont déjà dans des cellules, je veux faire une somme de multiplication, et faire varier les colonnes, pour etre plus clair, voici mon programme corrigé :
Dim g As String
Dim h As String
e = 3
Sheets("Résult Aw1" ).Cells(6, 5 + 2 * e - 2).Select
ActiveCell.Formula = "=C6*$C$4"
f = 1
g = Mid(Cells(6, 5 + 2 * e - 2).FormulaLocal, 2, Len(Cells(6, 5 + 2 * e - 2).FormulaLocal))
Do While f < e
ActiveCell.Formula = "=E6*$E$4"
g = g + "+" + Mid(Cells(6, 5 + 2 * e - 2).FormulaLocal, 2, Len(Cells(6, 5 + 2 * e - 2).FormulaLocal))
f = f + 1
Loop
Sheets("Résult Aw1" ).Cells(6, 5 + 2 * e - 2).FormulaArray = "=" + g
En fait, dans la ligne : ActiveCell.Formula = "=E6*$E$4"
je voudrais changer, à chaque incrémentation, le "E" en "G", puis en "I"...
J'ai essayé : ActiveCell.Formula = "=Range(Cells(6, 5 + 2 * f - 2),Cells(6, 5 + 2 * f - 2)*Range(Cells(4, 5 + 2 * f - 2),Cells(4, 5 + 2 * f - 2))" Mais ça me génère une erreur d'exécution '1004'...
J'ai essayé avec des ".Value", idem...
Avez vous une solution ??
Merci par avance.
Marsh Posté le 23-06-2008 à 16:11:42
ok regarde la fomnction chr
tu mets ta variable ds chr
exemple chr (65) renvoie A chr(66)revoie B etc...
si tu veux E6*$E$4
avec chr(i) avec i=69, il faut mettre chr(i)+"6$"+chr(i)+"$4"
pas tres clair tt ca
Marsh Posté le 23-06-2008 à 16:22:49
Magnifique !!! ça fonctionne trop bien, merci de m'avoir aidé autant, ça faisait 2 jours que je bloquait sur cette macro, et merci pour la fonction chr(), parceque j'ai failli recréer un tableau de correspondance entre les chiffres et les lettres lol !!
Marsh Posté le 23-06-2008 à 16:27:23
tres bien alors
tu plus qua mettre [resolu] en editant ton premier message
Marsh Posté le 23-06-2008 à 09:56:36
Bonjour à tous !!
J'aurai besoin de votre aide, je suis en train de créer une macro qui génère pas mal de calculs et je suis bloquée par quelque chose qui est peut etre tout bête...
Je vous explique, j'aimerai créer une formule du type : "=C6*$C$4+E6*$E$4+G6*$G$4+..."
En fait, j'ai commencé par faire ce programme, mais évidemment, il ne fonctionne pas...
Sheets("Résult Aw1" ).Range(Cells(6, 5 + 2 * e - 2), Cells(6, 5 + 2 * e - 2)).Select
ActiveCell.Formula = "=C6*$C$4"
f = 1
g = Worksheets("Résult Aw1" ).Range(Cells(6, 5 + 2 * e - 2), Cells(6, 5 + 2 * e - 2)).Value
Do While f < e
ActiveCell.Formula = "=E6*$E$4"
h = Worksheets("Résult Aw1" ).Range(Cells(6, 5 + 2 * e - 2), Cells(6, 5 + 2 * e - 2)).Value
g = g + h
f = f + 1
Loop
En fait, mon problème est que je n'arrive pas à récupérer la formule en elle même, je ne récupère que la valeur de la cellule... Et comme je débute en VBA, c'est pas facile et ce que je fais n'ai vraiment pas clair, désolée
Merci par avance pour votre aide.
Message édité par youyou777 le 23-06-2008 à 16:30:03