Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

le code FormulaLocal dans vba

pascal21

XLDnaute Barbatruc
bonsoir
je viens de découvrir pour le vba le code formulaLocal pour inserrer une formule dans un code vba
ma question est-ce que mon classeur serait moins lourd si je remplace les formules qui sont dans les cellules par ce code dans le vba
vaut-il mieux en a1 =somme(a2:a10)
ou alors cells(1,1).FormulaLocal('a2:a10')
je vois pour principal intéret que les formules ne risquent plus de disparaitre à cause d'un mauvais clic sur la mauvais cellule
merci
 

Jacques87

XLDnaute Accro
Bonjour Pascal

L'utilisation de FormulaLocal te permet également de paramétrer tes formules et de ce fait de les utiliser par exemple dans une boucle, alors qu'avec les formules il faudrait les appliquer autant de fois que nécessaire.

Attention, de plus ce code s'écrit de la façon suivante
Cells(1,1).FormulaLocal = '=SOMME(A2:A10)'

Bon courage
 

pascal21

XLDnaute Barbatruc
bonsoir
exact merci d'avoir rectifié l'erreur
donc dans le cas où plusieurs formules identiques sont présentes il vaut mieux utiliser le code
donc en admettant que j'ai une colonne b avec cette formule dans chaque ligne
ex: en b1 =somme(c1:e1)
en b2 =somme(c2:e2)
jusqu'a b15
faut-il recopier le code autant de fois qu'il y a de lignes concernées
ex cells(1,2).formulalocal = '=somme(c1:e1)
cells(2,2).formulalocal = '=somme(c2:e2)
jusqu'a cells(15,2)
comment faire court dans ce cas là

Message édité par: pascal21, à: 06/02/2006 17:48
 

Jacques87

XLDnaute Accro
Pascal

Dans le cas que tu présentes en effet une macro n'est pas pertinente car tes cellules sont dans la même colonne.
En effet tu copies la formule dans la première cellule et tu la tires avec la poignée jusqu'à la dernière

Maintenant cette macro peut être utile si jamais tu désires utiliser cette fonction épisodiquement dans une procédure bien spécifique, et alors pour répondre complètement à ta question tu boucles comme te le propose Pierre Jean
 

Merlinlempaffeur

XLDnaute Nouveau
Bonjour,

Je ressors ce sujet du grenier car la formule de Pierre-Jean m'a bien aidé mais je ne comprends pas bien la syntaxe en vert ci-dessous :
ActiveSheet.Cells(n, 2).FormulaLocal = '=somme(C' & n & ':E' & n & ')'
J'ai parcouru les sites parlants du sujet mais pas moyen de mettre la main sur une explication.

Merci d'avance aux bonnes âmes.

Merlin
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil, Merlin

Merlin
Pour infos
L'usage c'est de créer sa discussion pour créer sa question
(Le cas échéant mettre un lien vers l'ancienne discussion pour sourcer la question actuelle)

Déjà, il y a bug (vu l'anciennété du message)
Tu devrais lire le code ainsi formaté
VB:
Sub test()
For n = 2 To 15
ActiveSheet.Cells(n, 2).FormulaLocal = "=somme(C" & n & ":E" & n & ")"
Next
End Sub
 

Merlinlempaffeur

XLDnaute Nouveau
Bonsoir Staple,

Désolé, j'ai cru bien faire, vu que c'était sur le code même que je voulais un renseignement. Je prends note pour la prochaine fois.
J'avais compris que c'était des " et mon code fonctionne mais je ne pige pas le " & n & ", peux-tu m'aider?
 

Merlinlempaffeur

XLDnaute Nouveau
Désolé si je me suis mal exprimé ma question concerne l'utilité de : "espace&espace et le espace&espace".
Je vois bien que c'est pour aller chercher les cellules C2 à C15 mais pourquoi cette écriture est-elle nécessaire?
Le reste je comprends.
 

Staple1600

XLDnaute Barbatruc
Re

VB:
On peut aussi simplement écrire (sans boucle)
Sub test_2()
Dim n&
n = 15
Cells(2, "B").Resize(n - 1).FormulaR1C1 = "=SUM(RC[1]:RC[3])"
End Sub
Alors pour les espace, c'est parce que FormulaLocal attend un string valide
 

Staple1600

XLDnaute Barbatruc
Re

Tu as testé le petit code du message#13?

PS: Comme je le disais, il serait peut-être approprié de créer ta propre discussion, non ?
On en est déjà à 7 messages dans un fil initié par un tiers...
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…