Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Utiliser une variable dans Application.[Subtotal(3, F:F)]

  • Initiateur de la discussion Initiateur de la discussion dg62
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

dg62

XLDnaute Barbatruc
Bonjour le Forum
Je souhaiterai remplacer F:F par la variable FirstCol qui est égale à F:F.
VB:
sexeF = Application.[Subtotal(3, Firstcol)] - 1
Ça ne veut pas fonctionner. Peut-on le faire ? Y-a-t-il une autre méthode ?

Merci
firstcol est bien déclaré en string si je déclare en range j'ai une erreur sur la ligne firstcol

VB:
plage = LO.DataBodyRange.Address                     
firstcel = Mid(plage, 2, 1) & Mid(plage, 4, 1)       
firstcol = Mid(plage, 2, 1) & ":" & Mid(plage, 2, 1)

LO.DataBodyRange.AutoFilter Field:=4, Criteria1:="F" 
sexeF = Application.[Subtotal(3, F:F)] - 1
 
Dernière édition:
Bonjour le fil, dg62

•>dg62
Test OK pour les deux macros (XL2K13 32bits /W10 64bits)
VB:
Sub Test_A()
Dim LO As ListObject
Set LO = ActiveSheet.ListObjects(1)
LO.DataBodyRange.AutoFilter Field:=4, Criteria1:="F"
sexeF = Application.Subtotal(3, LO.DataBodyRange.Columns(4))
MsgBox sexeF
End Sub
Sub Test_B()
Dim LO As ListObject, fCol&
Set LO = ActiveSheet.ListObjects(1)
LO.DataBodyRange.AutoFilter Field:=4, Criteria1:="M"
fCol = CLng(InputBox("N°col?", "Test", 4))
sexeF = Application.Subtotal(3, LO.DataBodyRange.Columns(fCol))
MsgBox sexeF
End Sub
 
Bonjour
En formule c'est INDIRECT

En VBA c'est un non sens de travailler sur un ListObject et d'utiliser F:F ou même de décomposer l'adresse

VB:
sexeF=Application.WorksheetFunction.Subtotal(3, LO.ListColumns(1).DataBodyRange)

Edit trop tard, salut Staple
 
Bonjour chris

Une autre pour parier les vlaisirs 😉
(confinement oblige 😉)
VB:
Sub Test_C()
Dim LO As ListObject, fCol, COL$
Set LO = ActiveSheet.ListObjects(1)
LO.DataBodyRange.AutoFilter Field:=4, Criteria1:="M"
COL = LO.DataBodyRange.Columns(4).Address(0, 0)
sexeF = Evaluate("=SUBTOTAL(3," & COL & ")")
MsgBox sexeF
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
582
Réponses
7
Affichages
797
Réponses
1
Affichages
2 K
Compte Supprimé 979
C
Réponses
1
Affichages
1 K
Réponses
2
Affichages
764
Réponses
2
Affichages
476
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…