Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Nommer si

13 réponses
Avatar
Misange
Bonjour,
J'ai un tableau comportant de grandes séries de données triées par
catégorie d'échantillon
les catégories sont les unes en dessous des autres sans espace
j'aurais besoin de nommer les plages de la colonne B en fonction du
critère de la colonne A
Et pour arranger le tout, ce serait encore mieux si c'était dynamique,
ce tableau grossissant de jour en jour...
A B
1 d
1 f
1 e
1 e
2 f
2 f
2 j
5 y
5 o
3 j
3 r
3 t

Si vous avez une idée, je suis très preneuse !
merci

--
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

10 réponses

1 2
Avatar
Misange
précision : sans macros ! avec c'est bon mais je voudrais éviter

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonjour,
J'ai un tableau comportant de grandes séries de données triées par
catégorie d'échantillon
les catégories sont les unes en dessous des autres sans espace
j'aurais besoin de nommer les plages de la colonne B en fonction du
critère de la colonne A
Et pour arranger le tout, ce serait encore mieux si c'était dynamique,
ce tableau grossissant de jour en jour...
A B
1 d
1 f
1 e
1 e
2 f
2 f
2 j
5 y
5 o
3 j
3 r
3 t

Si vous avez une idée, je suis très preneuse !
merci



Avatar
JB
Bonsoir,

J'ai pas compris la question (ni la finalité)

Si les valeurs du critere en colonne A sont bien des suites continues:
critere en D2: 1,2,3,..

Insertion/Nom/Définir: critere
ÞCALER(Feuil1!$B$1;EQUIV(Feuil1!$D$2;Feuil1!$A$1:$A
$1000;0)-1;0;NB.SI(Feuil1!$A$1:$A$1000;Feuil1!$D$2);1)

http://cjoint.com/?flt44rOOlF

JB

On 11 mai, 19:08, Misange wrote:
Bonjour,
J'ai un tableau comportant de grandes séries de données triées par
catégorie d'échantillon
les catégories sont les unes en dessous des autres sans espace
j'aurais besoin de nommer les plages de la colonne B en fonction du
critère de la colonne A
Et pour arranger le tout, ce serait encore mieux si c'était dynamique,
ce tableau grossissant de jour en jour...
A B
1 d
1 f
1 e
1 e
2 f
2 f
2 j
5 y
5 o
3 j
3 r
3 t

Si vous avez une idée, je suis très preneuse !
merci

--
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !http://xlwiki. free.fr/wikihttp://www.excelabo.net


Avatar
dre
Oups, je ne sais pas si mon message est passé !

Bonjour,

Je n'ai pas compris la question de la même façon.
"j'aurais besoin de nommer les plages de la colonne B en fonction du critère
de la colonne A".
Donc on recherche une plage variable suivant un critère.

Si la colonne A est triée (condition sine qua non !)
Les valeurs en A1:B12
En E1 le critère (une valeur de la colonne A)
La formule :
="B"&EQUIV($E$1;$A$1:$A$12)-NB.SI($A$1:$A$12;$E$1)+1&":B"&EQUIV($E$1;$A$1:$A$12)

dré



précision : sans macros ! avec c'est bon mais je voudrais éviter

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonjour,
J'ai un tableau comportant de grandes séries de données triées par
catégorie d'échantillon
les catégories sont les unes en dessous des autres sans espace
j'aurais besoin de nommer les plages de la colonne B en fonction du
critère de la colonne A
Et pour arranger le tout, ce serait encore mieux si c'était dynamique,
ce tableau grossissant de jour en jour...
A B
1 d
1 f
1 e
1 e
2 f
2 f
2 j
5 y
5 o
3 j
3 r
3 t

Si vous avez une idée, je suis très preneuse !
merci






