Nommer une plage suivant une condition (VBA)

Comment nommer la plage de données en colonne B définie par le fait de partager un même critère en colonne A ?

La valeur du critère étant en colonne A et celles des données en colonne B, Le valeur du critère en $2 (on peut aussi l'écrire directement dans la formule)

dans insertion/nom/définir, indique la formule ci-dessous: =DECALER(Feuil1!$1;EQUIV(Feuil1!$2;Feuil1!$1:$1000;0)-1;0;NB.SI(Feuil1!$1:$1000;Feuil1!$2);1) Attention, les critères en colonne A doivent être regroupés.
Pour éviter le recours à des fonctions volatiles pour nommer tes plages de données, ce qui est préférable si tu as de nombreuses plages à nommer, fais le par VBA.

sub Nomme()
 Set MonDico = CreateObject("Scripting.Dictionary")
 For Each c In Range([A1], [A65000].End(xlUp))
 If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value 
Next c 
For Each c In MonDico.items
 ActiveWorkbook.Names.Add Name:="critere" & c, _
  RefersTo:="=" & [B1].Offset(Application.Match(c, [A:A], 0) - 1, 0).Resize(Application.CountIf([A:A], c),1).Address
 Next c
 [D20].ListNames
 end sub

Auteur :

Mots clefs associés à cette page : , , , , ,