Bonjour,
Je débute avec VBA EXcel et sur le forum. J'essaie de faire une macro qui me permettrait de faire la somme d'une colonne d'un tableau alors que je ne connais pas par avance son nombre de lignes. Je crée donc des variables pour connaitre le positionnement de mes cellules à calculer ou le nombre de lignes. Dans les formule de calcul, quand j'inclue ces variables cela ne fonctionne pas. Par exemple:
Range(Pos).Value = Application.WorksheetFunction.Sum(Range("Posa osb")) 'cette instruction ne fonctionne pas avec les variables
' Range(Pos).Value = Application.WorksheetFunction.Sum(Range("H8:H10")) 'cette instruction fonctionne sans les variables mais avec les valeurs retournées par les variables
J'ai les mêmes difficultés avec Cells, Sum..
Cela doit être certainement simple, un mécanisme que je ne comprends pas.
Merci de votre aide,
Ci dessous le code de ma macro:
Sub Total_tableau()
'Macro pour caluler la somme d'une colonne sans connaitre la longueur du tableau mais en connaissant la premiere cellule D7..
Dim Nblig As Integer 'Nombre de ligne du Tableau
Dim Nbcol As Integer 'Nombre de colonnes du tableau
Dim Pos As Variant 'Position dans la feuille
Dim Posa As Variant 'Position sur la premiere ligne à compter
Dim Posb As Variant 'Position sur la derniere ligne à compter
'Calcul du nombre de lignes et de colonnes dans le tableau
Pos = "D7"
Posa = "A1"
Posb = "B1"
Range(Pos).Select 'positionnement de Départ connu
Nblig = ActiveSheet.UsedRange.Rows.Count 'Calcul du nombre de ligne dans le tableau
Nbcol = ActiveSheet.UsedRange.Columns.Count 'calcul le nombre de colonnes
'calcul des variables de positionnement
ActiveCell.Offset(Nblig, Nbcol - 1).Select
Pos = Selection.Address(0, 0)
ActiveCell.Offset(-(Nblig - 1), 0).Select
Posa = Selection.Address(0, 0)
ActiveCell.Offset((Nblig - 2), 0).Select
Posb = Selection.Address(0, 0)
' calcul de la somme de la colonne
Range(Pos).Select
Range(Pos).Value = Application.WorksheetFunction.Sum(Range("Posa osb")) 'cette instruction ne fonctionne pas avec les variables
' Range(Pos).Value = Application.WorksheetFunction.Sum(Range("H8:H10")) 'cette instruction fonctionne sans les variables mais avec les valeurs retournees par les variables
' OU
' ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)" 'Cette instruction fonctionne
' ActiveCell.FormulaR1C1 = "=SUM(R[-Nblig-1]C:R[-1]C)" 'Cette instruction ne fonctionne pas une fois incluse la variable
End Sub
Je débute avec VBA EXcel et sur le forum. J'essaie de faire une macro qui me permettrait de faire la somme d'une colonne d'un tableau alors que je ne connais pas par avance son nombre de lignes. Je crée donc des variables pour connaitre le positionnement de mes cellules à calculer ou le nombre de lignes. Dans les formule de calcul, quand j'inclue ces variables cela ne fonctionne pas. Par exemple:
Range(Pos).Value = Application.WorksheetFunction.Sum(Range("Posa
' Range(Pos).Value = Application.WorksheetFunction.Sum(Range("H8:H10")) 'cette instruction fonctionne sans les variables mais avec les valeurs retournées par les variables
J'ai les mêmes difficultés avec Cells, Sum..
Cela doit être certainement simple, un mécanisme que je ne comprends pas.
Merci de votre aide,
Ci dessous le code de ma macro:
Sub Total_tableau()
'Macro pour caluler la somme d'une colonne sans connaitre la longueur du tableau mais en connaissant la premiere cellule D7..
Dim Nblig As Integer 'Nombre de ligne du Tableau
Dim Nbcol As Integer 'Nombre de colonnes du tableau
Dim Pos As Variant 'Position dans la feuille
Dim Posa As Variant 'Position sur la premiere ligne à compter
Dim Posb As Variant 'Position sur la derniere ligne à compter
'Calcul du nombre de lignes et de colonnes dans le tableau
Pos = "D7"
Posa = "A1"
Posb = "B1"
Range(Pos).Select 'positionnement de Départ connu
Nblig = ActiveSheet.UsedRange.Rows.Count 'Calcul du nombre de ligne dans le tableau
Nbcol = ActiveSheet.UsedRange.Columns.Count 'calcul le nombre de colonnes
'calcul des variables de positionnement
ActiveCell.Offset(Nblig, Nbcol - 1).Select
Pos = Selection.Address(0, 0)
ActiveCell.Offset(-(Nblig - 1), 0).Select
Posa = Selection.Address(0, 0)
ActiveCell.Offset((Nblig - 2), 0).Select
Posb = Selection.Address(0, 0)
' calcul de la somme de la colonne
Range(Pos).Select
Range(Pos).Value = Application.WorksheetFunction.Sum(Range("Posa
' Range(Pos).Value = Application.WorksheetFunction.Sum(Range("H8:H10")) 'cette instruction fonctionne sans les variables mais avec les valeurs retournees par les variables
' OU
' ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)" 'Cette instruction fonctionne
' ActiveCell.FormulaR1C1 = "=SUM(R[-Nblig-1]C:R[-1]C)" 'Cette instruction ne fonctionne pas une fois incluse la variable
End Sub