XL 2010 Macro pour comptage

zozo

XLDnaute Occasionnel
Bien le bonjour à tous,

Mon programme consiste à saisir les permis de travail attribués au niveau de la plateforme sur la feuille « CREATION PERMIS ».
L
’enregistrement s’effectue sur la feuille « PERMISDATA ».

A partir de la feuille « STATISTIQUE », Je dois imprimer un rapport hebdomadaire chaque semaine.
Ce rapport me ressort uniquement le nombre de permis à chaud (colonne i-feuille PERMISDATA) par ZONE, dont la date d’établissement est concernée par celles déterminées sur la feuille « STATISTIQUE ».

La macro qui traite l’enregistrement fonctionne à 100%,.
Malheureusement, celle du rapport, s’exécute sans erreur, mais ne me donne aucun résultat sur la feuille « STATIS_HEBDO », et m’affiche toujours un zéro.

Sur sur la feuille « STATIS_HEBDO », j'exploite uniquement les colonnes "D10:d12", le reste ne me concerne pas.

Je sollicite votre aide pour que ma macro tourne convenablement et me donne le nombre de permis par zone.

Merci pour toute intervention de votre part.
 

Pièces jointes

  • SUIVI.xlsm
    138.3 KB · Affichages: 20

vgendron

XLDnaute Barbatruc
Bonjour

il faudrait etre un peu plus explicit dans ta demande.
De quelle macro parles tu exactement (son nom exact) dans quel module? tu as presque 30 modules.. presque tous vide..
maintenant. si tu parles de la macro Permisrecording()
cette instruction
VB:
With Sheets("PermisData")
Set Trouve = .Range("A:A").Find(Sheets("CREATION PERMIS").Range("J10"), lookat:=xlWhole)

cherche la valeur qui est en I10 de la feuille "Creation Permis" ==> dans l'exemple 96
et cette valeur est cherchée dans la colonne A de ta feuille "Permis Data"
le 96 n'apparait pas.. donc.. trouve reste à nothing..

à priori, ce n'est pas ce que tu veux.. mais la. il faut expliquer ce que la macro est censée trouver.. et comment
 

zozo

XLDnaute Occasionnel
Merci pour ta réponse, concenant la macro qui me pose problème est <STATISTIQUES>, en appuyant sur le bouton <Filtrer>, elle ne me permet pas d'avoir le nombre de permis à chaud par zone et me donne 0 comme résultat.
La macro <permisrecording> fonctionne à 100%.
 

vgendron

XLDnaute Barbatruc
Dans ta macro. cette ligne pose pb
VB:
 If date1 >= Cells(ligne2, 7).Value And date2 <= Cells(ligne2, 7).Value Then
comme tu es dans un with.. il te manque les points.. sinon.. ca prend les valeurs de la feuille active
à remplacer par
VB:
 If date1 >= .Cells(ligne2, 7).Value And date2 <= .Cells(ligne2, 7).Value Then

mais du coup...pourquoi t'embeter à mettre les dates de filtre dans des variables si tu ne les utilises pas ??

et les .nbpz.value = nbpz+ .cells() ca ne va pas non plus

VB:
Sub Statistiques()
'
' Statistiques Macro
'
'
' Bilan1 Macro
'
ligne2 = 3
nbr = 0
nbpz1 = 0
nbpz2 = 0
nbpz3 = 0
nbpz12 = 0
nbpz123 = 0
nbpz23 = 0
nbpz13 = 0
With Worksheets("STATISTIQUE")
   date1 = .Cells(14, 11).Value
   date2 = .Cells(14, 20).Value
End With
With Worksheets("PERMISDATA")
   nbr = .Range("A" & .Rows.Count).End(xlUp).Row
   For ligne2 = 3 To nbr
      PDebut = .Cells(ligne2, 7).Value
      PFin = .Cells(ligne2, 8).Value
      NPermis = .Cells(ligne2, 1).Value
      Zone = .Cells(ligne2, 6).Value
      If date1 >= PDebut And date2 <= PFin Then
         Select Case UCase(Zone)
            Case "Z1"
               nbpz1 = nbpz1 + .Cells(ligne2, 9).Value
               With Worksheets("STATIS_HEBDO")
                    .Cells(12, 4).Value = nbpz1
               End With
            Case "Z2"
               nbpz2 = nbpz2 + .Cells(ligne2, 9).Value
               With Worksheets("STATIS_HEBDO")
                   .Cells(11, 4).Value = nbpz2
               End With
                           
            Case "Z3"
               nbpz3 = nbpz3 + .Cells(ligne2, 9).Value
               With Worksheets("STATIS_HEBDO")
                  .Cells(10, 4).Value = nbpz3
               End With
            Case "Z1-Z2"
               nbpz1 = nbpz1 + .Cells(ligne2, 9).Value
               nbpz2 = nbpz2 + .Cells(ligne2, 9).Value
               With Worksheets("STATIS_HEBDO")
                  .Cells(12, 4).Value = nbpz1
                  .Cells(11, 4).Value = nbpz2
               End With
            Case "Z1-Z2-Z3"
               nbpz1 = nbpz1 + .Cells(ligne2, 9).Value
               nbpz2 = nbpz2 + .Cells(ligne2, 9).Value
               nbpz3 = nbpz3 + .Cells(ligne2, 9).Value
               With Worksheets("STATIS_HEBDO")
                  .Cells(12, 4).Value = nbpz1
                  .Cells(11, 4).Value = nbpz2
                  .Cells(10, 4).Value = nbpz3
               End With
            Case "Z2-Z3"
               nbpz2 = nbpz2 + .Cells(ligne2, 9).Value
               nbpz3 = nbpz3 + .Cells(ligne2, 9).Value
               With Worksheets("STATIS_HEBDO")
                  .Cells(11, 4).Value = nbpz2
                  .Cells(10, 4).Value = nbpz3
               End With
            Case "Z1-Z3"
               nbpz1 = nbpz1 + .Cells(ligne2, 9).Value
               nbpz3 = nbpz3 + .Cells(ligne2, 9).Value
               With Worksheets("STATIS_HEBDO")
                  .Cells(12, 4).Value = nbpz1
                  .Cells(10, 4).Value = nbpz3
               End With
         End Select
      End If
    Next ligne2
