Calcul du total d'une feuille par un code VBA

Résolu/Fermé
Paulinsasso Messages postés 2 Date d'inscription vendredi 11 avril 2014 Statut Membre Dernière intervention 17 avril 2014 - 14 avril 2014 à 18:07
platypus69 Messages postés 108 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 11 février 2015 - 24 avril 2014 à 09:35
Bonjour,

J'ai réussi à écrire un code pour répartir dans différentes feuilles d'un classeur les dépenses effectuées pour chaque poste budgétaire à partir d'une feuille servant de base de données.
Je veux ajouter le code qui permet de calculer le montant total de dépenses pour chaque poste mais je n'y arrive pas . Est ce que quelqu'un peut m'aider?

5 réponses

platypus69 Messages postés 108 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 11 février 2015 7
17 avril 2014 à 12:57
Bonjour,

pour commencer pourrais tu nous fournir le fichier pour que l'on se rende compte de ta demande. Sans cela c'est un peu difficile.
0
Paulinsasso Messages postés 2 Date d'inscription vendredi 11 avril 2014 Statut Membre Dernière intervention 17 avril 2014
17 avril 2014 à 17:22
Bonjour,

il s'agit d'un fichier de dépenses et d'investissement d'une Institution d'assurance maladie donc confidentiel. Vous voyez le mal que je pourrai avoir en vous envoyant ce fichier sensible. Je suis un peu embarrassé.

le fichier contient des éléments de dépenses pour tous les postes budgetaires.
0
platypus69 Messages postés 108 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 11 février 2015 7
22 avril 2014 à 15:27
pourrais tu à ce moment, nous donner la partie de code que tu as écrite, pour voir quels sont les données labdas. j'ai une petite idée sur la façon de faire mais je préfère être sûr.
Tu n'utilises que Excel?
0
Oui je n'utilise que Excel pour le moment.

Voici le code

Public Sub RepartitionparPostBud()
'Crée une nouvelle feuille de calcul pour chaque poste budgétaire et copie les consommations dans la feuille créée
Dim numligne, numlignePostBud, numFeuil As Integer
Dim FeuilPostBud As Worksheet
Dim nomPostBud As String

numligne = 2
numlignePostBud = 4
nomPostBud = ""

Set Feuildonnees = ThisWorkbook.Worksheets("Conso Budget")

Do
If nomPostBud <> Feuildonnees.Cells(numligne, 1).Value _
And Feuildonnees.Cells(numligne, 1).Value <> "Fin" Then

'créer une nouvelle feuille

Set FeuilPostBud = ThisWorkbook.Worksheets.Add
'Nommer la feuille créée
FeuilPostBud.Name = Left(Feuildonnees.Cells(numligne, 1).Value, 28) + "_" + CStr(FeuilPostBud.Index)

If Len(Feuildonnees.Cells(numligne, 1).Value) > 31 Then

FeuilPostBud.Name = Left(Feuildonnees.Cells(numligne, 1).Value, 28) + "_" + CStr(FeuilPostBud.Index)

Else: FeuilPostBud.Name = Feuildonnees.Cells(numligne, 1).Value
End If

'Déplacer la feuille créée après les feuilles existentes
FeuilPostBud.Move after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)

'pour comparer à la ligne suivante
nomPostBud = Feuildonnees.Cells(numligne, 1)
numlignePostBud = 4
'Mettre un titre au tableau
FeuilPostBud.Cells(2, 3).Value = FeuilPostBud.Name
'Mettre les titres des colonnes
FeuilPostBud.Range(FeuilPostBud.Cells(3, 1), FeuilPostBud.Cells(3, 13)).Value = Feuildonnees.Range(Feuildonnees.Cells(1, 1), Feuildonnees.Cells(1, 13)).Value

End If

'Inscrire les lignes copiées ds la feuille

FeuilPostBud.Range(FeuilPostBud.Cells(numlignePostBud, 1), FeuilPostBud.Cells(numlignePostBud, 13)).Value = Feuildonnees.Range(Feuildonnees.Cells(numligne, 1), Feuildonnees.Cells(numligne, 13)).Value

numligne = numligne + 1

numlignePostBud = numlignePostBud + 1




Loop Until Feuildonnees.Cells(numligne, 1).Value = "Fin"



MsgBox "L'inscription des lignes copiées a bien réussi"



End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
platypus69 Messages postés 108 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 11 février 2015 7
24 avril 2014 à 09:35
salut,

je répond en coût de vent, mais pourquoi ne pas faire comme pour ta variable numligne qui s'incrémente à chaque boucle.


'création d'une variable total
Dim totalBud AS Long

'Inscrire les lignes copiées ds la feuille

FeuilPostBud.Range(FeuilPostBud.Cells(numlignePostBud, 1), FeuilPostBud.Cells(numlignePostBud, 13)).Value = Feuildonnees.Range(Feuildonnees.Cells(numligne, 1), Feuildonnees.Cells(numligne, 13)).Value

'ajoute la somme de chaque ligne
totalBud = totalBud + Feuildonnees.Range(Feuildonnees.Cells(numligne, 1), Feuildonnees.Cells(numligne, 13)).Value

numligne = numligne + 1

numlignePostBud = numlignePostBud + 1


voila ce que ca pourrait donnée, par contre si tu as une feuille pour chaque budget, il va falloir réinitialiser total a 0
0