VBA : Pb pour inclure des variables dans des Range, Cells, Sum

  • Initiateur de la discussion Initiateur de la discussion richardM
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

richardM

XLDnaute Nouveau
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
 
Re, Bonsoir Dranreb

[richardM] (en attendant un petit fichier...ou pas 😉)
Comme jé'tais dans VBE, je publie ce petit test
VB:
Sub oPetitTest()
Dim Nblig As Long 'Nombre de ligne du Tableau
Dim Nbcol As Long 'Nombre de colonnes du tableau
'Création d'un tableau de test
[A1:H10] = "=INT(2+ROW()*COLUMN()-1/123456789)"
Nbcol = Cells(1, Columns.Count).End(xlToLeft).Column
Nblig = Cells(Rows.Count, 2).End(xlUp).Row
Cells(Nblig + 1, Nbcol) = Application.Sum(Range("H1:H" & Nblig))
Cells(Nblig + 1, Nbcol - 1) = "TOTAL"
End Sub
 
Bonsoir @richardM et bienvenue sur XLD,

Dans le fichier joint, deux exemples de macros qui font la somme de la colonne A et de la colonne B.

Les codes sont dans module1.

N'oubliez la touche d'aide <F1> quand vous codez en VBA (placer vous sur le mot et appuyez sur la touche F1)

nota: un fichier est fourni . Ce sera votre cadeau de bienvenue 😛😀

edit: bonsoir à @Dranreb 😉 et à @Staple1600 😉
 

Pièces jointes

Dernière édition:
Comme ça, ça marche :
VB:
Range(Pos).Value = Application.WorksheetFunction.Sum(Range(Posa & ":" & Posb))
Mais c'est bien compliqué tout ça, alors que ceci le fait tout aussi bien :
VB:
With ActiveSheet.[H100000].End(xlUp)(2)
   .FormulaR1C1 = "=SUM(R8C:R[-1]C)": .Value = .Value: End With
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
503
Retour