Forcer au calcul un texte exprimant une formule
Bonjour,
J'ai crée une formule à la suite de champs renseignés par plusieurs cellules et les ai assemblé par "CONCATENER".
ex. au départ
="=SI("&H7&"("&C7&D7&E7&F7&";"&I7&J7&K7&L7&";"&O7&P7&Q7&R7&");AG10;NA())"
donne
=SI(ET(AG9<S9;AG10>S9;S10>S9);AG10;NA())
Pour la "valider" je dois entrée dans la cellule et faire ENTREE et la formule fonctionne.
Je souhaite à la suite d'une macro reproduire cette validation mais sans que la formule soit contenue dans
ActiveCell.FormulaR1C1 = FORMULE REELLE
car elle est destiné à être modifié
mais plutôt
ActiveCell.FormulaR1C1 = Range("z6"). ?
Merci pour votre aide
Bien à vous
Bagi !
J'ai essayé des macros avec
1) remplacer = par =
2) Convertir
3) validation matricielle
4) des multiplications par un (format)
5) changer le format en Standard
6) des Sendkeys(non reconnu par mon vba)
Sub Entrer_Sortir_Cellule()
Application.ScreenUpdating = False
Dim c As Range
For Each c In Selection
Sendkeys "{F2}"
Sendkeys "{Enter}"
Next c
Application.ScreenUpdating = True
End Sub
Je n'en peux plus
De l'aide SVP !
Bagi !
Bonjour
Tu ne crois pas que pour augmenter les chances qu'une solution soit trouvée, il faut fournir un fichier avec tes formules
Bonsoir à tous (Banzaï aussi lol !),
Voici le fichier et mon problème :
Je souhaite pouvoir faire une macro qui prend la formule en A1 et la "valide" comme en A2.
Etant donnée que je compose cette formule à travers un "composeur de formule conditionnel"
Je souhaiterais reprendre la formule composée et la mettre dans une base de donnée graphique. Le résultat que je veux obtenir c'est l'action F2 et entrée. Mais ceci sans que la formule soit dans la macro car elle est destinée à changer. (Si elle restait dans la macro à chaque fois que je demanderais la macro elle me rejetterais la formule originale et non la nouvelle). Je ne veux pas non plus entrée dans la cellule et faire Entrée.
J'ai donc essayé :
Remplacer "=" par" =" en enregistrement ou conversion de données ça fonctionne mais pas quand je la rappelle
etc...
J'ai fini par penser que la commande Sendkey était la solution comme :
Range("A2").Sendkeys "{F2}"
Range("A2").Sendkeys "{Enter}"
Mais VBA me dit qu'il y a erreur de compilation etc...
J'ai pensé à stoker ma formule dans une variable mais je m’emmêle les pinceaux pour la rappeler et je ne suis même pas sûr qu'elle puisse être "validé à la sortie"
Voilà j'espère que j'ai bien expliqué mon problème.
Bien à toi
Bagi!
Bonsoir,
Dim s As String
s = [A1]
[A2].FormulaLocal = s
ça a l'air de le faire
eric
Et dire qu'il y a quelques mois j'ai été confronté au même problème sans arriver à le résoudre...
J'aurais dû me poser la question
eric
Bonjour,
Merci de votre aide car après de très nombreuses recherches, j'ai trouvé ma solution à mon problème grâce à vous.
Mon problème était de transformer une formule en texte (concaténé) en formule active.
Pour info, je copie une plage de cellules "PlageP" comportant chacune une formule différente venant d'une fonction qui concatène du texte et la colle dans une autre plage de cellule "PlageFormule" en transformant la formule écrite en texte en formule active.
Voici la macro utilisée :
Range("PlageFormule").FormulaLocal = Range("PlageP").Value
Merci encore
TH
Ce message est destiné à Banzaî et Eriiic, ainsi que tous ceux qui m'on aidé sur ce forum à chaque fois que j'en ai eu besoin.
Je voulais vous montrer ce que j'avais réussi à rassembler comme bout de code pour réaliser une plateforme d'aide à la décision en trading sur une simple feuille excel. Moi qui ne comprenais pas grand chose en VBA (et c'est toujours le cas^^), je me suis acharné pour reproduire un graphique OHLC avec toutes les moyennes mobile simples ou exponentielles, des conditions de stratégies pour dessiner des points graphiques et le tout en temps réel ou presque, une minutes de décalage par rapport aux cotations futures...
Voila je vais pas m'étaler, le résultat est là : http://turtlesignal.e-monsite.com/pages/robalgo.html et il s'appel Robalgo-lite.
En attendant vos critiques et vos idées d'amélioration, je vous souhaite le meilleur et A+
Au plaisir de vous lire,
Bagi^^
Bonjour,
Pas regardé encore. Pour avoir suivi de part en part je sais qu'il faut du temps devant soi, et du courage si on est un ignare de ce domaine
Tout ce que je voulais dire c'est : bel exemple de persévérance, bravo
Et une suggestion.
5. Un des bugs peu aussi provenir du système des virgules au lieu des points.Transformer les virgules en points
Mémoriser l'état du séparateur système (propre à excel) , le mettre à ".", l'activer, et restaurer le contexte à la fin : tu peux l'intégrer.
La petite proc que je m'étais faite :
'Utiliser temporairement séparateur décimal d'excel
Dim UseSystemSeparatorsSav As Boolean, DecimalSeparatorSav As String
Sub sepDecimalExcel()
With Application
' sauvegarder
UseSystemSeparatorsSav = .UseSystemSeparators
DecimalSeparatorSav = .DecimalSeparator
' changer
.DecimalSeparator = "."
.UseSystemSeparators = False
End With
End Sub
Sub retablirSepDecimal()
With Application
.UseSystemSeparators = UseSystemSeparatorsSav
.DecimalSeparator = DecimalSeparatorSav
End With
End Sub
Si tu veux le connaitre avant :
Function separateurDecimal() As String
' séparateur décimal en cours
If Application.UseSystemSeparators Then
'séparateurs système de Microsoft Excel utilisés
separateurDecimal = Application.International(xlDecimalSeparator)
Else
'séparateurs régionaux de Windows utilisés
separateurDecimal = Application.DecimalSeparator
End If
End Function
Tu peux éventuellement avoir le séparateur millier qui peut te gêner s'il est sur "." (XlThousandsSeparator), à sauvegarder, changer (avant le séparateur décimal) et restaurer dans ce cas.
eric
^Merci Eric on en parlait justement avec qq'un qui testait le prog ce soir. Super ! Merci ça sera dans la prochaine MAJ