End With
MsgBox "Statistiques du " & date1 & " au " & date2 & bCrLf & " réalisées Avec Succès"
End Sub
 

zozo

XLDnaute Occasionnel
Merci
Dans ta macro. cette ligne pose pb
VB:
 If date1 >= Cells(ligne2, 7).Value And date2 <= Cells(ligne2, 7).Value Then
comme tu es dans un with.. il te manque les points.. sinon.. ca prend les valeurs de la feuille active
à remplacer par
VB:
 If date1 >= .Cells(ligne2, 7).Value And date2 <= .Cells(ligne2, 7).Value Then

mais du coup...pourquoi t'embeter à mettre les dates de filtre dans des variables si tu ne les utilises pas ??

et les .nbpz.value = nbpz+ .cells() ca ne va pas non plus

VB:
Sub Statistiques()
'
' Statistiques Macro
'
'
' Bilan1 Macro
'
ligne2 = 3
nbr = 0
nbpz1 = 0
nbpz2 = 0
nbpz3 = 0
nbpz12 = 0
nbpz123 = 0
nbpz23 = 0
nbpz13 = 0
With Worksheets("STATISTIQUE")
   date1 = .Cells(14, 11).Value
   date2 = .Cells(14, 20).Value
End With
With Worksheets("PERMISDATA")
   nbr = .Range("A" & .Rows.Count).End(xlUp).Row
   For ligne2 = 3 To nbr
      PDebut = .Cells(ligne2, 7).Value
      PFin = .Cells(ligne2, 8).Value
      NPermis = .Cells(ligne2, 1).Value
      Zone = .Cells(ligne2, 6).Value
      If date1 >= PDebut And date2 <= PFin Then
         Select Case UCase(Zone)
            Case "Z1"
               nbpz1 = nbpz1 + .Cells(ligne2, 9).Value
               With Worksheets("STATIS_HEBDO")
                    .Cells(12, 4).Value = nbpz1
               End With
            Case "Z2"
               nbpz2 = nbpz2 + .Cells(ligne2, 9).Value
               With Worksheets("STATIS_HEBDO")
                   .Cells(11, 4).Value = nbpz2
               End With
                          
            Case "Z3"
               nbpz3 = nbpz3 + .Cells(ligne2, 9).Value
               With Worksheets("STATIS_HEBDO")
                  .Cells(10, 4).Value = nbpz3
               End With
            Case "Z1-Z2"
               nbpz1 = nbpz1 + .Cells(ligne2, 9).Value
               nbpz2 = nbpz2 + .Cells(ligne2, 9).Value
               With Worksheets("STATIS_HEBDO")
                  .Cells(12, 4).Value = nbpz1
                  .Cells(11, 4).Value = nbpz2
               End With
            Case "Z1-Z2-Z3"
               nbpz1 = nbpz1 + .Cells(ligne2, 9).Value
               nbpz2 = nbpz2 + .Cells(ligne2, 9).Value
               nbpz3 = nbpz3 + .Cells(ligne2, 9).Value
               With Worksheets("STATIS_HEBDO")
                  .Cells(12, 4).Value = nbpz1
                  .Cells(11, 4).Value = nbpz2
                  .Cells(10, 4).Value = nbpz3
               End With
            Case "Z2-Z3"
               nbpz2 = nbpz2 + .Cells(ligne2, 9).Value
               nbpz3 = nbpz3 + .Cells(ligne2, 9).Value
               With Worksheets("STATIS_HEBDO")
                  .Cells(11, 4).Value = nbpz2
                  .Cells(10, 4).Value = nbpz3
               End With
            Case "Z1-Z3"
               nbpz1 = nbpz1 + .Cells(ligne2, 9).Value
               nbpz3 = nbpz3 + .Cells(ligne2, 9).Value
               With Worksheets("STATIS_HEBDO")
                  .Cells(12, 4).Value = nbpz1
                  .Cells(10, 4).Value = nbpz3
               End With
         End Select
      End If
    Next ligne2
End With
MsgBox "Statistiques du " & date1 & " au " & date2 & bCrLf & " réalisées Avec Succès"
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
315 138
Messages
2 116 684
Membres
112 835
dernier inscrit
collallapsus