2010-09-17 7 views
1

Alors aujourd'hui, a a reçu une feuille de calcul Excel contenant plus de 20 000 cellules. J'ai dû les séparer par le nom (jamais 14 lignes commence un nouveau client), et totalise les colonnes de prix. Alors, je l'ai écrit:Utilisation d'une fonction Excel dans la question VB

Sub NewSpace() 
' 
' NewSpace Macro 
' 
' Keyboard Shortcut: Ctrl+p 
' 
     'create the count variable, initilize it to 17 
     Dim count As Integer 
     count = 17 

    While count <= 30003 

      'add first row 
      Rows(count & ":" & count).Select 
      Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 

      'add second row 
      Rows(count & ":" & count).Select 
      Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 

      'Select cell A in the first created row, write "Total", and format properly 
      Range("A" & count).Select 
      ActiveCell.FormulaR1C1 = "Total" 
      With ActiveCell.Characters(Start:=1, Length:=5).Font 
        .Name = "Calibri" 
        .FontStyle = "Bold" 
        .Size = 11 
        .Strikethrough = False 
        .Superscript = False 
        .Subscript = False 
        .OutlineFont = False 
        .Shadow = False 
        .Underline = xlUnderlineStyleNone 
        .ThemeColor = xlThemeColorLight1 
        .TintAndShade = 0 
        .ThemeFont = xlThemeFontMinor 
      End With 

      'Select cell H in the first created row, sum up the values 
      Range("H" & count).Select 
      ActiveCell.FormulaR1C1 = "=sum(H" & (count - 15) & ":H" & (count - 1) & ")" 
      With ActiveCell.Characters(Start:=1, Length:=5).Font 
        .Name = "Calibri" 
        .FontStyle = "Bold" 
        .Size = 11 
        .Strikethrough = False 
        .Superscript = False 
        .Subscript = False 
        .OutlineFont = False 
        .Shadow = False 
        .Underline = xlUnderlineStyleNone 
        .ThemeColor = xlThemeColorLight1 
        .TintAndShade = 0 
        .ThemeFont = xlThemeFontMinor 
      End With 


    'increment the counter by 16, start again 
    count = count + 16 

    Wend 
End Sub 

Cependant, je continue à obtenir une erreur de #NOM sur cette ligne: ActiveCell.FormulaR1C1 = "= somme (H" & (compte - 15) & ": H" & (count - 1) & ")"

Tout me semble bien, et honnêtement, je ne suis pas sûr de ce que je dois changer.

EDIT: J'ai aussi oublié de mentionner, dans l'erreur #NAME, la formule montre correcte, mais il ajoute: 'à la fonction, comme suit: = SOMME (' H __ ':' H__ ')

Répondre

3

Essayez ActiveCell.Formula au lieu de ActiveCell.FormulaR1C1 ...

.FormulaR1C1 est pour un style différent des cellules d'adressage

ActiveCell.Formula = "=A1" 

et

ActiveCell.FormulaR1C1 = "=R1C1" 

fait référence à la même cellule.

+0

Cela a fonctionné exactement comme il se doit. Merci pour l'aide Bart. – AgainstClint