Re : somme des valeurs d'une colonne dynamique
Hello!
J'arrive au bout là. Le programme marche, mais j'ai remarqué, que parfois, il y a une ligne de la formule qui cause problème. Avez-vous une idée qu'est-ce qu'il se passe et comment il faudrait l'améliorer ?Voici le code entier (En rouge la ligne qui cause parfois problème!) :
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'Addition des points totaux par élève (colonne G de la feuille Résulat)
Worksheets("Résultat").Range("G" & 7) = "=Sum(H7:" & ConversionXC(7 + Worksheets("Menu").Range("C17")) & "7)"
'Nombre de lignes selon le nombre d'élèves
With Worksheets("Résultat")
.Rows("7:507").EntireRow.Delete 'pour max 500 élèves
For ix = 2 To Worksheets("Menu").Range("C15").Value
.Range("6:6").Copy _
Destination:=.Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1)
.Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1) = ix
Next ix
.Range(.Cells(3, 7), .Cells(506, 55)).Clear 'pour max 500 élèves et max 50 exercices
For ix = 2 To Worksheets("Menu").Range("C17").Value
.Range("F3:F" & .Cells(.Rows.Count, 1).End(xlUp).Row).Copy _
Destination:=.Cells(3, 5 + ix)
Next ix
End With
'Nombre d'exercices affichés sur la page Menu
Range(Cells(9, 6), Cells(59, 9)).Clear 'pour max 50 exercices
For ix = 2 To Range("C17").Value
Range(Cells(8, 6), Cells(8, 8)).Copy _
Destination:=Cells(Cells(Rows.Count, 6).End(xlUp).Row + 1, 6)
Cells(Cells(Rows.Count, 6).End(xlUp).Row, 6) = ix
Next ix
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
'Total des coefficients à l'examen dans la feuille Menu
Range("H" & 9 + Range("C17") - 1) = "=Sum(H8:H" & 8 + Range("C17") - 1 & ")"
Range("G" & 9 + Range("C17") - 1) = "Total coefficient"
'Total des coefficients à l'examen dans la cellule D4 de la feuille Résultat
Worksheets("Résultat").Range("D4") = "=Sum(Menu!H8:H" & 8 + Range("C17") - 1 & ")"
'Total des points par élève. La formule excel (non dynamique pour 5 exercice serait : =SOMMEPROD(F6:J6;$F$4:$J$4)/$D$4
For ir = 1 To Worksheets("Menu").Range("C15").Value
nbexer = Worksheets("Menu").Range("C17").Value
Worksheets("Résultat").Range("E" & 5 + ir) = "=SOMMEPROD(F"& 5+ir & " : " F" + nbexer & 5 + ir; $"F"$4:$"F"+nbexer$4)/$"D"$4"
Next ir
' Histogramme NB.SI(Résultat!$C$6:$C$6;E11)
'Worksheets("Barème").Range("H" & 10) = "=countif(Résulat!C6:C" & 6 + Range("C15") - 1 & " ; E11)"End Sub
Function ConversionXC(X)
' Conversion colonnes Excel de chiffres en lettres
If X < 27 Then
ConversionXC = Chr$(X + 64)
Else
ConversionXC = Chr$(X \ 26 + 64) & Chr$(X Mod 26 + 64)
End If
End Function
Function ConversionCX(C)
' Conversion colonnes Excel de lettres en chiffres
If Len(C) = 1 Then
ConversionCX = Asc(C) - 64
Else
ConversionCX = (Asc(Left(C, 1)) - 64) * 26 + Asc(Right(C, 1)) - 64
End If
End Function