AntoineLTO
XLDnaute Nouveau
Bonjour à toutes, à tous,
Je commence par dire que je suis nouveau sur les macros, j'y avais touché il y a plusieurs années mais mes souvenirs ce sont envolés... Depuis je pioche à gauche à droite les différentes informations nécessaires pour des tâches basiques.
J'ai besoin aujourd'hui d'automatiser certaines tâches et notamment l'ajout de somme.
Tout d'abord dans mon classeur j'ai effectué des filtres, toujours sur les mêmes critères aux mêmes endroits, cela fonctionne mais je pense que mon code est sujet à futures erreurs puisque je ne comprends pas pourquoi ma "range" ne pose pas de problème car elle était adaptée à la première feuille mais pas aux suivantes. Le nombre de lignes peut varier à la hausse comme à la baisse dans le tableau source et d'un mois à l'autre donc que mettre à la place de $Z$384 pour englober n'importe quel scénario ? .
Enfin, une fois ce tri fait je souhaite que, pour les données restantes, faire la somme deux lignes en dessous de la colonne O. Le code que j'utilise fonctionne pour la première feuille, mais j'imagine qu'il n'est pas possible d'enchainer l'opération sans compartimentages supplémentaires.
Le code pour les sommes :
Si je ne suis pas clair, dites moi. Je précise que j'ai trouvé le code pour la somme sur ce forum, d'où les commentaires répétés.
Dans tous les cas merci pour le temps que vous m'accorderez.
Cordialement,
Je commence par dire que je suis nouveau sur les macros, j'y avais touché il y a plusieurs années mais mes souvenirs ce sont envolés... Depuis je pioche à gauche à droite les différentes informations nécessaires pour des tâches basiques.
J'ai besoin aujourd'hui d'automatiser certaines tâches et notamment l'ajout de somme.
Tout d'abord dans mon classeur j'ai effectué des filtres, toujours sur les mêmes critères aux mêmes endroits, cela fonctionne mais je pense que mon code est sujet à futures erreurs puisque je ne comprends pas pourquoi ma "range" ne pose pas de problème car elle était adaptée à la première feuille mais pas aux suivantes. Le nombre de lignes peut varier à la hausse comme à la baisse dans le tableau source et d'un mois à l'autre donc que mettre à la place de $Z$384 pour englober n'importe quel scénario ? .
VB:
Sub Tridesfeuilles()
'
' Tri des feuilles
'
' Filtre pour 23101
Sheets("23101").Select
ActiveSheet.Range("$A$2:$Z$384").AutoFilter Field:=1, Criteria1:="<>BC*", Criteria2:="<>NR*"
ActiveSheet.Range("$A$2:$Z$384").AutoFilter Field:=3, Criteria1:="FACTU"
ActiveSheet.Range("$A$2:$Z$384").AutoFilter Field:=10, Criteria1:="CVENT"
' Filtre 61501
Sheets("61501").Select
ActiveSheet.Range("$A$2:$Z$384").AutoFilter Field:=1, Criteria1:="<>BC*", Criteria2:="<>NR*"
ActiveSheet.Range("$A$2:$Z$384").AutoFilter Field:=3, Criteria1:="FACTU"
ActiveSheet.Range("$A$2:$Z$384").AutoFilter Field:=10, Criteria1:="CVENT"
' Filtre 61503
Sheets("61503").Select
ActiveSheet.Range("$A$2:$Z$384").AutoFilter Field:=1, Criteria1:="<>BC*", Criteria2:="<>NR*"
ActiveSheet.Range("$A$2:$Z$384").AutoFilter Field:=3, Criteria1:="FACTU"
ActiveSheet.Range("$A$2:$Z$384").AutoFilter Field:=10, Criteria1:="CVENT"
' Filtre 61558
Sheets("61558").Select
ActiveSheet.Range("$A$2:$Z$384").AutoFilter Field:=1, Criteria1:="<>BC*", Criteria2:="<>NR*"
ActiveSheet.Range("$A$2:$Z$384").AutoFilter Field:=3, Criteria1:="FACTU"
ActiveSheet.Range("$A$2:$Z$384").AutoFilter Field:=10, Criteria1:="CVENT"
' Filtre 61559
Sheets("61559").Select
ActiveSheet.Range("$A$2:$Z$384").AutoFilter Field:=1, Criteria1:="<>BC*", Criteria2:="<>NR*"
ActiveSheet.Range("$A$2:$Z$384").AutoFilter Field:=3, Criteria1:="FACTU"
ActiveSheet.Range("$A$2:$Z$384").AutoFilter Field:=10, Criteria1:="CVENT"
End Sub
Enfin, une fois ce tri fait je souhaite que, pour les données restantes, faire la somme deux lignes en dessous de la colonne O. Le code que j'utilise fonctionne pour la première feuille, mais j'imagine qu'il n'est pas possible d'enchainer l'opération sans compartimentages supplémentaires.
Le code pour les sommes :
Code:
Sub Rajoutdessommes()
'
' Rajout des sommes
'
'
Dim DerLig As Long
With Worksheets("23101") 'A adapter
'Rechercher de la dernière ligne renseignée
DerLig = .Range("O" & .Rows.Count).End(xlUp).Row
'Indiquer la somme 2 lignes en-dessous
.Range("O" & DerLig + 2) = Application.WorksheetFunction.Sum(Range("O3:O" & DerLig))
End With
Dim DerLig As Long
With Worksheets("61501") 'A adapter
'Rechercher de la dernière ligne renseignée
DerLig = .Range("O" & .Rows.Count).End(xlUp).Row
'Indiquer la somme 2 lignes en-dessous
.Range("O" & DerLig + 2) = Application.WorksheetFunction.Sum(Range("O3:O" & DerLig))
End With
Dim DerLig As Long
With Worksheets("61503") 'A adapter
'Rechercher de la dernière ligne renseignée
DerLig = .Range("O" & .Rows.Count).End(xlUp).Row
'Indiquer la somme 2 lignes en-dessous
.Range("O" & DerLig + 2) = Application.WorksheetFunction.Sum(Range("O3:O" & DerLig))
End With
Dim DerLig As Long
With Worksheets("61558") 'A adapter
'Rechercher de la dernière ligne renseignée
DerLig = .Range("O" & .Rows.Count).End(xlUp).Row
'Indiquer la somme 2 lignes en-dessous
.Range("O" & DerLig + 2) = Application.WorksheetFunction.Sum(Range("O3:O" & DerLig))
End With
Dim DerLig As Long
With Worksheets("61559") 'A adapter
'Rechercher de la dernière ligne renseignée
DerLig = .Range("O" & .Rows.Count).End(xlUp).Row
'Indiquer la somme 2 lignes en-dessous
.Range("O" & DerLig + 2) = Application.WorksheetFunction.Sum(Range("O3:O" & DerLig))
End With
End Sub
Si je ne suis pas clair, dites moi. Je précise que j'ai trouvé le code pour la somme sur ce forum, d'où les commentaires répétés.
Dans tous les cas merci pour le temps que vous m'accorderez.
Cordialement,