[VBA EXCEL] aide constuction formule

Résolu
jeremac -  
 Utilisateur anonyme -
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

3 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Ton erreur c'est que tu emploi un mot réservé comme variable
    employé par ex: Txt au lieu de str
    A+
    0
    1. jeremac
       
      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
      1. Utilisateur anonyme > jeremac
         
        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
      2. lermite222 Messages postés 9042 Statut Contributeur 1 199 > jeremac
         
        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
  2. Utilisateur anonyme
     
    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
    1. jeremac
       
      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
  3. Utilisateur anonyme
     
    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