[VBA EXCEL] aide constuction formule

Résolu/Fermé
jeremac - 22 mai 2008 à 13:02
 Utilisateur anonyme - 22 mai 2008 à 15:28
Bonjour,

j'aimerais construire une formule de calcul directement dans une macro mais apparemment j'ai un problème de syntaxe , et je ne vois pas ou se situe mon erreur

str = "=ROUND(SUM(" & c1 & LineNumber & ":" & c2 & LineNumber & ")" & ";" & "0)"

en bref je voudrais calculer une somme sans décimales

merci de votre aide
A voir également:

3 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
22 mai 2008 à 13:21
Bonjour,
Ton erreur c'est que tu emploi un mot réservé comme variable
employé par ex: Txt au lieu de str
A+
0
mais c'est justement ce que je veux faire , je veux mettre ma formule dans une variable , je l'ai déja utilisé pour d'autres formules et ça marche, c'est une erreur de syntaxe.

merci de ton aide
0
Utilisateur anonyme > jeremac
22 mai 2008 à 14:06
Bonjour,

Même si tu as par hazard réussi à créer une formule avec le mot [ str ]

je suis tout à fait d'accord avec lermite, le mot [ str ] est un mot réservé
et qui plus est, est une fonction :

Voici le contenu de l'aide de Excel :
_________________________________________________________________________________________
Str, fonction


Renvoie une valeur de type Variant (String) représentant un nombre.

Syntaxe

Str(number)

L'argument number peut être toute valeur de type Long contenant une expression numérique valide.

Remarques

Lorsque des nombres sont convertis en chaînes, un espace à gauche est toujours réservé au signe de l'argument number. Si l'argument number est positif, la chaîne renvoyée contient un espace à gauche et le signe plus est implicite.

Utilisez la fonction Format pour convertir des valeurs numériques à formater en dates, heures ou valeurs monétaires, ou dans d'autres formats définis par l'utilisateur. Contrairement à la fonction Str, la fonction Format ne prévoit pas d'espace à gauche pour le signe de l'argument number.

Note La fonction Str ne reconnaît que le point (.) comme séparateur décimal valide. Lorsqu'il est nécessaire d'utiliser un autre séparateur décimal (par exemple, pour des applications internationales), utilisez la fonction CStr pour convertir un nombre en chaîne.
________________________________________________________________________________________

Lupin
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190 > jeremac
22 mai 2008 à 14:07
effectivement, j'avais pas fait assé attention.
Txt = "=ROUND(SUM( C " & LineNumber & ": E " & LineNumber & ")" & ";" & "0)"
fait la somme de la colonne C à E sur la ligne LineNumber
EDIT:
C'est pas encore bon..
RE.EDIT
L'erreur était un ; (point virgule) à la place de , (virgule)
0
Utilisateur anonyme
22 mai 2008 à 13:41
Bonjour,

1.) Le mot clé [ str ] est un mot réservé puisqu'il s'agit d'une fonction.

2.) Que représente c1 et c2 ?

Voici un exemple type de construction de formule selon ma méthode !

Sub CreerFormule()

    Dim Formule As String, LineNumber As Long
    Dim C1 As String, C2 As String

    C1 = "C"
    C2 = "D"
    LineNumber = 5

    Range("A1").Select
    Formule = "=ROUND(SUM(" & C1 & LineNumber & ":" & C2 & LineNumber & ")" & "," & "0)"
    ActiveCell.Value = Formule
    
    Range("A2").Select
    ActiveCell.Value = "=ROUND(" & "SUM(" & "C5:D5" & ")" & ",0)"

End Sub
'

Lupin
0
merci bcp , ça marche , une dernière question je voudrais ajouter le signe pourcentage apres ma formule sans que la formule ne l'interprète :
ex : mon résultat est 40 -> 40%
j'ai fait comme ça mais ça ne marche pas
wrksheet.Cells(LineNumber, Columnnumberaftertable + 1).Value = Formule & "%"

merci de votre aide
0
Utilisateur anonyme
22 mai 2008 à 15:28
re :

Tu ne peux pas jumeler ce symbole à la formule.

Il faut jumeler le symbole à la valeur de la cellule.

Je ne puis ici te donner toute la nuance entre la méthode :

wrksheet.Cells(LineNumber, Columnnumberaftertable + 1).FormulaR1C1 = Formule
et
wrksheet.Cells(LineNumber, Columnnumberaftertable + 1).Value = Formule

ce qu'il faut retenir est que la méthode [ .Value ] en lecture te donne la valeur
et en écriture peut recevoir une valeur ou une formule.

ceci dit, pour résoudre ton besoin, procède comme suit :

<code>
wrksheet.Cells(LineNumber, Columnnumberaftertable + 1).Value = Formule

wrksheet.Cells(LineNumber, Columnnumberaftertable + 1).Value = _
wrksheet.Cells(LineNumber, Columnnumberaftertable + 1).Value & "%"

<code>

Lupin
0