Calcul du total d'une feuille par un code VBA

Résolu
Paulinsasso Messages postés 2 Statut Membre -  
platypus69 Messages postés 122 Statut Membre -
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

  1. platypus69 Messages postés 122 Statut Membre 7
     
    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
  2. Paulinsasso Messages postés 2 Statut Membre
     
    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
  3. platypus69 Messages postés 122 Statut Membre 7
     
    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
  4. Paulinsasso
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. platypus69 Messages postés 122 Statut Membre 7
     
    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