Modification d'une macro
Bonsoir,
j'aimerai modifier cette macro pour qu'elle me calcule uniquement les sommes entre le 15 avril et le 31 août.
Je change de 1 en 365 en 105 a 243
Je change le 366 en 139 et le 365 en 138 mais les résultats ne sont pas concluants
Quelqu'un pourrait-il m'aider? Voici en annexe un exemple de mon fichier (les grilles vont jusqu'à 370 et les dates jusque 2012 dans le fichier initial)
Merci d'avance
Sub genformule()
' b =début de période pour l'instruction sum
b = 2
' l numéro de ligne
l = 2
' pas de mise à jour de l'écran pendant la durée de la macro
Application.ScreenUpdating = False
' oldcalc paramètres du recalcul des formules
oldcalc = Application.Calculation
' pas de recalcul pendant la durée de la macro
Application.Calculation = xlCalculationManual
' boucle pour 370 grille
For i = 1 To 370
Cells(l, "G") = i
' boucle pour 25 années
For j = 1988 To 2012
Cells(l, "H") = j
' détermination du nombre de jours pour l'année
If j Mod 4 = 0 Then nj = 366 Else nj = 365
' insertion de la formule sum pour une année
f = "=sum(C" & b & ":C" & b + nj - 1 & ")"
Cells(i, j-1983).Formula = f
l = l + 1 : ' on passe à la ligne suivante
b = b + nj ' on adapte le début de la période pour l'instruction sum
Next j
Next i
Application.ScreenUpdating = True
Application.Calculation = oldcalc
End Sub
Bonsoir,
adapte le code de cette façon
Sub genformule()
' b =début de période pour l'instruction sum
b = 2
' l numéro de ligne
l = 2
' pas de mise à jour de l'écran pendant la durée de la macro
Application.ScreenUpdating = False
' oldcalc paramètres du recalcul des formules
oldcalc = Application.Calculation
' pas de recalcul pendant la durée de la macro
Application.Calculation = xlCalculationManual
' boucle pour 370 grille
For i = 1 To 370
Cells(l, "G") = i
' boucle pour 25 années
For j = 1988 To 2012
Cells(l, "H") = j
' détermination du nombre de jours pour l'année
select case j Mod 4
case 0
nj = 366
bs=1
bsn=0
case 1,2
nj = 365
bs=0
bsn=0
case 3
nj=365
bs=0
bsn=1
end select
' insertion de la formule sum pour l'intervalle allant du 15-10 au 31-3 de l'année suivante
f = "=sum(C" & b+288+bs & ":C" & b + 455+bs+bsn & ")"
if j<>2012 then Cells(i, j-1983).Formula = f
l = l + 1 : ' on passe à la ligne suivante
b = b + nj ' on adapte le début de la période pour l'instruction sum
Next j
Next i
Application.ScreenUpdating = True
Application.Calculation = oldcalc
End SubExtra acide sulfurique
Un grand merci et bonne journée!
Bonjour,
J'aurai peut-être une autre question à te soumettre
En effet sur base de cette même base de données, serait-il possible de modifier la macro pour qu'elle me calcule les sommes pour les dates allant du 15/10 au 31/03 de l'année suivante?
Il faudrait donc coupler les années par 2 et changer le type de boucle?
Peux-tu m'aider?
Merci d'avance pour ta disponibilité
Bonjour,
adapte le code de cette façon,
ttu devrais être capable de le faire par toi-même maintenant
Sub genformule()
' b =début de période pour l'instruction sum
b = 2
' l numéro de ligne
l = 2
' pas de mise à jour de l'écran pendant la durée de la macro
Application.ScreenUpdating = False
' oldcalc paramètres du recalcul des formules
oldcalc = Application.Calculation
' pas de recalcul pendant la durée de la macro
Application.Calculation = xlCalculationManual
' boucle pour 370 grille
For i = 1 To 370
Cells(l, "G") = i
' boucle pour 25 années
For j = 1988 To 2012
Cells(l, "H") = j
' détermination du nombre de jours pour l'année
select case j Mod 4
case 0
nj = 366
' bs année en cours bissextile
bs=1
' bsn année suivante bissextile
bsn=0
case 1,2
nj = 365
bs=0
bsn=0
case 3
nj=365
bs=0
bsn=1
end select
' insertion de la formule sum pour l'intervalle allant du 15-10 au 31-3 de l'année suivante
f = "=sum(C" & b+288+bs & ":C" & b + 455+bs+bsn & ")"
if j<>2012 then Cells(i, j-1983).Formula = f
l = l + 1 : ' on passe à la ligne suivante
b = b + nj ' on adapte le début de la période pour l'instruction sum
Next j
Next i
Application.ScreenUpdating = True
Application.Calculation = oldcalc
End SubMerci beaucoup!
Je vais tâcher de les faire par moi-même mais la faute n'est pas d'essayer, je n'ai aucune formation en macro...
Cordialement