Nommer une plage suivant une condition (VBA)
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 subAuteur : Jacques Boisgontier
Mots clefs associés à cette page : condition, macro, nom, nommer, vba, vbe
- Vous devez vous identifier ou créer un compte pour écrire des commentaires
