Bonjour à tous,
Malgré mes recherches je n'ai pas trouvé de topic traitant ce sujet alors je me lance : est-il possible dans un traitement With...End With d'appeler l'objet servant de racine au With ?
Je m'explique :
Mon code vise à remplir un tableau de données (appelons le tb_Data) et dans une sous partie de ce code je parcours un range source (appelons le rg_Source) sur lequel je souhaite faire des sommes conditionnelles.
Ainsi, dans une boucle, je dois réaliser 5 ou 6 sommes.si.ens (sumifs en vab) dans une même itération de ladite boucle. Les deux critères de la somme ne changent pas, seule la colonne de mon rg_Source doit être différente.
Du coup j'ai pensé à articuler ma boucle comme suit :
Pour info, st_brand est un paramètre string issu du dictionnaire dc_Brands_C_i que j'ai généré plus tôt.
L'idée est donc d'entamer mon With avec un rg_Source.resize(,1) pour n'avoir ensuite qu'à rajouter le .offset(,X) dans mon argument en fonction de la colonne dans laquelle je souhaite réaliser la somme.
Le problème est au niveau du deuxième critère de somme, là où j'ai mis [HELP]. Le critère se trouve en effet dans la première colonne de mon rg_Source et je n'ai donc pas besoin de faire un .Offset (ou alors un .Offset(,0) )
Ma question est donc : comment puis-je rédiger cet argument de manière à appeler l'objet "racine" de mon With sans le modifier ?
J'espère vraiment avoir été clair... (après une journée de boulot là dessus je n'ai plus les idées très claires... : )
Merci pour votre aide!
Stakov
Malgré mes recherches je n'ai pas trouvé de topic traitant ce sujet alors je me lance : est-il possible dans un traitement With...End With d'appeler l'objet servant de racine au With ?
Je m'explique :
Mon code vise à remplir un tableau de données (appelons le tb_Data) et dans une sous partie de ce code je parcours un range source (appelons le rg_Source) sur lequel je souhaite faire des sommes conditionnelles.
Ainsi, dans une boucle, je dois réaliser 5 ou 6 sommes.si.ens (sumifs en vab) dans une même itération de ladite boucle. Les deux critères de la somme ne changent pas, seule la colonne de mon rg_Source doit être différente.
Du coup j'ai pensé à articuler ma boucle comme suit :
Code:
For i = 1 To q_brand
st_brand = dc_Brands_C_i.Item(i)
With rg_Source.Resize(, 1)
tb_Data(i, 4) = Application.WorksheetFunction.SumIfs(.Offset(, 18), .Offset(, 2), dt_Month, [HELP], st_brand)
tb_Data(i, 5) = Application.WorksheetFunction.SumIfs(.Offset(, 19), .Offset(, 2), dt_Month, [HELP], st_brand)
tb_Data(i, 6) = Application.WorksheetFunction.SumIfs(.Offset(, 43), .Offset(, 2), dt_Month, [HELP], st_brand)
tb_Data(i, 7) = Application.WorksheetFunction.SumIfs(.Offset(, 44), .Offset(, 2), dt_Month, [HELP], st_brand)
End With
Next i
Pour info, st_brand est un paramètre string issu du dictionnaire dc_Brands_C_i que j'ai généré plus tôt.
L'idée est donc d'entamer mon With avec un rg_Source.resize(,1) pour n'avoir ensuite qu'à rajouter le .offset(,X) dans mon argument en fonction de la colonne dans laquelle je souhaite réaliser la somme.
Le problème est au niveau du deuxième critère de somme, là où j'ai mis [HELP]. Le critère se trouve en effet dans la première colonne de mon rg_Source et je n'ai donc pas besoin de faire un .Offset (ou alors un .Offset(,0) )
Ma question est donc : comment puis-je rédiger cet argument de manière à appeler l'objet "racine" de mon With sans le modifier ?
J'espère vraiment avoir été clair... (après une journée de boulot là dessus je n'ai plus les idées très claires... : )
Merci pour votre aide!
Stakov