[VBA EXCEL] aide constuction formule

Résolu
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. 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
    1. 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
      1. 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
    2. Contributeur
      Bonjour,
      Ton erreur c'est que tu emploi un mot réservé comme variable
      employé par ex: Txt au lieu de str
      A+
      1. 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
      2. @jeremacBonjour,

        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
      3. Contributeur
        @jeremaceffectivement, 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)