Bonjour à toutes et tous
Descriptif court du problème
Peut-on définir une plage par un nom suivant un tri
C'est-à-dire que dans une colonne A j'ai une série de noms
Dans une autre colonne B j'ai une catégorie (par exemple offer, order,
sale, paid, etc)
Y a-t-il moyen que la plage définie en colonne A ne prenne en compte que
ceux ou il y "offer" dans B
Descriptif long (même très long........)
Après avoir passé plusieurs mois à créer (grâce à vous) un tableau pour
suivi de vente,
j'ai décidé changer mon approche
En effet le nombre de feuilles et le transfère de lignes de feuilles en
feuille devient lourd
OUI JE SAIS
Avant de créer un fichier, que ce soit en Excel ou en Powerpoint,
il faut passer du temps à bien PREPARER son projet
Et à comprendre ce que l'on cherche à obtenir
Et les conséquences de ce qu'on va produire
Mais que ceux qui ne se sont jamais lancé sans trop réflechir me lance la
première pierre
:-)))) ou ;-(((( je ne sais pas
Revenons à nos moutons, comme disait Saint Exepury
Même si il ne faut pas toujours croire ce qu'ils disent, comme disait le
berger au ventriloque
Je travail avec des listbox pour sélectionner l'info requise
Par exemple sur la feuille Offre j'ai toute une série d'offres (une par
ligne)
Sur ma feuille consult-Offres je sélectionne une offre dans ma listbox
dont le Format-Control refère à un nom défini
par une formule du type
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
L'info de cet offre est mis en forme sur ma feuille ce qui la rends
compréhensible
Si l'offre est accepté, par macro (via bouton) je transfère cet info vers la
feuille Ordres
Et ainsi de suite lors de chaque étape de la procédure
Cela fonctionne mais suite à des changements, je dois insérer des nouvelles
étapes dans la procédure
Donc ce que j'envisage est ceci;
Je me demandais si je ne pouvais pas garder toute l'info sur une même
feuille
Toute en gardant le même format (une offre sur toute la ligne)
mais en ajoutant une colonne ou je pourrais insérer un code pour indiquer
l'étape de l'offre
Cela je pourrais le faire (je crois) grâce à tout ce que vous m'avez enfoncé
dans le crâne
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont à
l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Ce que j'aspire à réaliser est une feuille ou je pourrais visionner toutes
mes Offres, ou mes Ventes, ou mes payés
MAIS un TCD ne convient pas puisque je dois pouvoir changer l'info et
l'étape à tout moment
C'est-à-dire que je sélectionne une offre, et que quand elle est affichée je
puisse y faire des changements
Je ne sais pas si je suis assez clair
Mais j'espère pouvoir compter sur vous vos questions éventuelles
et surtout sur vos réponses
Un grand merci à vous
Rex
que ceux
Bonjour à toutes et tous
Descriptif court du problème
Peut-on définir une plage par un nom suivant un tri
C'est-à-dire que dans une colonne A j'ai une série de noms
Dans une autre colonne B j'ai une catégorie (par exemple offer, order,
sale, paid, etc)
Y a-t-il moyen que la plage définie en colonne A ne prenne en compte que
ceux ou il y "offer" dans B
Descriptif long (même très long........)
Après avoir passé plusieurs mois à créer (grâce à vous) un tableau pour
suivi de vente,
j'ai décidé changer mon approche
En effet le nombre de feuilles et le transfère de lignes de feuilles en
feuille devient lourd
OUI JE SAIS
Avant de créer un fichier, que ce soit en Excel ou en Powerpoint,
il faut passer du temps à bien PREPARER son projet
Et à comprendre ce que l'on cherche à obtenir
Et les conséquences de ce qu'on va produire
Mais que ceux qui ne se sont jamais lancé sans trop réflechir me lance la
première pierre
:-)))) ou ;-(((( je ne sais pas
Revenons à nos moutons, comme disait Saint Exepury
Même si il ne faut pas toujours croire ce qu'ils disent, comme disait le
berger au ventriloque
Je travail avec des listbox pour sélectionner l'info requise
Par exemple sur la feuille Offre j'ai toute une série d'offres (une par
ligne)
Sur ma feuille consult-Offres je sélectionne une offre dans ma listbox
dont le Format-Control refère à un nom défini
par une formule du type
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
L'info de cet offre est mis en forme sur ma feuille ce qui la rends
compréhensible
Si l'offre est accepté, par macro (via bouton) je transfère cet info vers la
feuille Ordres
Et ainsi de suite lors de chaque étape de la procédure
Cela fonctionne mais suite à des changements, je dois insérer des nouvelles
étapes dans la procédure
Donc ce que j'envisage est ceci;
Je me demandais si je ne pouvais pas garder toute l'info sur une même
feuille
Toute en gardant le même format (une offre sur toute la ligne)
mais en ajoutant une colonne ou je pourrais insérer un code pour indiquer
l'étape de l'offre
Cela je pourrais le faire (je crois) grâce à tout ce que vous m'avez enfoncé
dans le crâne
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont à
l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Ce que j'aspire à réaliser est une feuille ou je pourrais visionner toutes
mes Offres, ou mes Ventes, ou mes payés
MAIS un TCD ne convient pas puisque je dois pouvoir changer l'info et
l'étape à tout moment
C'est-à-dire que je sélectionne une offre, et que quand elle est affichée je
puisse y faire des changements
Je ne sais pas si je suis assez clair
Mais j'espère pouvoir compter sur vous vos questions éventuelles
et surtout sur vos réponses
Un grand merci à vous
Rex
que ceux
Bonjour à toutes et tous
Descriptif court du problème
Peut-on définir une plage par un nom suivant un tri
C'est-à-dire que dans une colonne A j'ai une série de noms
Dans une autre colonne B j'ai une catégorie (par exemple offer, order,
sale, paid, etc)
Y a-t-il moyen que la plage définie en colonne A ne prenne en compte que
ceux ou il y "offer" dans B
Descriptif long (même très long........)
Après avoir passé plusieurs mois à créer (grâce à vous) un tableau pour
suivi de vente,
j'ai décidé changer mon approche
En effet le nombre de feuilles et le transfère de lignes de feuilles en
feuille devient lourd
OUI JE SAIS
Avant de créer un fichier, que ce soit en Excel ou en Powerpoint,
il faut passer du temps à bien PREPARER son projet
Et à comprendre ce que l'on cherche à obtenir
Et les conséquences de ce qu'on va produire
Mais que ceux qui ne se sont jamais lancé sans trop réflechir me lance la
première pierre
:-)))) ou ;-(((( je ne sais pas
Revenons à nos moutons, comme disait Saint Exepury
Même si il ne faut pas toujours croire ce qu'ils disent, comme disait le
berger au ventriloque
Je travail avec des listbox pour sélectionner l'info requise
Par exemple sur la feuille Offre j'ai toute une série d'offres (une par
ligne)
Sur ma feuille consult-Offres je sélectionne une offre dans ma listbox
dont le Format-Control refère à un nom défini
par une formule du type
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
L'info de cet offre est mis en forme sur ma feuille ce qui la rends
compréhensible
Si l'offre est accepté, par macro (via bouton) je transfère cet info vers la
feuille Ordres
Et ainsi de suite lors de chaque étape de la procédure
Cela fonctionne mais suite à des changements, je dois insérer des nouvelles
étapes dans la procédure
Donc ce que j'envisage est ceci;
Je me demandais si je ne pouvais pas garder toute l'info sur une même
feuille
Toute en gardant le même format (une offre sur toute la ligne)
mais en ajoutant une colonne ou je pourrais insérer un code pour indiquer
l'étape de l'offre
Cela je pourrais le faire (je crois) grâce à tout ce que vous m'avez enfoncé
dans le crâne
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont à
l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Ce que j'aspire à réaliser est une feuille ou je pourrais visionner toutes
mes Offres, ou mes Ventes, ou mes payés
MAIS un TCD ne convient pas puisque je dois pouvoir changer l'info et
l'étape à tout moment
C'est-à-dire que je sélectionne une offre, et que quand elle est affichée je
puisse y faire des changements
Je ne sais pas si je suis assez clair
Mais j'espère pouvoir compter sur vous vos questions éventuelles
et surtout sur vos réponses
Un grand merci à vous
Rex
que ceux
Revenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint Éxupéry...
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont à
l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la sélection courante
Revenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint Éxupéry...
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont à
l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la sélection courante
Revenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint Éxupéry...
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont à
l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la sélection courante
Bonjour RexRevenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint
Éxupéry...
... Maiééêêêss ;-)Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la
sélection courante (à adapter avec ta colonne C) avec une valeur (à
choisir) puis constitue un nom par unions successives.
L'exemple crée 2 noms, l'un dans la colonne de la sélection, l'autre, pour
les mêmes lignes mais dans une colonne décalée.
Dim c As Range
Dim MonRange As Range ' Sous-sélection de la colonne
courante
Dim MonRangeAutreColonne As Range ' Sous-sélection décalée de la colonne
courante
Dim Decalage As Integer
Dim Etape As String
' Avant d'exécuter le code la sélection courante est supposée être une
colonne
Decalage = 1 ' A adapter
Etape = "Sale" ' A adapter
For Each c In Selection ' Selection courante à adapter
If c = Etape Then
If MonRange Is Nothing Then
Set MonRange = c
Set MonRangeAutreColonne = c.Offset(, Decalage)
Else
Set MonRange = Union(MonRange, c)
Set MonRangeAutreColonne = Union(MonRangeAutreColonne,
c.Offset(, Decalage))
End If
End If
Next
On Error Resume Next ' Gérer le cas d'une plage vide
ActiveWorkbook.Names.Add Name:="MonNom", RefersToR1C1:=MonRange
ActiveWorkbook.Names.Add Name:="MonAutreColonne",
RefersToR1C1:=MonRangeAutreColonne
Cordialement,
Trirème
Bonjour Rex
Revenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint
Éxupéry...
... Maiééêêêss ;-)
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la
sélection courante (à adapter avec ta colonne C) avec une valeur (à
choisir) puis constitue un nom par unions successives.
L'exemple crée 2 noms, l'un dans la colonne de la sélection, l'autre, pour
les mêmes lignes mais dans une colonne décalée.
Dim c As Range
Dim MonRange As Range ' Sous-sélection de la colonne
courante
Dim MonRangeAutreColonne As Range ' Sous-sélection décalée de la colonne
courante
Dim Decalage As Integer
Dim Etape As String
' Avant d'exécuter le code la sélection courante est supposée être une
colonne
Decalage = 1 ' A adapter
Etape = "Sale" ' A adapter
For Each c In Selection ' Selection courante à adapter
If c = Etape Then
If MonRange Is Nothing Then
Set MonRange = c
Set MonRangeAutreColonne = c.Offset(, Decalage)
Else
Set MonRange = Union(MonRange, c)
Set MonRangeAutreColonne = Union(MonRangeAutreColonne,
c.Offset(, Decalage))
End If
End If
Next
On Error Resume Next ' Gérer le cas d'une plage vide
ActiveWorkbook.Names.Add Name:="MonNom", RefersToR1C1:=MonRange
ActiveWorkbook.Names.Add Name:="MonAutreColonne",
RefersToR1C1:=MonRangeAutreColonne
Cordialement,
Trirème
Bonjour RexRevenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint
Éxupéry...
... Maiééêêêss ;-)Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la
sélection courante (à adapter avec ta colonne C) avec une valeur (à
choisir) puis constitue un nom par unions successives.
L'exemple crée 2 noms, l'un dans la colonne de la sélection, l'autre, pour
les mêmes lignes mais dans une colonne décalée.
Dim c As Range
Dim MonRange As Range ' Sous-sélection de la colonne
courante
Dim MonRangeAutreColonne As Range ' Sous-sélection décalée de la colonne
courante
Dim Decalage As Integer
Dim Etape As String
' Avant d'exécuter le code la sélection courante est supposée être une
colonne
Decalage = 1 ' A adapter
Etape = "Sale" ' A adapter
For Each c In Selection ' Selection courante à adapter
If c = Etape Then
If MonRange Is Nothing Then
Set MonRange = c
Set MonRangeAutreColonne = c.Offset(, Decalage)
Else
Set MonRange = Union(MonRange, c)
Set MonRangeAutreColonne = Union(MonRangeAutreColonne,
c.Offset(, Decalage))
End If
End If
Next
On Error Resume Next ' Gérer le cas d'une plage vide
ActiveWorkbook.Names.Add Name:="MonNom", RefersToR1C1:=MonRange
ActiveWorkbook.Names.Add Name:="MonAutreColonne",
RefersToR1C1:=MonRangeAutreColonne
Cordialement,
Trirème
Salut grand Rex
j'avais un pb à peu près similaire que j'ai résolu de la façon suivante :
j'alimente mon tableau principal et j'ai une tite macro qui
1) trie le tableau par offre (dans ton cas)
2) définit une série de noms (tu peux en mettre autant que tu veux ! qui
font référence aux valeurs des colonnes B, C, D, E ... qui ont la même
valeur pour offre
Ca me permet d'avoir des tableaux d'analyse de la table principale
construits une fois pour toute (si seulement !) avec ces noms. Ces
tableaux se mettent ainsi à jour tout seul (juste en cliquant sur le
bouton de mise à jour des noms définis).
voici le binz à adapter (attention aux coupures de lignes intempestives)
dans mon cas, ce sont les données de la conlonne C qui sont l'équivalent
de tes "offres".
Sub Nommer()
' Enleve les Noms courants (au cas où les Plages rétrécissent)
For i = ActiveWorkbook.Names.Count To 1 Step -1
ActiveWorkbook.Names(i).Delete
Next i
' on trie les données
Range("A1:O3000").Sort Key1:=Range("C2"), Order1:=xlAscending,
Key2:=Range _
("F2"), Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscending, _
Header:=xlGuess
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range([C2], [C65000].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:="truc" & c, _
RefersTo:="=" & [J2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
ActiveWorkbook.Names.Add Name:="machin" & c, _
RefersTo:="=" & [l2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
Next c
End Sub
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.netBonjour à toutes et tous
Descriptif court du problème
Peut-on définir une plage par un nom suivant un tri
C'est-à-dire que dans une colonne A j'ai une série de noms
Dans une autre colonne B j'ai une catégorie (par exemple offer, order,
sale, paid, etc)
Y a-t-il moyen que la plage définie en colonne A ne prenne en compte que
ceux ou il y "offer" dans B
Descriptif long (même très long........)
Après avoir passé plusieurs mois à créer (grâce à vous) un tableau pour
suivi de vente,
j'ai décidé changer mon approche
En effet le nombre de feuilles et le transfère de lignes de feuilles en
feuille devient lourd
OUI JE SAIS
Avant de créer un fichier, que ce soit en Excel ou en Powerpoint,
il faut passer du temps à bien PREPARER son projet
Et à comprendre ce que l'on cherche à obtenir
Et les conséquences de ce qu'on va produire
Mais que ceux qui ne se sont jamais lancé sans trop réflechir me lance la
première pierre
:-)))) ou ;-(((( je ne sais pas
Revenons à nos moutons, comme disait Saint Exepury
Même si il ne faut pas toujours croire ce qu'ils disent, comme disait le
berger au ventriloque
Je travail avec des listbox pour sélectionner l'info requise
Par exemple sur la feuille Offre j'ai toute une série d'offres (une par
ligne)
Sur ma feuille consult-Offres je sélectionne une offre dans ma listbox
dont le Format-Control refère à un nom défini
par une formule du type
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
L'info de cet offre est mis en forme sur ma feuille ce qui la rends
compréhensible
Si l'offre est accepté, par macro (via bouton) je transfère cet info vers
la feuille Ordres
Et ainsi de suite lors de chaque étape de la procédure
Cela fonctionne mais suite à des changements, je dois insérer des
nouvelles étapes dans la procédure
Donc ce que j'envisage est ceci;
Je me demandais si je ne pouvais pas garder toute l'info sur une même
feuille
Toute en gardant le même format (une offre sur toute la ligne)
mais en ajoutant une colonne ou je pourrais insérer un code pour indiquer
l'étape de l'offre
Cela je pourrais le faire (je crois) grâce à tout ce que vous m'avez
enfoncé dans le crâne
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Ce que j'aspire à réaliser est une feuille ou je pourrais visionner
toutes mes Offres, ou mes Ventes, ou mes payés
MAIS un TCD ne convient pas puisque je dois pouvoir changer l'info et
l'étape à tout moment
C'est-à-dire que je sélectionne une offre, et que quand elle est affichée
je puisse y faire des changements
Je ne sais pas si je suis assez clair
Mais j'espère pouvoir compter sur vous vos questions éventuelles
et surtout sur vos réponses
Un grand merci à vous
Rex
que ceux
Salut grand Rex
j'avais un pb à peu près similaire que j'ai résolu de la façon suivante :
j'alimente mon tableau principal et j'ai une tite macro qui
1) trie le tableau par offre (dans ton cas)
2) définit une série de noms (tu peux en mettre autant que tu veux ! qui
font référence aux valeurs des colonnes B, C, D, E ... qui ont la même
valeur pour offre
Ca me permet d'avoir des tableaux d'analyse de la table principale
construits une fois pour toute (si seulement !) avec ces noms. Ces
tableaux se mettent ainsi à jour tout seul (juste en cliquant sur le
bouton de mise à jour des noms définis).
voici le binz à adapter (attention aux coupures de lignes intempestives)
dans mon cas, ce sont les données de la conlonne C qui sont l'équivalent
de tes "offres".
Sub Nommer()
' Enleve les Noms courants (au cas où les Plages rétrécissent)
For i = ActiveWorkbook.Names.Count To 1 Step -1
ActiveWorkbook.Names(i).Delete
Next i
' on trie les données
Range("A1:O3000").Sort Key1:=Range("C2"), Order1:=xlAscending,
Key2:=Range _
("F2"), Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscending, _
Header:=xlGuess
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range([C2], [C65000].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:="truc" & c, _
RefersTo:="=" & [J2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
ActiveWorkbook.Names.Add Name:="machin" & c, _
RefersTo:="=" & [l2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
Next c
End Sub
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net
Bonjour à toutes et tous
Descriptif court du problème
Peut-on définir une plage par un nom suivant un tri
C'est-à-dire que dans une colonne A j'ai une série de noms
Dans une autre colonne B j'ai une catégorie (par exemple offer, order,
sale, paid, etc)
Y a-t-il moyen que la plage définie en colonne A ne prenne en compte que
ceux ou il y "offer" dans B
Descriptif long (même très long........)
Après avoir passé plusieurs mois à créer (grâce à vous) un tableau pour
suivi de vente,
j'ai décidé changer mon approche
En effet le nombre de feuilles et le transfère de lignes de feuilles en
feuille devient lourd
OUI JE SAIS
Avant de créer un fichier, que ce soit en Excel ou en Powerpoint,
il faut passer du temps à bien PREPARER son projet
Et à comprendre ce que l'on cherche à obtenir
Et les conséquences de ce qu'on va produire
Mais que ceux qui ne se sont jamais lancé sans trop réflechir me lance la
première pierre
:-)))) ou ;-(((( je ne sais pas
Revenons à nos moutons, comme disait Saint Exepury
Même si il ne faut pas toujours croire ce qu'ils disent, comme disait le
berger au ventriloque
Je travail avec des listbox pour sélectionner l'info requise
Par exemple sur la feuille Offre j'ai toute une série d'offres (une par
ligne)
Sur ma feuille consult-Offres je sélectionne une offre dans ma listbox
dont le Format-Control refère à un nom défini
par une formule du type
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
L'info de cet offre est mis en forme sur ma feuille ce qui la rends
compréhensible
Si l'offre est accepté, par macro (via bouton) je transfère cet info vers
la feuille Ordres
Et ainsi de suite lors de chaque étape de la procédure
Cela fonctionne mais suite à des changements, je dois insérer des
nouvelles étapes dans la procédure
Donc ce que j'envisage est ceci;
Je me demandais si je ne pouvais pas garder toute l'info sur une même
feuille
Toute en gardant le même format (une offre sur toute la ligne)
mais en ajoutant une colonne ou je pourrais insérer un code pour indiquer
l'étape de l'offre
Cela je pourrais le faire (je crois) grâce à tout ce que vous m'avez
enfoncé dans le crâne
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Ce que j'aspire à réaliser est une feuille ou je pourrais visionner
toutes mes Offres, ou mes Ventes, ou mes payés
MAIS un TCD ne convient pas puisque je dois pouvoir changer l'info et
l'étape à tout moment
C'est-à-dire que je sélectionne une offre, et que quand elle est affichée
je puisse y faire des changements
Je ne sais pas si je suis assez clair
Mais j'espère pouvoir compter sur vous vos questions éventuelles
et surtout sur vos réponses
Un grand merci à vous
Rex
que ceux
Salut grand Rex
j'avais un pb à peu près similaire que j'ai résolu de la façon suivante :
j'alimente mon tableau principal et j'ai une tite macro qui
1) trie le tableau par offre (dans ton cas)
2) définit une série de noms (tu peux en mettre autant que tu veux ! qui
font référence aux valeurs des colonnes B, C, D, E ... qui ont la même
valeur pour offre
Ca me permet d'avoir des tableaux d'analyse de la table principale
construits une fois pour toute (si seulement !) avec ces noms. Ces
tableaux se mettent ainsi à jour tout seul (juste en cliquant sur le
bouton de mise à jour des noms définis).
voici le binz à adapter (attention aux coupures de lignes intempestives)
dans mon cas, ce sont les données de la conlonne C qui sont l'équivalent
de tes "offres".
Sub Nommer()
' Enleve les Noms courants (au cas où les Plages rétrécissent)
For i = ActiveWorkbook.Names.Count To 1 Step -1
ActiveWorkbook.Names(i).Delete
Next i
' on trie les données
Range("A1:O3000").Sort Key1:=Range("C2"), Order1:=xlAscending,
Key2:=Range _
("F2"), Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscending, _
Header:=xlGuess
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range([C2], [C65000].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:="truc" & c, _
RefersTo:="=" & [J2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
ActiveWorkbook.Names.Add Name:="machin" & c, _
RefersTo:="=" & [l2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
Next c
End Sub
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.netBonjour à toutes et tous
Descriptif court du problème
Peut-on définir une plage par un nom suivant un tri
C'est-à-dire que dans une colonne A j'ai une série de noms
Dans une autre colonne B j'ai une catégorie (par exemple offer, order,
sale, paid, etc)
Y a-t-il moyen que la plage définie en colonne A ne prenne en compte que
ceux ou il y "offer" dans B
Descriptif long (même très long........)
Après avoir passé plusieurs mois à créer (grâce à vous) un tableau pour
suivi de vente,
j'ai décidé changer mon approche
En effet le nombre de feuilles et le transfère de lignes de feuilles en
feuille devient lourd
OUI JE SAIS
Avant de créer un fichier, que ce soit en Excel ou en Powerpoint,
il faut passer du temps à bien PREPARER son projet
Et à comprendre ce que l'on cherche à obtenir
Et les conséquences de ce qu'on va produire
Mais que ceux qui ne se sont jamais lancé sans trop réflechir me lance la
première pierre
:-)))) ou ;-(((( je ne sais pas
Revenons à nos moutons, comme disait Saint Exepury
Même si il ne faut pas toujours croire ce qu'ils disent, comme disait le
berger au ventriloque
Je travail avec des listbox pour sélectionner l'info requise
Par exemple sur la feuille Offre j'ai toute une série d'offres (une par
ligne)
Sur ma feuille consult-Offres je sélectionne une offre dans ma listbox
dont le Format-Control refère à un nom défini
par une formule du type
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
L'info de cet offre est mis en forme sur ma feuille ce qui la rends
compréhensible
Si l'offre est accepté, par macro (via bouton) je transfère cet info vers
la feuille Ordres
Et ainsi de suite lors de chaque étape de la procédure
Cela fonctionne mais suite à des changements, je dois insérer des
nouvelles étapes dans la procédure
Donc ce que j'envisage est ceci;
Je me demandais si je ne pouvais pas garder toute l'info sur une même
feuille
Toute en gardant le même format (une offre sur toute la ligne)
mais en ajoutant une colonne ou je pourrais insérer un code pour indiquer
l'étape de l'offre
Cela je pourrais le faire (je crois) grâce à tout ce que vous m'avez
enfoncé dans le crâne
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Ce que j'aspire à réaliser est une feuille ou je pourrais visionner
toutes mes Offres, ou mes Ventes, ou mes payés
MAIS un TCD ne convient pas puisque je dois pouvoir changer l'info et
l'étape à tout moment
C'est-à-dire que je sélectionne une offre, et que quand elle est affichée
je puisse y faire des changements
Je ne sais pas si je suis assez clair
Mais j'espère pouvoir compter sur vous vos questions éventuelles
et surtout sur vos réponses
Un grand merci à vous
Rex
que ceux
Salut grand Rex
j'avais un pb à peu près similaire que j'ai résolu de la façon suivante :
j'alimente mon tableau principal et j'ai une tite macro qui
1) trie le tableau par offre (dans ton cas)
2) définit une série de noms (tu peux en mettre autant que tu veux ! qui
font référence aux valeurs des colonnes B, C, D, E ... qui ont la même
valeur pour offre
Ca me permet d'avoir des tableaux d'analyse de la table principale
construits une fois pour toute (si seulement !) avec ces noms. Ces
tableaux se mettent ainsi à jour tout seul (juste en cliquant sur le
bouton de mise à jour des noms définis).
voici le binz à adapter (attention aux coupures de lignes intempestives)
dans mon cas, ce sont les données de la conlonne C qui sont l'équivalent
de tes "offres".
Sub Nommer()
' Enleve les Noms courants (au cas où les Plages rétrécissent)
For i = ActiveWorkbook.Names.Count To 1 Step -1
ActiveWorkbook.Names(i).Delete
Next i
' on trie les données
Range("A1:O3000").Sort Key1:=Range("C2"), Order1:=xlAscending,
Key2:=Range _
("F2"), Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscending, _
Header:=xlGuess
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range([C2], [C65000].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:="truc" & c, _
RefersTo:="=" & [J2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
ActiveWorkbook.Names.Add Name:="machin" & c, _
RefersTo:="=" & [l2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
Next c
End Sub
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.netBonjour à toutes et tous
Descriptif court du problème
Peut-on définir une plage par un nom suivant un tri
C'est-à-dire que dans une colonne A j'ai une série de noms
Dans une autre colonne B j'ai une catégorie (par exemple offer, order,
sale, paid, etc)
Y a-t-il moyen que la plage définie en colonne A ne prenne en compte que
ceux ou il y "offer" dans B
Descriptif long (même très long........)
Après avoir passé plusieurs mois à créer (grâce à vous) un tableau pour
suivi de vente,
j'ai décidé changer mon approche
En effet le nombre de feuilles et le transfère de lignes de feuilles en
feuille devient lourd
OUI JE SAIS
Avant de créer un fichier, que ce soit en Excel ou en Powerpoint,
il faut passer du temps à bien PREPARER son projet
Et à comprendre ce que l'on cherche à obtenir
Et les conséquences de ce qu'on va produire
Mais que ceux qui ne se sont jamais lancé sans trop réflechir me lance la
première pierre
:-)))) ou ;-(((( je ne sais pas
Revenons à nos moutons, comme disait Saint Exepury
Même si il ne faut pas toujours croire ce qu'ils disent, comme disait le
berger au ventriloque
Je travail avec des listbox pour sélectionner l'info requise
Par exemple sur la feuille Offre j'ai toute une série d'offres (une par
ligne)
Sur ma feuille consult-Offres je sélectionne une offre dans ma listbox
dont le Format-Control refère à un nom défini
par une formule du type
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
L'info de cet offre est mis en forme sur ma feuille ce qui la rends
compréhensible
Si l'offre est accepté, par macro (via bouton) je transfère cet info vers
la feuille Ordres
Et ainsi de suite lors de chaque étape de la procédure
Cela fonctionne mais suite à des changements, je dois insérer des
nouvelles étapes dans la procédure
Donc ce que j'envisage est ceci;
Je me demandais si je ne pouvais pas garder toute l'info sur une même
feuille
Toute en gardant le même format (une offre sur toute la ligne)
mais en ajoutant une colonne ou je pourrais insérer un code pour indiquer
l'étape de l'offre
Cela je pourrais le faire (je crois) grâce à tout ce que vous m'avez
enfoncé dans le crâne
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Ce que j'aspire à réaliser est une feuille ou je pourrais visionner
toutes mes Offres, ou mes Ventes, ou mes payés
MAIS un TCD ne convient pas puisque je dois pouvoir changer l'info et
l'étape à tout moment
C'est-à-dire que je sélectionne une offre, et que quand elle est affichée
je puisse y faire des changements
Je ne sais pas si je suis assez clair
Mais j'espère pouvoir compter sur vous vos questions éventuelles
et surtout sur vos réponses
Un grand merci à vous
Rex
que ceux
Salut grand Rex
j'avais un pb à peu près similaire que j'ai résolu de la façon suivante :
j'alimente mon tableau principal et j'ai une tite macro qui
1) trie le tableau par offre (dans ton cas)
2) définit une série de noms (tu peux en mettre autant que tu veux ! qui
font référence aux valeurs des colonnes B, C, D, E ... qui ont la même
valeur pour offre
Ca me permet d'avoir des tableaux d'analyse de la table principale
construits une fois pour toute (si seulement !) avec ces noms. Ces
tableaux se mettent ainsi à jour tout seul (juste en cliquant sur le
bouton de mise à jour des noms définis).
voici le binz à adapter (attention aux coupures de lignes intempestives)
dans mon cas, ce sont les données de la conlonne C qui sont l'équivalent
de tes "offres".
Sub Nommer()
' Enleve les Noms courants (au cas où les Plages rétrécissent)
For i = ActiveWorkbook.Names.Count To 1 Step -1
ActiveWorkbook.Names(i).Delete
Next i
' on trie les données
Range("A1:O3000").Sort Key1:=Range("C2"), Order1:=xlAscending,
Key2:=Range _
("F2"), Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscending, _
Header:=xlGuess
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range([C2], [C65000].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:="truc" & c, _
RefersTo:="=" & [J2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
ActiveWorkbook.Names.Add Name:="machin" & c, _
RefersTo:="=" & [l2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
Next c
End Sub
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net
Bonjour à toutes et tous
Descriptif court du problème
Peut-on définir une plage par un nom suivant un tri
C'est-à-dire que dans une colonne A j'ai une série de noms
Dans une autre colonne B j'ai une catégorie (par exemple offer, order,
sale, paid, etc)
Y a-t-il moyen que la plage définie en colonne A ne prenne en compte que
ceux ou il y "offer" dans B
Descriptif long (même très long........)
Après avoir passé plusieurs mois à créer (grâce à vous) un tableau pour
suivi de vente,
j'ai décidé changer mon approche
En effet le nombre de feuilles et le transfère de lignes de feuilles en
feuille devient lourd
OUI JE SAIS
Avant de créer un fichier, que ce soit en Excel ou en Powerpoint,
il faut passer du temps à bien PREPARER son projet
Et à comprendre ce que l'on cherche à obtenir
Et les conséquences de ce qu'on va produire
Mais que ceux qui ne se sont jamais lancé sans trop réflechir me lance la
première pierre
:-)))) ou ;-(((( je ne sais pas
Revenons à nos moutons, comme disait Saint Exepury
Même si il ne faut pas toujours croire ce qu'ils disent, comme disait le
berger au ventriloque
Je travail avec des listbox pour sélectionner l'info requise
Par exemple sur la feuille Offre j'ai toute une série d'offres (une par
ligne)
Sur ma feuille consult-Offres je sélectionne une offre dans ma listbox
dont le Format-Control refère à un nom défini
par une formule du type
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
L'info de cet offre est mis en forme sur ma feuille ce qui la rends
compréhensible
Si l'offre est accepté, par macro (via bouton) je transfère cet info vers
la feuille Ordres
Et ainsi de suite lors de chaque étape de la procédure
Cela fonctionne mais suite à des changements, je dois insérer des
nouvelles étapes dans la procédure
Donc ce que j'envisage est ceci;
Je me demandais si je ne pouvais pas garder toute l'info sur une même
feuille
Toute en gardant le même format (une offre sur toute la ligne)
mais en ajoutant une colonne ou je pourrais insérer un code pour indiquer
l'étape de l'offre
Cela je pourrais le faire (je crois) grâce à tout ce que vous m'avez
enfoncé dans le crâne
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Ce que j'aspire à réaliser est une feuille ou je pourrais visionner
toutes mes Offres, ou mes Ventes, ou mes payés
MAIS un TCD ne convient pas puisque je dois pouvoir changer l'info et
l'étape à tout moment
C'est-à-dire que je sélectionne une offre, et que quand elle est affichée
je puisse y faire des changements
Je ne sais pas si je suis assez clair
Mais j'espère pouvoir compter sur vous vos questions éventuelles
et surtout sur vos réponses
Un grand merci à vous
Rex
que ceux
Salut grand Rex
j'avais un pb à peu près similaire que j'ai résolu de la façon suivante :
j'alimente mon tableau principal et j'ai une tite macro qui
1) trie le tableau par offre (dans ton cas)
2) définit une série de noms (tu peux en mettre autant que tu veux ! qui
font référence aux valeurs des colonnes B, C, D, E ... qui ont la même
valeur pour offre
Ca me permet d'avoir des tableaux d'analyse de la table principale
construits une fois pour toute (si seulement !) avec ces noms. Ces
tableaux se mettent ainsi à jour tout seul (juste en cliquant sur le
bouton de mise à jour des noms définis).
voici le binz à adapter (attention aux coupures de lignes intempestives)
dans mon cas, ce sont les données de la conlonne C qui sont l'équivalent
de tes "offres".
Sub Nommer()
' Enleve les Noms courants (au cas où les Plages rétrécissent)
For i = ActiveWorkbook.Names.Count To 1 Step -1
ActiveWorkbook.Names(i).Delete
Next i
' on trie les données
Range("A1:O3000").Sort Key1:=Range("C2"), Order1:=xlAscending,
Key2:=Range _
("F2"), Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscending, _
Header:=xlGuess
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range([C2], [C65000].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:="truc" & c, _
RefersTo:="=" & [J2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
ActiveWorkbook.Names.Add Name:="machin" & c, _
RefersTo:="=" & [l2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
Next c
End Sub
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.netBonjour à toutes et tous
Descriptif court du problème
Peut-on définir une plage par un nom suivant un tri
C'est-à-dire que dans une colonne A j'ai une série de noms
Dans une autre colonne B j'ai une catégorie (par exemple offer, order,
sale, paid, etc)
Y a-t-il moyen que la plage définie en colonne A ne prenne en compte que
ceux ou il y "offer" dans B
Descriptif long (même très long........)
Après avoir passé plusieurs mois à créer (grâce à vous) un tableau pour
suivi de vente,
j'ai décidé changer mon approche
En effet le nombre de feuilles et le transfère de lignes de feuilles en
feuille devient lourd
OUI JE SAIS
Avant de créer un fichier, que ce soit en Excel ou en Powerpoint,
il faut passer du temps à bien PREPARER son projet
Et à comprendre ce que l'on cherche à obtenir
Et les conséquences de ce qu'on va produire
Mais que ceux qui ne se sont jamais lancé sans trop réflechir me lance la
première pierre
:-)))) ou ;-(((( je ne sais pas
Revenons à nos moutons, comme disait Saint Exepury
Même si il ne faut pas toujours croire ce qu'ils disent, comme disait le
berger au ventriloque
Je travail avec des listbox pour sélectionner l'info requise
Par exemple sur la feuille Offre j'ai toute une série d'offres (une par
ligne)
Sur ma feuille consult-Offres je sélectionne une offre dans ma listbox
dont le Format-Control refère à un nom défini
par une formule du type
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
L'info de cet offre est mis en forme sur ma feuille ce qui la rends
compréhensible
Si l'offre est accepté, par macro (via bouton) je transfère cet info vers
la feuille Ordres
Et ainsi de suite lors de chaque étape de la procédure
Cela fonctionne mais suite à des changements, je dois insérer des
nouvelles étapes dans la procédure
Donc ce que j'envisage est ceci;
Je me demandais si je ne pouvais pas garder toute l'info sur une même
feuille
Toute en gardant le même format (une offre sur toute la ligne)
mais en ajoutant une colonne ou je pourrais insérer un code pour indiquer
l'étape de l'offre
Cela je pourrais le faire (je crois) grâce à tout ce que vous m'avez
enfoncé dans le crâne
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Ce que j'aspire à réaliser est une feuille ou je pourrais visionner
toutes mes Offres, ou mes Ventes, ou mes payés
MAIS un TCD ne convient pas puisque je dois pouvoir changer l'info et
l'étape à tout moment
C'est-à-dire que je sélectionne une offre, et que quand elle est affichée
je puisse y faire des changements
Je ne sais pas si je suis assez clair
Mais j'espère pouvoir compter sur vous vos questions éventuelles
et surtout sur vos réponses
Un grand merci à vous
Rex
que ceux
Bonjour RexRevenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint
Éxupéry...
... Maiééêêêss ;-)Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la
sélection courante (à adapter avec ta colonne C) avec une valeur (à
choisir) puis constitue un nom par unions successives.
L'exemple crée 2 noms, l'un dans la colonne de la sélection, l'autre, pour
les mêmes lignes mais dans une colonne décalée.
Dim c As Range
Dim MonRange As Range ' Sous-sélection de la colonne
courante
Dim MonRangeAutreColonne As Range ' Sous-sélection décalée de la colonne
courante
Dim Decalage As Integer
Dim Etape As String
' Avant d'exécuter le code la sélection courante est supposée être une
colonne
Decalage = 1 ' A adapter
Etape = "Sale" ' A adapter
For Each c In Selection ' Selection courante à adapter
If c = Etape Then
If MonRange Is Nothing Then
Set MonRange = c
Set MonRangeAutreColonne = c.Offset(, Decalage)
Else
Set MonRange = Union(MonRange, c)
Set MonRangeAutreColonne = Union(MonRangeAutreColonne,
c.Offset(, Decalage))
End If
End If
Next
On Error Resume Next ' Gérer le cas d'une plage vide
ActiveWorkbook.Names.Add Name:="MonNom", RefersToR1C1:=MonRange
ActiveWorkbook.Names.Add Name:="MonAutreColonne",
RefersToR1C1:=MonRangeAutreColonne
Cordialement,
Trirème
Bonjour Rex
Revenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint
Éxupéry...
... Maiééêêêss ;-)
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la
sélection courante (à adapter avec ta colonne C) avec une valeur (à
choisir) puis constitue un nom par unions successives.
L'exemple crée 2 noms, l'un dans la colonne de la sélection, l'autre, pour
les mêmes lignes mais dans une colonne décalée.
Dim c As Range
Dim MonRange As Range ' Sous-sélection de la colonne
courante
Dim MonRangeAutreColonne As Range ' Sous-sélection décalée de la colonne
courante
Dim Decalage As Integer
Dim Etape As String
' Avant d'exécuter le code la sélection courante est supposée être une
colonne
Decalage = 1 ' A adapter
Etape = "Sale" ' A adapter
For Each c In Selection ' Selection courante à adapter
If c = Etape Then
If MonRange Is Nothing Then
Set MonRange = c
Set MonRangeAutreColonne = c.Offset(, Decalage)
Else
Set MonRange = Union(MonRange, c)
Set MonRangeAutreColonne = Union(MonRangeAutreColonne,
c.Offset(, Decalage))
End If
End If
Next
On Error Resume Next ' Gérer le cas d'une plage vide
ActiveWorkbook.Names.Add Name:="MonNom", RefersToR1C1:=MonRange
ActiveWorkbook.Names.Add Name:="MonAutreColonne",
RefersToR1C1:=MonRangeAutreColonne
Cordialement,
Trirème
Bonjour RexRevenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint
Éxupéry...
... Maiééêêêss ;-)Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la
sélection courante (à adapter avec ta colonne C) avec une valeur (à
choisir) puis constitue un nom par unions successives.
L'exemple crée 2 noms, l'un dans la colonne de la sélection, l'autre, pour
les mêmes lignes mais dans une colonne décalée.
Dim c As Range
Dim MonRange As Range ' Sous-sélection de la colonne
courante
Dim MonRangeAutreColonne As Range ' Sous-sélection décalée de la colonne
courante
Dim Decalage As Integer
Dim Etape As String
' Avant d'exécuter le code la sélection courante est supposée être une
colonne
Decalage = 1 ' A adapter
Etape = "Sale" ' A adapter
For Each c In Selection ' Selection courante à adapter
If c = Etape Then
If MonRange Is Nothing Then
Set MonRange = c
Set MonRangeAutreColonne = c.Offset(, Decalage)
Else
Set MonRange = Union(MonRange, c)
Set MonRangeAutreColonne = Union(MonRangeAutreColonne,
c.Offset(, Decalage))
End If
End If
Next
On Error Resume Next ' Gérer le cas d'une plage vide
ActiveWorkbook.Names.Add Name:="MonNom", RefersToR1C1:=MonRange
ActiveWorkbook.Names.Add Name:="MonAutreColonne",
RefersToR1C1:=MonRangeAutreColonne
Cordialement,
Trirème
Bonjour à toi
Mais comme je viens de le signaler à Misange
Je ne parviens pas à suivre vos propositions
J'ai jamais compris ces trucs comme integrer et String
Parfois, avec beaucoup de chance et de chipot, j'arrive à faire des trucs
mais ici le cerveau refuse toute co-opération
Donc voici un petit fichier tronqué
Si tu as le temps et la gentillesse de me pousser dans le bon sens
Je te serais très reconnaissant
A bientôt
Rex ;-)))) )))
http://cjoint.com/?ihp0OiWnhX
"Trirème" a écrit dans le message de news:Bonjour RexRevenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint
Éxupéry...
... Maiééêêêss ;-)Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la
sélection courante (à adapter avec ta colonne C) avec une valeur (à
choisir) puis constitue un nom par unions successives.
L'exemple crée 2 noms, l'un dans la colonne de la sélection, l'autre, pour
les mêmes lignes mais dans une colonne décalée.
Dim c As Range
Dim MonRange As Range ' Sous-sélection de la colonne
courante
Dim MonRangeAutreColonne As Range ' Sous-sélection décalée de la colonne
courante
Dim Decalage As Integer
Dim Etape As String
' Avant d'exécuter le code la sélection courante est supposée être une
colonne
Decalage = 1 ' A adapter
Etape = "Sale" ' A adapter
For Each c In Selection ' Selection courante à adapter
If c = Etape Then
If MonRange Is Nothing Then
Set MonRange = c
Set MonRangeAutreColonne = c.Offset(, Decalage)
Else
Set MonRange = Union(MonRange, c)
Set MonRangeAutreColonne = Union(MonRangeAutreColonne,
c.Offset(, Decalage))
End If
End If
Next
On Error Resume Next ' Gérer le cas d'une plage vide
ActiveWorkbook.Names.Add Name:="MonNom", RefersToR1C1:=MonRange
ActiveWorkbook.Names.Add Name:="MonAutreColonne",
RefersToR1C1:=MonRangeAutreColonne
Cordialement,
Trirème
Bonjour à toi
Mais comme je viens de le signaler à Misange
Je ne parviens pas à suivre vos propositions
J'ai jamais compris ces trucs comme integrer et String
Parfois, avec beaucoup de chance et de chipot, j'arrive à faire des trucs
mais ici le cerveau refuse toute co-opération
Donc voici un petit fichier tronqué
Si tu as le temps et la gentillesse de me pousser dans le bon sens
Je te serais très reconnaissant
A bientôt
Rex ;-)))) )))
http://cjoint.com/?ihp0OiWnhX
"Trirème" <NoOne@EvryOuer.fr> a écrit dans le message de news:
e3RhiOO2HHA.1100@TK2MSFTNGP06.phx.gbl...
Bonjour Rex
Revenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint
Éxupéry...
... Maiééêêêss ;-)
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la
sélection courante (à adapter avec ta colonne C) avec une valeur (à
choisir) puis constitue un nom par unions successives.
L'exemple crée 2 noms, l'un dans la colonne de la sélection, l'autre, pour
les mêmes lignes mais dans une colonne décalée.
Dim c As Range
Dim MonRange As Range ' Sous-sélection de la colonne
courante
Dim MonRangeAutreColonne As Range ' Sous-sélection décalée de la colonne
courante
Dim Decalage As Integer
Dim Etape As String
' Avant d'exécuter le code la sélection courante est supposée être une
colonne
Decalage = 1 ' A adapter
Etape = "Sale" ' A adapter
For Each c In Selection ' Selection courante à adapter
If c = Etape Then
If MonRange Is Nothing Then
Set MonRange = c
Set MonRangeAutreColonne = c.Offset(, Decalage)
Else
Set MonRange = Union(MonRange, c)
Set MonRangeAutreColonne = Union(MonRangeAutreColonne,
c.Offset(, Decalage))
End If
End If
Next
On Error Resume Next ' Gérer le cas d'une plage vide
ActiveWorkbook.Names.Add Name:="MonNom", RefersToR1C1:=MonRange
ActiveWorkbook.Names.Add Name:="MonAutreColonne",
RefersToR1C1:=MonRangeAutreColonne
Cordialement,
Trirème
Bonjour à toi
Mais comme je viens de le signaler à Misange
Je ne parviens pas à suivre vos propositions
J'ai jamais compris ces trucs comme integrer et String
Parfois, avec beaucoup de chance et de chipot, j'arrive à faire des trucs
mais ici le cerveau refuse toute co-opération
Donc voici un petit fichier tronqué
Si tu as le temps et la gentillesse de me pousser dans le bon sens
Je te serais très reconnaissant
A bientôt
Rex ;-)))) )))
http://cjoint.com/?ihp0OiWnhX
"Trirème" a écrit dans le message de news:Bonjour RexRevenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint
Éxupéry...
... Maiééêêêss ;-)Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la
sélection courante (à adapter avec ta colonne C) avec une valeur (à
choisir) puis constitue un nom par unions successives.
L'exemple crée 2 noms, l'un dans la colonne de la sélection, l'autre, pour
les mêmes lignes mais dans une colonne décalée.
Dim c As Range
Dim MonRange As Range ' Sous-sélection de la colonne
courante
Dim MonRangeAutreColonne As Range ' Sous-sélection décalée de la colonne
courante
Dim Decalage As Integer
Dim Etape As String
' Avant d'exécuter le code la sélection courante est supposée être une
colonne
Decalage = 1 ' A adapter
Etape = "Sale" ' A adapter
For Each c In Selection ' Selection courante à adapter
If c = Etape Then
If MonRange Is Nothing Then
Set MonRange = c
Set MonRangeAutreColonne = c.Offset(, Decalage)
Else
Set MonRange = Union(MonRange, c)
Set MonRangeAutreColonne = Union(MonRangeAutreColonne,
c.Offset(, Decalage))
End If
End If
Next
On Error Resume Next ' Gérer le cas d'une plage vide
ActiveWorkbook.Names.Add Name:="MonNom", RefersToR1C1:=MonRange
ActiveWorkbook.Names.Add Name:="MonAutreColonne",
RefersToR1C1:=MonRangeAutreColonne
Cordialement,
Trirème
Bonsoir Grand Bavard
Je te propose le fichier suivant http://cjoint.com/?iicjUaMJq8
Il n'est pas basé sur des listbox mais sur des listes de validation.
En I4 tu choisiras un statut parmi la liste de validation.
En I6 tu choisiras une offre parmi la liste correspondant au statut
choisi. Cette 2ème liste est créée de manière dynamique par une procédure
événementielle.
J'ai ajouté 4 noms dans le classeur, dont un nom dynamique (DECALER).
Cette procédure événementielle parait lourde mais j'ai essayé de la rendre
indépendante de la position des données dans 'Datas'.
Les formules paraissent lourdes également pour la même raison.
Si tu veux l'adapter à ton classeur, il suffit d'y créer les quatre noms,
de copier le code événementiel dans l'onglet 'Consultation' (clic droit,
visualiser le code) et d'ajuster les noms dans la partie initialisation
Cordialement,
TrirèmeBonjour à toi
Mais comme je viens de le signaler à Misange
Je ne parviens pas à suivre vos propositions
J'ai jamais compris ces trucs comme integrer et String
Parfois, avec beaucoup de chance et de chipot, j'arrive à faire des trucs
mais ici le cerveau refuse toute co-opération
Donc voici un petit fichier tronqué
Si tu as le temps et la gentillesse de me pousser dans le bon sens
Je te serais très reconnaissant
A bientôt
Rex ;-)))) )))
http://cjoint.com/?ihp0OiWnhX
"Trirème" a écrit dans le message de news:Bonjour RexRevenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint
Éxupéry...
... Maiééêêêss ;-)Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui
sont à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la
sélection courante (à adapter avec ta colonne C) avec une valeur (à
choisir) puis constitue un nom par unions successives.
L'exemple crée 2 noms, l'un dans la colonne de la sélection, l'autre,
pour les mêmes lignes mais dans une colonne décalée.
Dim c As Range
Dim MonRange As Range ' Sous-sélection de la colonne
courante
Dim MonRangeAutreColonne As Range ' Sous-sélection décalée de la
colonne courante
Dim Decalage As Integer
Dim Etape As String
' Avant d'exécuter le code la sélection courante est supposée être une
colonne
Decalage = 1 ' A adapter
Etape = "Sale" ' A adapter
For Each c In Selection ' Selection courante à adapter
If c = Etape Then
If MonRange Is Nothing Then
Set MonRange = c
Set MonRangeAutreColonne = c.Offset(, Decalage)
Else
Set MonRange = Union(MonRange, c)
Set MonRangeAutreColonne = Union(MonRangeAutreColonne,
c.Offset(, Decalage))
End If
End If
Next
On Error Resume Next ' Gérer le cas d'une plage vide
ActiveWorkbook.Names.Add Name:="MonNom", RefersToR1C1:=MonRange
ActiveWorkbook.Names.Add Name:="MonAutreColonne",
RefersToR1C1:=MonRangeAutreColonne
Cordialement,
Trirème
Bonsoir Grand Bavard
Je te propose le fichier suivant http://cjoint.com/?iicjUaMJq8
Il n'est pas basé sur des listbox mais sur des listes de validation.
En I4 tu choisiras un statut parmi la liste de validation.
En I6 tu choisiras une offre parmi la liste correspondant au statut
choisi. Cette 2ème liste est créée de manière dynamique par une procédure
événementielle.
J'ai ajouté 4 noms dans le classeur, dont un nom dynamique (DECALER).
Cette procédure événementielle parait lourde mais j'ai essayé de la rendre
indépendante de la position des données dans 'Datas'.
Les formules paraissent lourdes également pour la même raison.
Si tu veux l'adapter à ton classeur, il suffit d'y créer les quatre noms,
de copier le code événementiel dans l'onglet 'Consultation' (clic droit,
visualiser le code) et d'ajuster les noms dans la partie initialisation
Cordialement,
Trirème
Bonjour à toi
Mais comme je viens de le signaler à Misange
Je ne parviens pas à suivre vos propositions
J'ai jamais compris ces trucs comme integrer et String
Parfois, avec beaucoup de chance et de chipot, j'arrive à faire des trucs
mais ici le cerveau refuse toute co-opération
Donc voici un petit fichier tronqué
Si tu as le temps et la gentillesse de me pousser dans le bon sens
Je te serais très reconnaissant
A bientôt
Rex ;-)))) )))
http://cjoint.com/?ihp0OiWnhX
"Trirème" <NoOne@EvryOuer.fr> a écrit dans le message de news:
e3RhiOO2HHA.1100@TK2MSFTNGP06.phx.gbl...
Bonjour Rex
Revenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint
Éxupéry...
... Maiééêêêss ;-)
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui
sont à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la
sélection courante (à adapter avec ta colonne C) avec une valeur (à
choisir) puis constitue un nom par unions successives.
L'exemple crée 2 noms, l'un dans la colonne de la sélection, l'autre,
pour les mêmes lignes mais dans une colonne décalée.
Dim c As Range
Dim MonRange As Range ' Sous-sélection de la colonne
courante
Dim MonRangeAutreColonne As Range ' Sous-sélection décalée de la
colonne courante
Dim Decalage As Integer
Dim Etape As String
' Avant d'exécuter le code la sélection courante est supposée être une
colonne
Decalage = 1 ' A adapter
Etape = "Sale" ' A adapter
For Each c In Selection ' Selection courante à adapter
If c = Etape Then
If MonRange Is Nothing Then
Set MonRange = c
Set MonRangeAutreColonne = c.Offset(, Decalage)
Else
Set MonRange = Union(MonRange, c)
Set MonRangeAutreColonne = Union(MonRangeAutreColonne,
c.Offset(, Decalage))
End If
End If
Next
On Error Resume Next ' Gérer le cas d'une plage vide
ActiveWorkbook.Names.Add Name:="MonNom", RefersToR1C1:=MonRange
ActiveWorkbook.Names.Add Name:="MonAutreColonne",
RefersToR1C1:=MonRangeAutreColonne
Cordialement,
Trirème
Bonsoir Grand Bavard
Je te propose le fichier suivant http://cjoint.com/?iicjUaMJq8
Il n'est pas basé sur des listbox mais sur des listes de validation.
En I4 tu choisiras un statut parmi la liste de validation.
En I6 tu choisiras une offre parmi la liste correspondant au statut
choisi. Cette 2ème liste est créée de manière dynamique par une procédure
événementielle.
J'ai ajouté 4 noms dans le classeur, dont un nom dynamique (DECALER).
Cette procédure événementielle parait lourde mais j'ai essayé de la rendre
indépendante de la position des données dans 'Datas'.
Les formules paraissent lourdes également pour la même raison.
Si tu veux l'adapter à ton classeur, il suffit d'y créer les quatre noms,
de copier le code événementiel dans l'onglet 'Consultation' (clic droit,
visualiser le code) et d'ajuster les noms dans la partie initialisation
Cordialement,
TrirèmeBonjour à toi
Mais comme je viens de le signaler à Misange
Je ne parviens pas à suivre vos propositions
J'ai jamais compris ces trucs comme integrer et String
Parfois, avec beaucoup de chance et de chipot, j'arrive à faire des trucs
mais ici le cerveau refuse toute co-opération
Donc voici un petit fichier tronqué
Si tu as le temps et la gentillesse de me pousser dans le bon sens
Je te serais très reconnaissant
A bientôt
Rex ;-)))) )))
http://cjoint.com/?ihp0OiWnhX
"Trirème" a écrit dans le message de news:Bonjour RexRevenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint
Éxupéry...
... Maiééêêêss ;-)Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui
sont à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la
sélection courante (à adapter avec ta colonne C) avec une valeur (à
choisir) puis constitue un nom par unions successives.
L'exemple crée 2 noms, l'un dans la colonne de la sélection, l'autre,
pour les mêmes lignes mais dans une colonne décalée.
Dim c As Range
Dim MonRange As Range ' Sous-sélection de la colonne
courante
Dim MonRangeAutreColonne As Range ' Sous-sélection décalée de la
colonne courante
Dim Decalage As Integer
Dim Etape As String
' Avant d'exécuter le code la sélection courante est supposée être une
colonne
Decalage = 1 ' A adapter
Etape = "Sale" ' A adapter
For Each c In Selection ' Selection courante à adapter
If c = Etape Then
If MonRange Is Nothing Then
Set MonRange = c
Set MonRangeAutreColonne = c.Offset(, Decalage)
Else
Set MonRange = Union(MonRange, c)
Set MonRangeAutreColonne = Union(MonRangeAutreColonne,
c.Offset(, Decalage))
End If
End If
Next
On Error Resume Next ' Gérer le cas d'une plage vide
ActiveWorkbook.Names.Add Name:="MonNom", RefersToR1C1:=MonRange
ActiveWorkbook.Names.Add Name:="MonAutreColonne",
RefersToR1C1:=MonRangeAutreColonne
Cordialement,
Trirème
Bonsoir Grand Bavard
Je te propose le fichier suivant http://cjoint.com/?iicjUaMJq8
Il n'est pas basé sur des listbox mais sur des listes de validation.
En I4 tu choisiras un statut parmi la liste de validation.
En I6 tu choisiras une offre parmi la liste correspondant au statut
choisi. Cette 2ème liste est créée de manière dynamique par une procédure
événementielle.
J'ai ajouté 4 noms dans le classeur, dont un nom dynamique (DECALER).
Cette procédure événementielle parait lourde mais j'ai essayé de la rendre
indépendante de la position des données dans 'Datas'.
Les formules paraissent lourdes également pour la même raison.
Si tu veux l'adapter à ton classeur, il suffit d'y créer les quatre noms,
de copier le code événementiel dans l'onglet 'Consultation' (clic droit,
visualiser le code) et d'ajuster les noms dans la partie initialisation
Cordialement,
TrirèmeBonjour à toi
Mais comme je viens de le signaler à Misange
Je ne parviens pas à suivre vos propositions
J'ai jamais compris ces trucs comme integrer et String
Parfois, avec beaucoup de chance et de chipot, j'arrive à faire des trucs
mais ici le cerveau refuse toute co-opération
Donc voici un petit fichier tronqué
Si tu as le temps et la gentillesse de me pousser dans le bon sens
Je te serais très reconnaissant
A bientôt
Rex ;-)))) )))
http://cjoint.com/?ihp0OiWnhX
"Trirème" a écrit dans le message de news:Bonjour RexRevenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint
Éxupéry...
... Maiééêêêss ;-)Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui
sont à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la
sélection courante (à adapter avec ta colonne C) avec une valeur (à
choisir) puis constitue un nom par unions successives.
L'exemple crée 2 noms, l'un dans la colonne de la sélection, l'autre,
pour les mêmes lignes mais dans une colonne décalée.
Dim c As Range
Dim MonRange As Range ' Sous-sélection de la colonne
courante
Dim MonRangeAutreColonne As Range ' Sous-sélection décalée de la
colonne courante
Dim Decalage As Integer
Dim Etape As String
' Avant d'exécuter le code la sélection courante est supposée être une
colonne
Decalage = 1 ' A adapter
Etape = "Sale" ' A adapter
For Each c In Selection ' Selection courante à adapter
If c = Etape Then
If MonRange Is Nothing Then
Set MonRange = c
Set MonRangeAutreColonne = c.Offset(, Decalage)
Else
Set MonRange = Union(MonRange, c)
Set MonRangeAutreColonne = Union(MonRangeAutreColonne,
c.Offset(, Decalage))
End If
End If
Next
On Error Resume Next ' Gérer le cas d'une plage vide
ActiveWorkbook.Names.Add Name:="MonNom", RefersToR1C1:=MonRange
ActiveWorkbook.Names.Add Name:="MonAutreColonne",
RefersToR1C1:=MonRangeAutreColonne
Cordialement,
Trirème
Bonsoir Grand Bavard
Je te propose le fichier suivant http://cjoint.com/?iicjUaMJq8
Il n'est pas basé sur des listbox mais sur des listes de validation.
En I4 tu choisiras un statut parmi la liste de validation.
En I6 tu choisiras une offre parmi la liste correspondant au statut
choisi. Cette 2ème liste est créée de manière dynamique par une procédure
événementielle.
J'ai ajouté 4 noms dans le classeur, dont un nom dynamique (DECALER).
Cette procédure événementielle parait lourde mais j'ai essayé de la rendre
indépendante de la position des données dans 'Datas'.
Les formules paraissent lourdes également pour la même raison.
Si tu veux l'adapter à ton classeur, il suffit d'y créer les quatre noms,
de copier le code événementiel dans l'onglet 'Consultation' (clic droit,
visualiser le code) et d'ajuster les noms dans la partie initialisation
Cordialement,
Trirème
Bonjour à toi
Mais comme je viens de le signaler à Misange
Je ne parviens pas à suivre vos propositions
J'ai jamais compris ces trucs comme integrer et String
Parfois, avec beaucoup de chance et de chipot, j'arrive à faire des trucs
mais ici le cerveau refuse toute co-opération
Donc voici un petit fichier tronqué
Si tu as le temps et la gentillesse de me pousser dans le bon sens
Je te serais très reconnaissant
A bientôt
Rex ;-)))) )))
http://cjoint.com/?ihp0OiWnhX
"Trirème" <NoOne@EvryOuer.fr> a écrit dans le message de news:
e3RhiOO2HHA.1100@TK2MSFTNGP06.phx.gbl...
Bonjour Rex
Revenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint
Éxupéry...
... Maiééêêêss ;-)
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui
sont à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la
sélection courante (à adapter avec ta colonne C) avec une valeur (à
choisir) puis constitue un nom par unions successives.
L'exemple crée 2 noms, l'un dans la colonne de la sélection, l'autre,
pour les mêmes lignes mais dans une colonne décalée.
Dim c As Range
Dim MonRange As Range ' Sous-sélection de la colonne
courante
Dim MonRangeAutreColonne As Range ' Sous-sélection décalée de la
colonne courante
Dim Decalage As Integer
Dim Etape As String
' Avant d'exécuter le code la sélection courante est supposée être une
colonne
Decalage = 1 ' A adapter
Etape = "Sale" ' A adapter
For Each c In Selection ' Selection courante à adapter
If c = Etape Then
If MonRange Is Nothing Then
Set MonRange = c
Set MonRangeAutreColonne = c.Offset(, Decalage)
Else
Set MonRange = Union(MonRange, c)
Set MonRangeAutreColonne = Union(MonRangeAutreColonne,
c.Offset(, Decalage))
End If
End If
Next
On Error Resume Next ' Gérer le cas d'une plage vide
ActiveWorkbook.Names.Add Name:="MonNom", RefersToR1C1:=MonRange
ActiveWorkbook.Names.Add Name:="MonAutreColonne",
RefersToR1C1:=MonRangeAutreColonne
Cordialement,
Trirème
Bonsoir Grand Bavard
Je te propose le fichier suivant http://cjoint.com/?iicjUaMJq8
Il n'est pas basé sur des listbox mais sur des listes de validation.
En I4 tu choisiras un statut parmi la liste de validation.
En I6 tu choisiras une offre parmi la liste correspondant au statut
choisi. Cette 2ème liste est créée de manière dynamique par une procédure
événementielle.
J'ai ajouté 4 noms dans le classeur, dont un nom dynamique (DECALER).
Cette procédure événementielle parait lourde mais j'ai essayé de la rendre
indépendante de la position des données dans 'Datas'.
Les formules paraissent lourdes également pour la même raison.
Si tu veux l'adapter à ton classeur, il suffit d'y créer les quatre noms,
de copier le code événementiel dans l'onglet 'Consultation' (clic droit,
visualiser le code) et d'ajuster les noms dans la partie initialisation
Cordialement,
TrirèmeBonjour à toi
Mais comme je viens de le signaler à Misange
Je ne parviens pas à suivre vos propositions
J'ai jamais compris ces trucs comme integrer et String
Parfois, avec beaucoup de chance et de chipot, j'arrive à faire des trucs
mais ici le cerveau refuse toute co-opération
Donc voici un petit fichier tronqué
Si tu as le temps et la gentillesse de me pousser dans le bon sens
Je te serais très reconnaissant
A bientôt
Rex ;-)))) )))
http://cjoint.com/?ihp0OiWnhX
"Trirème" a écrit dans le message de news:Bonjour RexRevenons à nos moutons, comme disait Saint Exepury
Je ne connais pas ce type, par contre je connais son cousin, Saint
Éxupéry...
... Maiééêêêss ;-)Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui
sont à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Je te propose une boucle qui parcourt et compare chaque cellule de la
sélection courante (à adapter avec ta colonne C) avec une valeur (à
choisir) puis constitue un nom par unions successives.
L'exemple crée 2 noms, l'un dans la colonne de la sélection, l'autre,
pour les mêmes lignes mais dans une colonne décalée.
Dim c As Range
Dim MonRange As Range ' Sous-sélection de la colonne
courante
Dim MonRangeAutreColonne As Range ' Sous-sélection décalée de la
colonne courante
Dim Decalage As Integer
Dim Etape As String
' Avant d'exécuter le code la sélection courante est supposée être une
colonne
Decalage = 1 ' A adapter
Etape = "Sale" ' A adapter
For Each c In Selection ' Selection courante à adapter
If c = Etape Then
If MonRange Is Nothing Then
Set MonRange = c
Set MonRangeAutreColonne = c.Offset(, Decalage)
Else
Set MonRange = Union(MonRange, c)
Set MonRangeAutreColonne = Union(MonRangeAutreColonne,
c.Offset(, Decalage))
End If
End If
Next
On Error Resume Next ' Gérer le cas d'une plage vide
ActiveWorkbook.Names.Add Name:="MonNom", RefersToR1C1:=MonRange
ActiveWorkbook.Names.Add Name:="MonAutreColonne",
RefersToR1C1:=MonRangeAutreColonne
Cordialement,
Trirème
Salut grand Rex
j'avais un pb à peu près similaire que j'ai résolu de la façon suivante :
j'alimente mon tableau principal et j'ai une tite macro qui
1) trie le tableau par offre (dans ton cas)
2) définit une série de noms (tu peux en mettre autant que tu veux ! qui
font référence aux valeurs des colonnes B, C, D, E ... qui ont la même
valeur pour offre
Ca me permet d'avoir des tableaux d'analyse de la table principale
construits une fois pour toute (si seulement !) avec ces noms. Ces
tableaux se mettent ainsi à jour tout seul (juste en cliquant sur le
bouton de mise à jour des noms définis).
voici le binz à adapter (attention aux coupures de lignes intempestives)
dans mon cas, ce sont les données de la conlonne C qui sont l'équivalent
de tes "offres".
Sub Nommer()
' Enleve les Noms courants (au cas où les Plages rétrécissent)
For i = ActiveWorkbook.Names.Count To 1 Step -1
ActiveWorkbook.Names(i).Delete
Next i
' on trie les données
Range("A1:O3000").Sort Key1:=Range("C2"), Order1:=xlAscending,
Key2:=Range _
("F2"), Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscending, _
Header:=xlGuess
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range([C2], [C65000].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:="truc" & c, _
RefersTo:="=" & [J2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
ActiveWorkbook.Names.Add Name:="machin" & c, _
RefersTo:="=" & [l2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
Next c
End Sub
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.netBonjour à toutes et tous
Descriptif court du problème
Peut-on définir une plage par un nom suivant un tri
C'est-à-dire que dans une colonne A j'ai une série de noms
Dans une autre colonne B j'ai une catégorie (par exemple offer, order,
sale, paid, etc)
Y a-t-il moyen que la plage définie en colonne A ne prenne en compte que
ceux ou il y "offer" dans B
Descriptif long (même très long........)
Après avoir passé plusieurs mois à créer (grâce à vous) un tableau pour
suivi de vente,
j'ai décidé changer mon approche
En effet le nombre de feuilles et le transfère de lignes de feuilles en
feuille devient lourd
OUI JE SAIS
Avant de créer un fichier, que ce soit en Excel ou en Powerpoint,
il faut passer du temps à bien PREPARER son projet
Et à comprendre ce que l'on cherche à obtenir
Et les conséquences de ce qu'on va produire
Mais que ceux qui ne se sont jamais lancé sans trop réflechir me lance la
première pierre
:-)))) ou ;-(((( je ne sais pas
Revenons à nos moutons, comme disait Saint Exepury
Même si il ne faut pas toujours croire ce qu'ils disent, comme disait le
berger au ventriloque
Je travail avec des listbox pour sélectionner l'info requise
Par exemple sur la feuille Offre j'ai toute une série d'offres (une par
ligne)
Sur ma feuille consult-Offres je sélectionne une offre dans ma listbox
dont le Format-Control refère à un nom défini
par une formule du type
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
L'info de cet offre est mis en forme sur ma feuille ce qui la rends
compréhensible
Si l'offre est accepté, par macro (via bouton) je transfère cet info vers
la feuille Ordres
Et ainsi de suite lors de chaque étape de la procédure
Cela fonctionne mais suite à des changements, je dois insérer des
nouvelles étapes dans la procédure
Donc ce que j'envisage est ceci;
Je me demandais si je ne pouvais pas garder toute l'info sur une même
feuille
Toute en gardant le même format (une offre sur toute la ligne)
mais en ajoutant une colonne ou je pourrais insérer un code pour indiquer
l'étape de l'offre
Cela je pourrais le faire (je crois) grâce à tout ce que vous m'avez
enfoncé dans le crâne
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Ce que j'aspire à réaliser est une feuille ou je pourrais visionner
toutes mes Offres, ou mes Ventes, ou mes payés
MAIS un TCD ne convient pas puisque je dois pouvoir changer l'info et
l'étape à tout moment
C'est-à-dire que je sélectionne une offre, et que quand elle est affichée
je puisse y faire des changements
Je ne sais pas si je suis assez clair
Mais j'espère pouvoir compter sur vous vos questions éventuelles
et surtout sur vos réponses
Un grand merci à vous
Rex
que ceux
Salut grand Rex
j'avais un pb à peu près similaire que j'ai résolu de la façon suivante :
j'alimente mon tableau principal et j'ai une tite macro qui
1) trie le tableau par offre (dans ton cas)
2) définit une série de noms (tu peux en mettre autant que tu veux ! qui
font référence aux valeurs des colonnes B, C, D, E ... qui ont la même
valeur pour offre
Ca me permet d'avoir des tableaux d'analyse de la table principale
construits une fois pour toute (si seulement !) avec ces noms. Ces
tableaux se mettent ainsi à jour tout seul (juste en cliquant sur le
bouton de mise à jour des noms définis).
voici le binz à adapter (attention aux coupures de lignes intempestives)
dans mon cas, ce sont les données de la conlonne C qui sont l'équivalent
de tes "offres".
Sub Nommer()
' Enleve les Noms courants (au cas où les Plages rétrécissent)
For i = ActiveWorkbook.Names.Count To 1 Step -1
ActiveWorkbook.Names(i).Delete
Next i
' on trie les données
Range("A1:O3000").Sort Key1:=Range("C2"), Order1:=xlAscending,
Key2:=Range _
("F2"), Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscending, _
Header:=xlGuess
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range([C2], [C65000].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:="truc" & c, _
RefersTo:="=" & [J2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
ActiveWorkbook.Names.Add Name:="machin" & c, _
RefersTo:="=" & [l2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
Next c
End Sub
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net
Bonjour à toutes et tous
Descriptif court du problème
Peut-on définir une plage par un nom suivant un tri
C'est-à-dire que dans une colonne A j'ai une série de noms
Dans une autre colonne B j'ai une catégorie (par exemple offer, order,
sale, paid, etc)
Y a-t-il moyen que la plage définie en colonne A ne prenne en compte que
ceux ou il y "offer" dans B
Descriptif long (même très long........)
Après avoir passé plusieurs mois à créer (grâce à vous) un tableau pour
suivi de vente,
j'ai décidé changer mon approche
En effet le nombre de feuilles et le transfère de lignes de feuilles en
feuille devient lourd
OUI JE SAIS
Avant de créer un fichier, que ce soit en Excel ou en Powerpoint,
il faut passer du temps à bien PREPARER son projet
Et à comprendre ce que l'on cherche à obtenir
Et les conséquences de ce qu'on va produire
Mais que ceux qui ne se sont jamais lancé sans trop réflechir me lance la
première pierre
:-)))) ou ;-(((( je ne sais pas
Revenons à nos moutons, comme disait Saint Exepury
Même si il ne faut pas toujours croire ce qu'ils disent, comme disait le
berger au ventriloque
Je travail avec des listbox pour sélectionner l'info requise
Par exemple sur la feuille Offre j'ai toute une série d'offres (une par
ligne)
Sur ma feuille consult-Offres je sélectionne une offre dans ma listbox
dont le Format-Control refère à un nom défini
par une formule du type
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
L'info de cet offre est mis en forme sur ma feuille ce qui la rends
compréhensible
Si l'offre est accepté, par macro (via bouton) je transfère cet info vers
la feuille Ordres
Et ainsi de suite lors de chaque étape de la procédure
Cela fonctionne mais suite à des changements, je dois insérer des
nouvelles étapes dans la procédure
Donc ce que j'envisage est ceci;
Je me demandais si je ne pouvais pas garder toute l'info sur une même
feuille
Toute en gardant le même format (une offre sur toute la ligne)
mais en ajoutant une colonne ou je pourrais insérer un code pour indiquer
l'étape de l'offre
Cela je pourrais le faire (je crois) grâce à tout ce que vous m'avez
enfoncé dans le crâne
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Ce que j'aspire à réaliser est une feuille ou je pourrais visionner
toutes mes Offres, ou mes Ventes, ou mes payés
MAIS un TCD ne convient pas puisque je dois pouvoir changer l'info et
l'étape à tout moment
C'est-à-dire que je sélectionne une offre, et que quand elle est affichée
je puisse y faire des changements
Je ne sais pas si je suis assez clair
Mais j'espère pouvoir compter sur vous vos questions éventuelles
et surtout sur vos réponses
Un grand merci à vous
Rex
que ceux
Salut grand Rex
j'avais un pb à peu près similaire que j'ai résolu de la façon suivante :
j'alimente mon tableau principal et j'ai une tite macro qui
1) trie le tableau par offre (dans ton cas)
2) définit une série de noms (tu peux en mettre autant que tu veux ! qui
font référence aux valeurs des colonnes B, C, D, E ... qui ont la même
valeur pour offre
Ca me permet d'avoir des tableaux d'analyse de la table principale
construits une fois pour toute (si seulement !) avec ces noms. Ces
tableaux se mettent ainsi à jour tout seul (juste en cliquant sur le
bouton de mise à jour des noms définis).
voici le binz à adapter (attention aux coupures de lignes intempestives)
dans mon cas, ce sont les données de la conlonne C qui sont l'équivalent
de tes "offres".
Sub Nommer()
' Enleve les Noms courants (au cas où les Plages rétrécissent)
For i = ActiveWorkbook.Names.Count To 1 Step -1
ActiveWorkbook.Names(i).Delete
Next i
' on trie les données
Range("A1:O3000").Sort Key1:=Range("C2"), Order1:=xlAscending,
Key2:=Range _
("F2"), Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscending, _
Header:=xlGuess
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range([C2], [C65000].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:="truc" & c, _
RefersTo:="=" & [J2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
ActiveWorkbook.Names.Add Name:="machin" & c, _
RefersTo:="=" & [l2].Offset(Application.Match(c, [C:C], 0) - 2,
0).Resize(Application.CountIf([C:C], c), 1).Address
Next c
End Sub
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.netBonjour à toutes et tous
Descriptif court du problème
Peut-on définir une plage par un nom suivant un tri
C'est-à-dire que dans une colonne A j'ai une série de noms
Dans une autre colonne B j'ai une catégorie (par exemple offer, order,
sale, paid, etc)
Y a-t-il moyen que la plage définie en colonne A ne prenne en compte que
ceux ou il y "offer" dans B
Descriptif long (même très long........)
Après avoir passé plusieurs mois à créer (grâce à vous) un tableau pour
suivi de vente,
j'ai décidé changer mon approche
En effet le nombre de feuilles et le transfère de lignes de feuilles en
feuille devient lourd
OUI JE SAIS
Avant de créer un fichier, que ce soit en Excel ou en Powerpoint,
il faut passer du temps à bien PREPARER son projet
Et à comprendre ce que l'on cherche à obtenir
Et les conséquences de ce qu'on va produire
Mais que ceux qui ne se sont jamais lancé sans trop réflechir me lance la
première pierre
:-)))) ou ;-(((( je ne sais pas
Revenons à nos moutons, comme disait Saint Exepury
Même si il ne faut pas toujours croire ce qu'ils disent, comme disait le
berger au ventriloque
Je travail avec des listbox pour sélectionner l'info requise
Par exemple sur la feuille Offre j'ai toute une série d'offres (une par
ligne)
Sur ma feuille consult-Offres je sélectionne une offre dans ma listbox
dont le Format-Control refère à un nom défini
par une formule du type
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
L'info de cet offre est mis en forme sur ma feuille ce qui la rends
compréhensible
Si l'offre est accepté, par macro (via bouton) je transfère cet info vers
la feuille Ordres
Et ainsi de suite lors de chaque étape de la procédure
Cela fonctionne mais suite à des changements, je dois insérer des
nouvelles étapes dans la procédure
Donc ce que j'envisage est ceci;
Je me demandais si je ne pouvais pas garder toute l'info sur une même
feuille
Toute en gardant le même format (une offre sur toute la ligne)
mais en ajoutant une colonne ou je pourrais insérer un code pour indiquer
l'étape de l'offre
Cela je pourrais le faire (je crois) grâce à tout ce que vous m'avez
enfoncé dans le crâne
Mais ensuite je voudrais pouvoir appeller par exemple tout ceux qui sont
à l'étape Sale
Donc je voudrais définir un nom dont la plage serait par exemple
=OFFSET(Offers!$C$2;2;0;COUNTA(Offers!$C:$C)-1;1)
MAIS seulement si la colonne CC contient le terme "Sale"
Ce que j'aspire à réaliser est une feuille ou je pourrais visionner
toutes mes Offres, ou mes Ventes, ou mes payés
MAIS un TCD ne convient pas puisque je dois pouvoir changer l'info et
l'étape à tout moment
C'est-à-dire que je sélectionne une offre, et que quand elle est affichée
je puisse y faire des changements
Je ne sais pas si je suis assez clair
Mais j'espère pouvoir compter sur vous vos questions éventuelles
et surtout sur vos réponses
Un grand merci à vous
Rex
que ceux