Avatar
Misange
Parfait !
Y a pas, j'ai le neurone plus souple en VBA qu'en formule !
l'intérêt : j'ai un super grand tableau qui grossit tous les jours avec
des tas de données. Je suis tous les jours sur chaque série les
moyennes, écartypes, nb de vleurs... en filtrant les tableaux suivant
des tas de critères. Du coup j'utilise essentiellment la fonction
sous.total(1 et sous.total(8... et Je fais ensuite les graphiques
correspondants.
Le but c'est de faire tout ça automatiquement avec des plages qui
changent de jour en jour. Donc au début je nomme tout et ensuite j'ai la
paix ! j'écris une fois pour toutes mes formules de sous.total là ou ça
m'arrange et pas à l'intérieur du tableau comme ce que fait excel avec
données/sous.total et sans avoir besoin de repréciser chaque jour mes
plages si je les écris en dur dans les formules.
En tous cas voici mon problème résolu grace à toi et aussi à dre dont la
solution n'était pas tout à fait celle que je cherchais mais pas si loin ;-)
merci à vous deux !

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonsoir,

J'ai pas compris la question (ni la finalité)

Si les valeurs du critere en colonne A sont bien des suites continues:
critere en D2: 1,2,3,..

Insertion/Nom/Définir: critere
ÞCALER(Feuil1!$B$1;EQUIV(Feuil1!$D$2;Feuil1!$A$1:$A
$1000;0)-1;0;NB.SI(Feuil1!$A$1:$A$1000;Feuil1!$D$2);1)

http://cjoint.com/?flt44rOOlF

JB

On 11 mai, 19:08, Misange wrote:
Bonjour,
J'ai un tableau comportant de grandes séries de données triées par
catégorie d'échantillon
les catégories sont les unes en dessous des autres sans espace
j'aurais besoin de nommer les plages de la colonne B en fonction du
critère de la colonne A
Et pour arranger le tout, ce serait encore mieux si c'était dynamique,
ce tableau grossissant de jour en jour...
A B
1 d
1 f
1 e
1 e
2 f
2 f
2 j
5 y
5 o
3 j
3 r
3 t

Si vous avez une idée, je suis très preneuse !
merci

--
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !http://xlwiki.free.fr/wikihttp://www.excelabo.net






Avatar
Misange
merci merci, c'était presque ça mais c'est vrai que les explications
n'étaient peut être pas des plus claires ! JB a lu entre les lignes ce
qu'il fallait.
Bonne soirée
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Oups, je ne sais pas si mon message est passé !

Bonjour,

Je n'ai pas compris la question de la même façon.
"j'aurais besoin de nommer les plages de la colonne B en fonction du critère
de la colonne A".
Donc on recherche une plage variable suivant un critère.

Si la colonne A est triée (condition sine qua non !)
Les valeurs en A1:B12
En E1 le critère (une valeur de la colonne A)
La formule :
="B"&EQUIV($E$1;$A$1:$A$12)-NB.SI($A$1:$A$12;$E$1)+1&":B"&EQUIV($E$1;$A$1:$A$12)

dré



précision : sans macros ! avec c'est bon mais je voudrais éviter

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonjour,
J'ai un tableau comportant de grandes séries de données triées par
catégorie d'échantillon
les catégories sont les unes en dessous des autres sans espace
j'aurais besoin de nommer les plages de la colonne B en fonction du
critère de la colonne A
Et pour arranger le tout, ce serait encore mieux si c'était dynamique,
ce tableau grossissant de jour en jour...
A B
1 d
1 f
1 e
1 e
2 f
2 f
2 j
5 y
5 o
3 j
3 r
3 t

Si vous avez une idée, je suis très preneuse !
merci







Avatar
AV
Ave zoziau,

Le but c'est de faire tout ça automatiquement avec des plages qui changent de
jour en jour.....


Un avis...
Si la fonction DECALER présente un incontestable intérêt, ça n'est pas pour
autant la panacée quand il s'agit de définition de noms dans une base de données
car elle a un inconvénient de taille : c'est une fonction volatile !
Donc je te dis pas le nombre de recalculs qu'implique l'utilisation du fichier
surtout si, comme c'est bien souvent le cas, la fonction est combinée avec
d'autres comme NBVAL, NB.SI, EQUIV, MAX.... 1 à X appels de fonctions par
formule de définition des noms ça pèse...
Il me paraît plus intéressant et, à terme, plus efficace, de renommer les plages
à chaque "alimentation".
Si, ta base de données est (comme je le subodore) bien organisée (A1:XXxx et
noms de champ en ligne 1), une toute petite ligne de commande suffit à renommer
l'ensemble des champs en utilisant "CurrentRegion".
Exemple avec une feuille nommée BD :

[BD!A1].CurrentRegion.CreateNames Top:=True

A bientôt...

AV

Avatar
Misange
salut AV
De fait ma base est organisée suivant les règles de bonnes pratiques du
MPFE ;-)

ta réflexion est frappée au coin du bon sens en ce qui concerne la
gestion des ressources.
La soluce que tu proposes ne me convient pourtant pas car ce n'est pas
une base de données que j'ai besoin de nommer. Ce qui change c'est bien
sur la taille globale de la base mais surtout le nombre d'échantillons
de chaque type
ex : lundi
A B C D E
1 3.2 4 90 67
1 4
1 7
2 1.1
2 9
3 0

mardi
1 3.2
1 4
1 7
1 18
2 1.1
2 9
3 0
3 2
4 7

lundi je dois avoir 3 plages nommées contenant les valeurs de la colonne
B qui ont respectivement 1, 2 et 3 en colonne A (+ 3 pour la colonne C
avec 1 en colonne A + 3 en colonne D....)
idem mardi. En fait il y a une vingtaine de plages nommées dans chaque
colonne x une dizaine correspondant aux différents types de valeurs pour
un même échantillon !
Mais ta réflexio me fait réaliser que mon classeur va très vite bouffer
toutes mes ressources.
Finalement je vais peut être nommer mes plages par VBA à chaque mise à
jour des données...
merci de la réflexion

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Ave zoziau,

Le but c'est de faire tout ça automatiquement avec des plages qui changent de
jour en jour.....


Un avis...
Si la fonction DECALER présente un incontestable intérêt, ça n'est pas pour
autant la panacée quand il s'agit de définition de noms dans une base de données
car elle a un inconvénient de taille : c'est une fonction volatile !
Donc je te dis pas le nombre de recalculs qu'implique l'utilisation du fichier
surtout si, comme c'est bien souvent le cas, la fonction est combinée avec
d'autres comme NBVAL, NB.SI, EQUIV, MAX.... 1 à X appels de fonctions par
formule de définition des noms ça pèse...
Il me paraît plus intéressant et, à terme, plus efficace, de renommer les plages
à chaque "alimentation".
Si, ta base de données est (comme je le subodore) bien organisée (A1:XXxx et
noms de champ en ligne 1), une toute petite ligne de commande suffit à renommer
l'ensemble des champs en utilisant "CurrentRegion".
Exemple avec une feuille nommée BD :

[BD!A1].CurrentRegion.CreateNames Top:=True

A bientôt...

AV





Avatar
Misange
la très jolie soluce proposée par JB :

Nommage de champs 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
Set cellule = [A:A].Find(What:=c, After:=[A65000], LookIn:=xlFormulas,
SearchOrder:=xlByRows, SearchDirection:=xlNext)
ActiveWorkbook.Names.Add Name:="critere" & c, _
RefersTo:="=" & cellule.Offset(0,
1).Resize(Application.CountIf([A:A],
c), 1).Address
Next c
End Sub

court efficace, adopté et surement bientôt en ligne sur excelabo !

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

salut AV
De fait ma base est organisée suivant les règles de bonnes pratiques du
MPFE ;-)

