VBA : macro Ss Totaux au dessus ou en dessous
etienne777
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
cousinhub29 Messages postés 1074 Date d'inscription Statut Membre Dernière intervention -
cousinhub29 Messages postés 1074 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Bonjour,
je viens de créer une macro sous totaux.
Voici la copie exacte :
Sub SousTotaux()
'----------------------------------------------
With Application
.Calculation = xlManual
.MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = False
'------------------------------------------------
Dim apparitionligne As Integer
Dim CELLULE As Integer
ActiveSheet.Unprotect strpass
apparitionligne = InputBox("n° ligne EXCEL à compléter")
CELLULE = InputBox("nombre de cellule à totaliser au DESSUS")
'---------------------------------------------------------
Range("E" & apparitionligne).Select
ActiveCell.FormulaR1C1 = "SOUS TOTAL"
Range("H" & apparitionligne).Select
ActiveCell.FormulaR1C1 = "=SUM(R[-" & CELLULE & "]C:R[-1]C)"
Range("H" & apparitionligne).Select
Selection.Copy
Range("H" & apparitionligne & ":AE" & apparitionligne).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'--------------------------------------
Range("V" & apparitionligne).Select
ActiveCell.FormulaR1C1 = "=IF(RC[-10]=0,0,IF(RC[1]=0,0,RC[1]/RC[-10]))"
'--------------------------------------
Range("B" & apparitionligne & ":AE" & apparitionligne).Select
With Selection.Interior
.ColorIndex = 40
.Pattern = xlSolid
End With
Range("AG" & apparitionligne).Select
With Selection.Interior
.ColorIndex = 40
.Pattern = xlSolid
End With
'--------------------------------------
Range("B" & apparitionligne & ":AE" & apparitionligne).Select
Selection.Font.Bold = True
Range("AG" & apparitionligne).Select
Selection.Font.Bold = True
'--------------------------------------
Range("C" & apparitionligne).Select
ActiveCell.FormulaR1C1 = "ST"
'------------------------------------------------
ActiveSheet.Protect strpass, DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowFiltering:=True
'-------------------------------------------------
With Application
.Calculation = xlAutomatic
.MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = False
'-------------------------------------------------
End Sub
Mon problème est que j'aimerais pouvoir placer la ligne des sous totaux soit au dessus soit en dessous des données du tableau. Me question est : Quel modification je doit faire dans ma formule actuelle ???. Dans cette formule, le sous-totaux se situera toujours en dessous des données.
Je ne suis pas un grand expert de VBA mais si j'écoute ce que l'on m'a dit il faut que je fasse un "Userform".
Pour information cette macro n'a pas été faite que part moi même. J'ai été pas mal aidé.
Merci d'avance.
Etienne
Bonjour,
je viens de créer une macro sous totaux.
Voici la copie exacte :
Sub SousTotaux()
'----------------------------------------------
With Application
.Calculation = xlManual
.MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = False
'------------------------------------------------
Dim apparitionligne As Integer
Dim CELLULE As Integer
ActiveSheet.Unprotect strpass
apparitionligne = InputBox("n° ligne EXCEL à compléter")
CELLULE = InputBox("nombre de cellule à totaliser au DESSUS")
'---------------------------------------------------------
Range("E" & apparitionligne).Select
ActiveCell.FormulaR1C1 = "SOUS TOTAL"
Range("H" & apparitionligne).Select
ActiveCell.FormulaR1C1 = "=SUM(R[-" & CELLULE & "]C:R[-1]C)"
Range("H" & apparitionligne).Select
Selection.Copy
Range("H" & apparitionligne & ":AE" & apparitionligne).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'--------------------------------------
Range("V" & apparitionligne).Select
ActiveCell.FormulaR1C1 = "=IF(RC[-10]=0,0,IF(RC[1]=0,0,RC[1]/RC[-10]))"
'--------------------------------------
Range("B" & apparitionligne & ":AE" & apparitionligne).Select
With Selection.Interior
.ColorIndex = 40
.Pattern = xlSolid
End With
Range("AG" & apparitionligne).Select
With Selection.Interior
.ColorIndex = 40
.Pattern = xlSolid
End With
'--------------------------------------
Range("B" & apparitionligne & ":AE" & apparitionligne).Select
Selection.Font.Bold = True
Range("AG" & apparitionligne).Select
Selection.Font.Bold = True
'--------------------------------------
Range("C" & apparitionligne).Select
ActiveCell.FormulaR1C1 = "ST"
'------------------------------------------------
ActiveSheet.Protect strpass, DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowFiltering:=True
'-------------------------------------------------
With Application
.Calculation = xlAutomatic
.MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = False
'-------------------------------------------------
End Sub
Mon problème est que j'aimerais pouvoir placer la ligne des sous totaux soit au dessus soit en dessous des données du tableau. Me question est : Quel modification je doit faire dans ma formule actuelle ???. Dans cette formule, le sous-totaux se situera toujours en dessous des données.
Je ne suis pas un grand expert de VBA mais si j'écoute ce que l'on m'a dit il faut que je fasse un "Userform".
Pour information cette macro n'a pas été faite que part moi même. J'ai été pas mal aidé.
Merci d'avance.
Etienne
A voir également:
- VBA : macro Ss Totaux au dessus ou en dessous
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
1 réponse
Bonjour,
Et bienvenue...
Effectivement, l'utilisation d'un petit UserForm permettrait un traitement plus aisé....
Cependant, sans voir la structure exacte de ton fichier, difficile d'y répondre à coup sûr....
Peux-tu joindre un fichier exemple, sans données confidentielles, mais avec la structure exacte, de ton fichier de travail (remplace les noms par des mois, les numéros de tel par des jours.....)
Seules quelques lignes suffisent
Pour joindre un fichier, utilise le site
Et bienvenue...
Effectivement, l'utilisation d'un petit UserForm permettrait un traitement plus aisé....
Cependant, sans voir la structure exacte de ton fichier, difficile d'y répondre à coup sûr....
Peux-tu joindre un fichier exemple, sans données confidentielles, mais avec la structure exacte, de ton fichier de travail (remplace les noms par des mois, les numéros de tel par des jours.....)
Seules quelques lignes suffisent
Pour joindre un fichier, utilise le site
http://www.cijoint.fr/</code>
par exemple...
@ te relire