fopy12
Habitué
Salut tout le monde,
J’aurai besoin d’une aide. J’ai un tableau avec une colonne H où se trouvent des montants. J’ai fait une macro qui fait la somme de ces montants s’ils sont < à 10 000, s’ils sont entre 4 000 et 10 000 et s’ils sont < à 4 000.
Et à chaque fois il faut insérer une ligne en dessous du dernier montant qui est < à 10 000, (pareil pour le dernier montant compris entre 4 000 et 10 000 et celui < à 4 000). Et c’est dans cette ligne insérée où il faut mettre la somme dans chaque cas.
Ma macro marche sauf pour ce qui est du dernier cas. Il me met la somme à 65536 ième ligne ; ce n’est pas terrible. A votre avis qu’est ce qui cloche ?
Au début je l’ai adapté à 390 lignes et pas de soucis. Mais mon nombre de lignes change toutes les semaines, c’est pour cela que j’ai mis de for i de 1 à 65536.
Merci d’avance pour votre aide !!
J’aurai besoin d’une aide. J’ai un tableau avec une colonne H où se trouvent des montants. J’ai fait une macro qui fait la somme de ces montants s’ils sont < à 10 000, s’ils sont entre 4 000 et 10 000 et s’ils sont < à 4 000.
Et à chaque fois il faut insérer une ligne en dessous du dernier montant qui est < à 10 000, (pareil pour le dernier montant compris entre 4 000 et 10 000 et celui < à 4 000). Et c’est dans cette ligne insérée où il faut mettre la somme dans chaque cas.
Ma macro marche sauf pour ce qui est du dernier cas. Il me met la somme à 65536 ième ligne ; ce n’est pas terrible. A votre avis qu’est ce qui cloche ?
Au début je l’ai adapté à 390 lignes et pas de soucis. Mais mon nombre de lignes change toutes les semaines, c’est pour cela que j’ai mis de for i de 1 à 65536.
Code:
Sub TrierEtSommeSI()
' trier le tableau de données
Sheets("Général").Select
Range("A1:L390").Select
Selection.Sort Key1:=Range("H2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
' boucle
For i = 2 To 65536
If Range("H" & i).Value >= 10000 Then
SommeSup = SommeSup + Range("H" & i).Value
DernierSup = i
ElseIf Range("H" & i).Value >= 4000 And Range("H" & i).Value < 10000 Then
SommeInf = SommeInf + Range("H" & i).Value
DernierInf = i
Else
SommeReste = SommeReste + Range("H" & i).Value
DernierReste = i
End If
Next i
Range("H" & DernierSup + 1).EntireRow.Insert
Range("A" & DernierSup + 1).Value = "Somme des éléments >= 10000"
Range("H" & DernierSup + 1).Value = SommeSup
Range("H" & DernierInf + 2).EntireRow.Insert
Range("A" & DernierInf + 2).Value = "Somme des éléments >=4000 et < 10000"
Range("H" & DernierInf + 2).Value = SommeInf
Range("H" & DernierReste + 3).EntireRow.Insert
Range("A" & DernierReste + 3).Value = "Somme des éléments < 4000"
Range("H" & DernierReste + 3).Value = SommeReste
End Sub