ta réflexion est frappée au coin du bon sens en ce qui concerne la
gestion des ressources.
La soluce que tu proposes ne me convient pourtant pas car ce n'est pas
une base de données que j'ai besoin de nommer. Ce qui change c'est bien
sur la taille globale de la base mais surtout le nombre d'échantillons
de chaque type
ex : lundi
A B C D E
1 3.2 4 90 67
1 4
1 7
2 1.1
2 9
3 0

mardi
1 3.2
1 4
1 7
1 18
2 1.1
2 9
3 0
3 2
4 7

lundi je dois avoir 3 plages nommées contenant les valeurs de la colonne
B qui ont respectivement 1, 2 et 3 en colonne A (+ 3 pour la colonne C
avec 1 en colonne A + 3 en colonne D....)
idem mardi. En fait il y a une vingtaine de plages nommées dans chaque
colonne x une dizaine correspondant aux différents types de valeurs pour
un même échantillon !
Mais ta réflexio me fait réaliser que mon classeur va très vite bouffer
toutes mes ressources.
Finalement je vais peut être nommer mes plages par VBA à chaque mise à
jour des données...
merci de la réflexion

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Ave zoziau,

Le but c'est de faire tout ça automatiquement avec des plages qui
changent de jour en jour.....


Un avis...
Si la fonction DECALER présente un incontestable intérêt, ça n'est pas
pour autant la panacée quand il s'agit de définition de noms dans une
base de données car elle a un inconvénient de taille : c'est une
fonction volatile !
Donc je te dis pas le nombre de recalculs qu'implique l'utilisation du
fichier surtout si, comme c'est bien souvent le cas, la fonction est
combinée avec d'autres comme NBVAL, NB.SI, EQUIV, MAX.... 1 à X appels
de fonctions par formule de définition des noms ça pèse...
Il me paraît plus intéressant et, à terme, plus efficace, de renommer
les plages à chaque "alimentation".
Si, ta base de données est (comme je le subodore) bien organisée
(A1:XXxx et noms de champ en ligne 1), une toute petite ligne de
commande suffit à renommer l'ensemble des champs en utilisant
"CurrentRegion".
Exemple avec une feuille nommée BD :

[BD!A1].CurrentRegion.CreateNames Top:=True

A bientôt...

AV







Avatar
Misange
Les solutions retenues, par formule et par macro sont en ligne sur
excelabo !
merci :-)

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonjour,
J'ai un tableau comportant de grandes séries de données triées par
catégorie d'échantillon
les catégories sont les unes en dessous des autres sans espace
j'aurais besoin de nommer les plages de la colonne B en fonction du
critère de la colonne A
Et pour arranger le tout, ce serait encore mieux si c'était dynamique,
ce tableau grossissant de jour en jour...
A B
1 d
1 f
1 e
1 e
2 f
2 f
2 j
5 y
5 o
3 j
3 r
3 t

