tri par mois

dianmelo

XLDnaute Junior
Bonjour le forum,
grâce a votre aide, j'utilise le fichier joint sans problème, le tri par mois sur la page accueil se fait automatiquement en ajoutant les semaines, mais quand la fin du mois est un mercredi sa fausse un peu mes calculs.

Voila ma question, serait il possible de faire la somme du mois en additionnant les jours et non les semaines ?

Merci de votre aide
Dianmelo
 

Pièces jointes

  • releve_heures.zip
    44.3 KB · Affichages: 71

dianmelo

XLDnaute Junior
Re : tri par mois

Bonjour,
Mon tableau récapitulatif par mois actuel fait la somme des semaines entières.
Par exemple, pour les repas du mois de Mars, je dois rajouter le lundi 31 mars, pour avril il faut rajouter les 28 29 et 30 avril etc.... car je reçois la facture du mois complet.
Cordialement,
Dianmelo
 

dianmelo

XLDnaute Junior
Re : tri par mois

merci de ton aide Denis132,
Tu as en effet trouvé la bonne formule qui répond à ma demande.
La difficulté que je rencontre maintenant, est de modifier le code vba pour que cette formule s'inscrive automatiquement lorsque je clique sur "ajouter semaine".
Cordialement
Dianmelo
 

Denis132

XLDnaute Impliqué
Re : tri par mois

Bonjour Dianmelo, le forum,

Malheureusement, je ne connais pas le vba, mais pourquoi ne pas faire un fichier contenant les 52 semaines? (il pourrait te servir dans les années futures) Est-ce-que ça serait trop lourd ou vois-tu un problème quelconque?

@+

Denis
 

Gael

XLDnaute Barbatruc
Re : tri par mois

Bonjour Dianmelo, bonjour à tous,

Pour ma part, je pense que c'est plus simple avec une macro. J'ai fait un essai ci-joint avec une macro qui pourrait être simplifiée si les tableaux étaient plus uniformes et les noms dans la feuille "Accueil" dans le même ordre.

Il faut lancer la macro "Calcul" pour réactualiser. la macro tient compte de toutes les feuilles semaines existantes.

Je n'ai pas tout testé, il y a peut-être des erreurs mais c'est le principe que je trouve le mieux adapté au problème.

@+

Gael
 

Pièces jointes

  • dianmelo_V1.zip
    44.6 KB · Affichages: 39
  • dianmelo_V1.zip
    44.6 KB · Affichages: 42
  • dianmelo_V1.zip
    44.6 KB · Affichages: 42

dianmelo

XLDnaute Junior
Re : tri par mois

Bon, j'ai testé ton fichier, il marche nickel mais je n'arrive pas à l'adapter au mien.
Je joint donc les 2 si vous voyez ce qui ne va pas dites le moi.
Voici l'original
D'avance merci, ça m'enlève une épine du pied
@+
Dianmelo
 

Pièces jointes

  • dianmelo_V1.zip
    46.2 KB · Affichages: 41
  • dianmelo_V1.zip
    46.2 KB · Affichages: 40
  • dianmelo_V1.zip
    46.2 KB · Affichages: 45

Gael

XLDnaute Barbatruc
Re : tri par mois

Bonsoir Dianmelo,

En fait tout marche très bien, j'ai seulement oublié de te préciser que la macro se sert de la première semaine rencontrée pour mémoriser les noms des différentes personnes.

Comme le but est de les comparer avec les noms de la feuille Accueil, il faut qu'ils soient strictement identiques.

Dans la semaine 8, j'ai supprimé le(s) espace(s) situés devant les noms.

Tu reprends la feuille semaine 8 et tu supprimes ces espaces inutiles et tout rentrera dans l'ordre.

@+

Gael
 

dianmelo

XLDnaute Junior
Re : tri par mois

Merci pour tout, ça fonctionne bien mais je ne comprends pas comment.
Le code est trop compliqué pour moi.
Merci encore.
Dianmelo

Code:
Private Sub Calcul()
Dim i As Integer, l As Integer, c As Integer, n As Integer, test As Integer
Dim noms(7) As String
Dim repas(7, 12) As Integer
Dim heures(7, 12) As Single

For i = 2 To Worksheets.Count
Sheets(i).Select 'sélection première semaine
l = 8 'première ligne
c = 8 'première colonne
n = 1 'premier nom

Do
'Si première feuille on mémorise le nom
If (i = 2) Then
    If c = 8 Then
    noms(n) = Cells(l - 4, 2)
    Else
    noms(n) = Cells(l - 3, c - 5)
    End If
End If

    For k = l To l + 4
        If Cells(k, c) > 0 Then
        test = Month(Cells(k, 1))
        repas(n, Month(Cells(k, 1))) = repas(n, Month(Cells(k, 1))) + Cells(k, c)
        End If
        
        If c = 8 Then H = Cells(k, c - 2) Else H = Cells(k, c - 1)
        heures(n, Month(Cells(k, 1))) = heures(n, Month(Cells(k, 1))) + H
        
    Next k
    n = n + 1
        If c > 7 Then
        l = l + 10
        c = 7
        Else
        c = 15
        End If
Loop Until l > 38

' Autres repas
noms(7) = "Autres repas"
    For k = 46 To 49
        If Cells(k, 16) > 0 Then
        test = Month(Cells(k, 13))
        repas(n - 1, Month(Cells(k, 13))) = repas(n - 1, Month(Cells(k, 13))) + Cells(k, 16)
        End If
    Next k

Next i 'Traitement semaine suivante

'Ecriture des résultats
Worksheets("Accueil").Select
For l = 3 To 8
    For i = 1 To 6 'recherche équivalence du nom
    If Cells(l, 1) = noms(i) Then
        For k = 1 To 12
        Cells(l, k + 1) = repas(i, k)
        Cells(l + 10, k + 1) = heures(i, k)
        Next k
    Exit For
    End If
    Next i
Next l

'autres repas
For k = 1 To 12
Cells(9, k + 1) = repas(7, k)
Cells(19, k + 1) = heures(7, k)
Next k
   
    
    
End Sub
 

Statistiques des forums

Discussions
312 021
Messages
2 084 663
Membres
102 628
dernier inscrit
alexduf971