Problème de Macro

sanigui

XLDnaute Nouveau
Bonjour,
Au boulot une macro dans fichier excel ne fonctionne plus.
Elle a pour but de caculer des stats sur une année. Le problème est qu'elle a été crée par une autre personne qui n'est plus dans la société et moi c'est pas mon truc le vba (plus côté réseau que dev).
La macro demande l'année et le mois afin de faire ses calculs mais le hic c'est qu'elle s'arrête au mois de novembre.
J'ai beau regarder en mode pas a pas, je ne trouve rien.
vous peut être vous trouverez quelque chose.
merci

voila la partie de la macro qui ne fonctionne pas :

' Remplissage du tableau de la feuille de calcul avec
' les entetes

' ------------------------------------------------------------
Function CreateSheet(dateMin As Date, dateMax As Date, isMonth As Boolean) As Integer
' Construction du tableau en fonction des dates trouvees
Dim indMin, indMax, anneeMin, anneeMax
Set Destination = Sheets(2)
anneeMin = Year(dateMin)
anneeMax = Year(dateMax)
indMin = NOSEM(Format(dateMin, "dd/mm/yy"))
indMax = NOSEM(Format(dateMax, "dd/mm/yy")) + 1
maxIntervalVal = 53
Destination.Cells(3, 2) = "Semaine"
If (isMonth = True) Then
indMin = month(dateMin)
indMax = month(dateMax) + 1
maxIntervalVal = 12
Destination.Cells(3, 2) = "Mois"
End If

If (indMax = maxIntervalVal) Then
indMax = 1
anneeMax = anneeMax + 1
End If
curAnnee = anneeMin
cur = indMin
IndexLine = 4
Do
Destination.Cells(IndexLine, 1) = curAnnee
Destination.Cells(IndexLine, 2) = cur
For cptRow = 3 To 59
Destination.Cells(IndexLine, cptRow) = 0
Next
cur = cur + 1
If (cur = maxIntervalVal) Then
cur = 1
curAnnee = curAnnee + 1
End If
IndexLine = IndexLine + 1
Loop While curAnnee <> anneeMax Or cur <> indMax
CreateSheet = 4
End Function
 

Gael

XLDnaute Barbatruc
Re : Problème de Macro

Bonsoir Sanigui,

Une petite correction dans le code, mais je ne comprends pas comment la macro fonctionnait avant puisque le mois 12 ne pouvait pas être créé.:confused:

Code:
cur = cur + 1
If (cur [COLOR=red]>[/COLOR] Maxintervalval) Then
cur = 1
curannee = curannee + 1
End If

Tu mets donc un ">" au lieu de égal pour que la variable "Cur" ne repasse à 1 (Janvier) que si elle est supérieure à 12.

Tu peux aussi changer la valeur de Maxintervalval qui est initialisée à 12 en la passant à 13. Ceci parceque la même variable sert dans le calcul par semaine et est initialisée à 53. Il faudrait donc vérifier le calcul par semaine, ce que je n'ai pas fait car je n'ai pas la fonction NOSEM.

@+

Gael
 

sanigui

XLDnaute Nouveau
Re : Problème de Macro

Ok merci cela fonctionne.
sinon voici la fonction NOSEM


' Calcul du Numero de semaine ISO tel qu utilise en France
' ---------------------------------------------------------
Function NOSEM(D As Date) As Long
D = Int(D)
NOSEM = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NOSEM = ((D - NOSEM - 3 + (Weekday(NOSEM) + 1) Mod 7)) \ 7 + 1
End Function
 

sanigui

XLDnaute Nouveau
Re : Problème de Macro

J'ai fait un copié coller du fichier mais la macro ne fonctionne plus (????).
Le débogueur s'arrete sur la ligne (toujours sur la meme fonction)

Destination.Cells(IndexLine, cptRow) = 0
Next
cur = cur + 1
If (cur > maxIntervalVal) Then
cur = 1
curAnnee = curAnnee + 1
End If
IndexLine = IndexLine + 1
Loop While curAnnee <> anneeMax Or cur <> indMax


et le nombre d'année créé ne s'arrête plus (en 30 seconde j'arrive à l'année 2150)
je ne comprend pas pourquoi cela la boucle se crée alors que cela fonctionne sur un autre fichier excel.

Je ne sais pas si ce sont les données qui ne sont pas dans la "forme idéal" mais la macro fonctionne aléatoirement en fonction de ces données.
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
495

Membres actuellement en ligne

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2