Si vous avez une idée, je suis très preneuse !
merci



Avatar
Daniel.M
Bonsoir Misange,

Voici du code VBA pour la même idée (en itérant sur l'ensemble des
colonnes).

Ici, on considère que la première rangée contient les titres des colonnes
(A1:J1 par exemple) et est nommée LesTitres.

Sub Nomme2()

Dim Plg As Range
Dim i As Long, j As Long
Dim Prev As Variant
Dim V As Variant

'' Enleve les Noms courants (au cas où les Plages rétrécissent)
'For i = ActiveWorkbook.Names.Count To 1 Step -1
' If ActiveWorkbook.Names(i).Name Like "Crit_*" Then
' ActiveWorkbook.Names(i).Delete
' End If
'Next i

' Ligne 1 contient les Titres => Donc, Plg commence en ligne A2
Set Plg = Range([A2], [A65000].End(xlUp))
ReDim V(1 To Plg.Rows.Count + 1) ' max d'entrées

Prev = ""
j = 1

For i = 1 To Plg.Rows.Count
If Plg(i).Value <> Prev Then
Prev = Plg(i).Value
V(j) = i
j = j + 1
End If
Next i
V(j) = i ' sentinelle servant au calcul de la dernière entrée

ReDim Preserve V(1 To j)

For i = 1 To UBound(V) - LBound(V)
For j = 1 To Range("LesTitres").Columns.Count
ActiveWorkbook.Names.Add Name:="Crit_" & Plg(V(i)) & "_" & _
Range("LesTitres")(1, 1)(1, j), _
RefersTo:="=" & Plg(V(i), j).Resize(V(i + 1) - V(i)).Address
Next j
Next i

End Sub

Salutations,

Daniel M.

"Misange" wrote in message
news:
la très jolie soluce proposée par JB :

Nommage de champs 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
Set cellule = [A:A].Find(What:=c, After:=[A65000], LookIn:=xlFormulas,
SearchOrder:=xlByRows, SearchDirection:=xlNext)
ActiveWorkbook.Names.Add Name:="critere" & c, _
RefersTo:="=" & cellule.Offset(0,
1).Resize(Application.CountIf([A:A],
c), 1).Address
Next c
End Sub

court efficace, adopté et surement bientôt en ligne sur excelabo !

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

salut AV
De fait ma base est organisée suivant les règles de bonnes pratiques du
MPFE ;-)

ta réflexion est frappée au coin du bon sens en ce qui concerne la
gestion des ressources.
La soluce que tu proposes ne me convient pourtant pas car ce n'est pas
une base de données que j'ai besoin de nommer. Ce qui change c'est bien
sur la taille globale de la base mais surtout le nombre d'échantillons de
chaque type
ex : lundi
A B C D E
1 3.2 4 90 67
1 4
1 7
2 1.1
2 9
3 0

mardi
1 3.2
1 4
1 7
1 18
2 1.1
2 9
3 0
3 2
4 7

lundi je dois avoir 3 plages nommées contenant les valeurs de la colonne
B qui ont respectivement 1, 2 et 3 en colonne A (+ 3 pour la colonne C
avec 1 en colonne A + 3 en colonne D....)
idem mardi. En fait il y a une vingtaine de plages nommées dans chaque
colonne x une dizaine correspondant aux différents types de valeurs pour
un même échantillon !
Mais ta réflexio me fait réaliser que mon classeur va très vite bouffer
toutes mes ressources.
Finalement je vais peut être nommer mes plages par VBA à chaque mise à
jour des données...
merci de la réflexion

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Ave zoziau,

Le but c'est de faire tout ça automatiquement avec des plages qui
changent de jour en jour.....


Un avis...
Si la fonction DECALER présente un incontestable intérêt, ça n'est pas
pour autant la panacée quand il s'agit de définition de noms dans une
base de données car elle a un inconvénient de taille : c'est une
fonction volatile !
Donc je te dis pas le nombre de recalculs qu'implique l'utilisation du
fichier surtout si, comme c'est bien souvent le cas, la fonction est
combinée avec d'autres comme NBVAL, NB.SI, EQUIV, MAX.... 1 à X appels
de fonctions par formule de définition des noms ça pèse...
Il me paraît plus intéressant et, à terme, plus efficace, de renommer
les plages à chaque "alimentation".
Si, ta base de données est (comme je le subodore) bien organisée
(A1:XXxx et noms de champ en ligne 1), une toute petite ligne de
commande suffit à renommer l'ensemble des champs en utilisant
"CurrentRegion".
Exemple avec une feuille nommée BD :

[BD!A1].CurrentRegion.CreateNames Top:=True

A bientôt...

AV









1 2