Choisir plage jusqu'à la dernière cellule contenant une valeur
Résolu
MarcAn23
-
MarcAnP23 Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
MarcAnP23 Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis débutant avec les macros. J'aimerais savoir comment programmer une macro dans laquelle une formule utilise l'ensemble des données d'une colonne, c'est-à-dire jusqu'à la dernière cellule non vide afin que je puisse l'utiliser avec d'autres bases de données avec une nombre de lignes variable.
Voici ce que j'ai comme code (j'ai utiliser l'option enregistrer une macro) :
Sub ST_35_MP()
'
' ST_35_MP Macro
'
'
Rows("1:1").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D1").Select
Selection.FormulaArray = "=SUM(1/COUNTIF(R[2]C:R[254]C,R[2]C:R[254]C))"
ActiveWindow.ScrollRow = 217
ActiveWindow.ScrollRow = 215
ActiveWindow.ScrollRow = 212
ActiveWindow.ScrollRow = 210
ActiveWindow.ScrollRow = 206
ActiveWindow.ScrollRow = 202
ActiveWindow.ScrollRow = 198
ActiveWindow.ScrollRow = 193
ActiveWindow.ScrollRow = 187
ActiveWindow.ScrollRow = 182
ActiveWindow.ScrollRow = 176
ActiveWindow.ScrollRow = 165
ActiveWindow.ScrollRow = 156
ActiveWindow.ScrollRow = 148
ActiveWindow.ScrollRow = 129
ActiveWindow.ScrollRow = 118
ActiveWindow.ScrollRow = 114
ActiveWindow.ScrollRow = 107
ActiveWindow.ScrollRow = 104
ActiveWindow.ScrollRow = 101
ActiveWindow.ScrollRow = 97
ActiveWindow.ScrollRow = 93
ActiveWindow.ScrollRow = 89
ActiveWindow.ScrollRow = 86
ActiveWindow.ScrollRow = 82
ActiveWindow.ScrollRow = 78
ActiveWindow.ScrollRow = 74
ActiveWindow.ScrollRow = 71
ActiveWindow.ScrollRow = 67
ActiveWindow.ScrollRow = 64
ActiveWindow.ScrollRow = 62
ActiveWindow.ScrollRow = 59
ActiveWindow.ScrollRow = 56
ActiveWindow.ScrollRow = 54
ActiveWindow.ScrollRow = 52
ActiveWindow.ScrollRow = 50
ActiveWindow.ScrollRow = 47
ActiveWindow.ScrollRow = 44
ActiveWindow.ScrollRow = 41
ActiveWindow.ScrollRow = 39
ActiveWindow.ScrollRow = 37
ActiveWindow.ScrollRow = 36
ActiveWindow.ScrollRow = 34
ActiveWindow.ScrollRow = 32
ActiveWindow.ScrollRow = 31
ActiveWindow.ScrollRow = 29
ActiveWindow.ScrollRow = 27
ActiveWindow.ScrollRow = 26
ActiveWindow.ScrollRow = 24
ActiveWindow.ScrollRow = 22
ActiveWindow.ScrollRow = 20
ActiveWindow.ScrollRow = 18
ActiveWindow.ScrollRow = 16
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 1
Rows("2:2").Select
Selection.AutoFilter
ActiveSheet.Range("$A$2:$BL$255").AutoFilter Field:=10, Criteria1:=">=34", _
Operator:=xlAnd
ActiveSheet.Range("$A$2:$BL$255").AutoFilter Field:=14, Criteria1:="=M", _
Operator:=xlAnd
ActiveSheet.Range("$A$2:$BL$255").AutoFilter Field:=15, Criteria1:="=P", _
Operator:=xlAnd
Range("AD1").Select
ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R[44]C:R[216]C)"
Range("AE1").Select
ActiveCell.FormulaR1C1 = "=RC[-1]/RC[-27]"
Range("AE2").Select
End Sub
Bref, dans les formules SUM et SUBTOTAL, j'aimerais remplacer R[254]C et R[216]C par la dernière cellule de la colonne non vide afin de pouvoir utiliser la macro avec d'autres bases de données
Merci d'avance pour votre aide
Je suis débutant avec les macros. J'aimerais savoir comment programmer une macro dans laquelle une formule utilise l'ensemble des données d'une colonne, c'est-à-dire jusqu'à la dernière cellule non vide afin que je puisse l'utiliser avec d'autres bases de données avec une nombre de lignes variable.
Voici ce que j'ai comme code (j'ai utiliser l'option enregistrer une macro) :
Sub ST_35_MP()
'
' ST_35_MP Macro
'
'
Rows("1:1").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D1").Select
Selection.FormulaArray = "=SUM(1/COUNTIF(R[2]C:R[254]C,R[2]C:R[254]C))"
ActiveWindow.ScrollRow = 217
ActiveWindow.ScrollRow = 215
ActiveWindow.ScrollRow = 212
ActiveWindow.ScrollRow = 210
ActiveWindow.ScrollRow = 206
ActiveWindow.ScrollRow = 202
ActiveWindow.ScrollRow = 198
ActiveWindow.ScrollRow = 193
ActiveWindow.ScrollRow = 187
ActiveWindow.ScrollRow = 182
ActiveWindow.ScrollRow = 176
ActiveWindow.ScrollRow = 165
ActiveWindow.ScrollRow = 156
ActiveWindow.ScrollRow = 148
ActiveWindow.ScrollRow = 129
ActiveWindow.ScrollRow = 118
ActiveWindow.ScrollRow = 114
ActiveWindow.ScrollRow = 107
ActiveWindow.ScrollRow = 104
ActiveWindow.ScrollRow = 101
ActiveWindow.ScrollRow = 97
ActiveWindow.ScrollRow = 93
ActiveWindow.ScrollRow = 89
ActiveWindow.ScrollRow = 86
ActiveWindow.ScrollRow = 82
ActiveWindow.ScrollRow = 78
ActiveWindow.ScrollRow = 74
ActiveWindow.ScrollRow = 71
ActiveWindow.ScrollRow = 67
ActiveWindow.ScrollRow = 64
ActiveWindow.ScrollRow = 62
ActiveWindow.ScrollRow = 59
ActiveWindow.ScrollRow = 56
ActiveWindow.ScrollRow = 54
ActiveWindow.ScrollRow = 52
ActiveWindow.ScrollRow = 50
ActiveWindow.ScrollRow = 47
ActiveWindow.ScrollRow = 44
ActiveWindow.ScrollRow = 41
ActiveWindow.ScrollRow = 39
ActiveWindow.ScrollRow = 37
ActiveWindow.ScrollRow = 36
ActiveWindow.ScrollRow = 34
ActiveWindow.ScrollRow = 32
ActiveWindow.ScrollRow = 31
ActiveWindow.ScrollRow = 29
ActiveWindow.ScrollRow = 27
ActiveWindow.ScrollRow = 26
ActiveWindow.ScrollRow = 24
ActiveWindow.ScrollRow = 22
ActiveWindow.ScrollRow = 20
ActiveWindow.ScrollRow = 18
ActiveWindow.ScrollRow = 16
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 1
Rows("2:2").Select
Selection.AutoFilter
ActiveSheet.Range("$A$2:$BL$255").AutoFilter Field:=10, Criteria1:=">=34", _
Operator:=xlAnd
ActiveSheet.Range("$A$2:$BL$255").AutoFilter Field:=14, Criteria1:="=M", _
Operator:=xlAnd
ActiveSheet.Range("$A$2:$BL$255").AutoFilter Field:=15, Criteria1:="=P", _
Operator:=xlAnd
Range("AD1").Select
ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R[44]C:R[216]C)"
Range("AE1").Select
ActiveCell.FormulaR1C1 = "=RC[-1]/RC[-27]"
Range("AE2").Select
End Sub
Bref, dans les formules SUM et SUBTOTAL, j'aimerais remplacer R[254]C et R[216]C par la dernière cellule de la colonne non vide afin de pouvoir utiliser la macro avec d'autres bases de données
Merci d'avance pour votre aide
A voir également:
- Selectionner plage jusqu'à la dernière cellule non vide vba
- Dernière version ccleaner gratuit français - Télécharger - Nettoyage
- Formate pour taxer client frigo vide ✓ - Forum Vos droits sur internet
- Supprimer dernière page word - Guide
- Formule excel si cellule non vide alors couleur ✓ - Forum Excel
- Internat nourriture - Forum Loisirs / Divertissements
1 réponse
Bonjour,
Pour SUBTOTAL tu peux utiliser :
Tu peux aussi supprimer
qui ne sont pas utiles ainsi que tes lignes
Pour SUBTOTAL tu peux utiliser :
Range("AD1").FormulaR1C1 = "=SUBTOTAL(9,R[44]C:R" & Cells(Rows.Count, "AD").End(xlUp).Row & "C)"et idem pour SUM
Range("D1").FormulaArray = "=SUM(1/COUNTIF(R[2]C:R" & Cells(Rows.Count, "D").End(xlUp).Row & "C,R[2]C:R" & Cells(Rows.Count, "D").End(xlUp).Row & "C))"
Tu peux aussi supprimer
.Select
Selection
qui ne sont pas utiles ainsi que tes lignes
ActiveWindow.ScrollRow
MarcAnP23
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
Merci beaucoup !!! ça fonctionne maintenant !! :)