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

241forum-excel.xlsx (28.17 Ko)

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 Sub

Extra 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 Sub

Merci 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

Rechercher des sujets similaires à "modification macro"