Salut...
J'ai un code pour remplir une liste déroulante de manière
dynamique.
A savoir
Dans un module:
Public gstrRangeListe as string
-----------------------------------------
Public Sub RemplirListe(ByRef frm as UserForm, sh as
String, rge as String, cbo as String)
Worksheets(sh).Activate
frm.Controls(cbo).RowSource = Worksheets(sh).Range
(rge).Address
et sur mon Userform_Activate le code suivant:
Range("A1").Activate
gstrRangeListe = "A1:A" & Selection.End(xlDown).Row
Call RemplirListe (frmNewContact, "data",
gstrRangeListe, "cboTitre")
Me.cboTitre.ListIndex =0
Sur mes cellules, j'ai respectivement Mademoiselle, Madame
Monsieur en A1,A2,A3...
Excel cependant prend en considération les liges jusqu'à l
a ligne 65536...
???????? tout essayer, je deviend fou...
Merci de votre aide... (même un autre code, pourvu^'il
puisse être dynamique si je rajoute quelque chose dans la
liste déroulant
Merci de votre aide
er merci d'avance
Salut...
J'ai un code pour remplir une liste déroulante de manière
dynamique.
A savoir
Dans un module:
Public gstrRangeListe as string
-----------------------------------------
Public Sub RemplirListe(ByRef frm as UserForm, sh as
String, rge as String, cbo as String)
Worksheets(sh).Activate
frm.Controls(cbo).RowSource = Worksheets(sh).Range
(rge).Address
et sur mon Userform_Activate le code suivant:
Range("A1").Activate
gstrRangeListe = "A1:A" & Selection.End(xlDown).Row
Call RemplirListe (frmNewContact, "data",
gstrRangeListe, "cboTitre")
Me.cboTitre.ListIndex =0
Sur mes cellules, j'ai respectivement Mademoiselle, Madame
Monsieur en A1,A2,A3...
Excel cependant prend en considération les liges jusqu'à l
a ligne 65536...
???????? tout essayer, je deviend fou...
Merci de votre aide... (même un autre code, pourvu^'il
puisse être dynamique si je rajoute quelque chose dans la
liste déroulant
Merci de votre aide
er merci d'avance
Salut...
J'ai un code pour remplir une liste déroulante de manière
dynamique.
A savoir
Dans un module:
Public gstrRangeListe as string
-----------------------------------------
Public Sub RemplirListe(ByRef frm as UserForm, sh as
String, rge as String, cbo as String)
Worksheets(sh).Activate
frm.Controls(cbo).RowSource = Worksheets(sh).Range
(rge).Address
et sur mon Userform_Activate le code suivant:
Range("A1").Activate
gstrRangeListe = "A1:A" & Selection.End(xlDown).Row
Call RemplirListe (frmNewContact, "data",
gstrRangeListe, "cboTitre")
Me.cboTitre.ListIndex =0
Sur mes cellules, j'ai respectivement Mademoiselle, Madame
Monsieur en A1,A2,A3...
Excel cependant prend en considération les liges jusqu'à l
a ligne 65536...
???????? tout essayer, je deviend fou...
Merci de votre aide... (même un autre code, pourvu^'il
puisse être dynamique si je rajoute quelque chose dans la
liste déroulant
Merci de votre aide
er merci d'avance
Bonjour,
Pour rendre ton code *dynamique*, nul besoin d'une macro compliquée :
Dans le userform_initialize (ou ailleurs suivant tes besoins), tu écris
maliste.rowsource=("mafeuille!maliste")
Dans excel (pas VBA) tu écris les données servant de source à ta liste
dans la feuille mafeuille, par exemple dans la colonne A, les unes en
dessous des autres et sans vides.
Tu sélectionnes ces données
menu insertion/nom.définir
dans la case en haut tu tapes "maliste" et dans la case du bas, là ou
est écrit un truc genre "A1:A23", tu effaces ce qui est inscrit et à la
place tu tapes
Þcaler($A$1;;;nbval($A:$A)) et tu cliques sur ajouter. Sans quitter
cette fenêtre tu vérifies que tu as bien fait comme il faut simplement
en recliquant dans la formule. Tu dois voir un pointillé entourer les
valeurs de ta colonne A.
Maintenant, c'est magique, grace à la formule décaler, si tu ajoutes un
nom dans cette liste, il va automatiquement être pris en compte dans le
nom "maliste" et ajouté sans rien faire dans ta liste sur ton userform.
Essaie, tu verras c'est vraiment ce qu'il y a une plus simple une fois
qu'on a cessé d'avoir peur d'une tite formule décaler :-)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
le 03/11/2003 17:42:Salut...
J'ai un code pour remplir une liste déroulante de manière
dynamique.
A savoir
Dans un module:
Public gstrRangeListe as string
-----------------------------------------
Public Sub RemplirListe(ByRef frm as UserForm, sh as
String, rge as String, cbo as String)
Worksheets(sh).Activate
frm.Controls(cbo).RowSource = Worksheets(sh).Range
(rge).Address
et sur mon Userform_Activate le code suivant:
Range("A1").Activate
gstrRangeListe = "A1:A" & Selection.End(xlDown).Row
Call RemplirListe (frmNewContact, "data",
gstrRangeListe, "cboTitre")
Me.cboTitre.ListIndex =0
Sur mes cellules, j'ai respectivement Mademoiselle, Madame
Monsieur en A1,A2,A3...
Excel cependant prend en considération les liges jusqu'à l
a ligne 65536...
???????? tout essayer, je deviend fou...
Merci de votre aide... (même un autre code, pourvu^'il
puisse être dynamique si je rajoute quelque chose dans la
liste déroulant
Merci de votre aide
er merci d'avance
Bonjour,
Pour rendre ton code *dynamique*, nul besoin d'une macro compliquée :
Dans le userform_initialize (ou ailleurs suivant tes besoins), tu écris
maliste.rowsource=("mafeuille!maliste")
Dans excel (pas VBA) tu écris les données servant de source à ta liste
dans la feuille mafeuille, par exemple dans la colonne A, les unes en
dessous des autres et sans vides.
Tu sélectionnes ces données
menu insertion/nom.définir
dans la case en haut tu tapes "maliste" et dans la case du bas, là ou
est écrit un truc genre "A1:A23", tu effaces ce qui est inscrit et à la
place tu tapes
Þcaler($A$1;;;nbval($A:$A)) et tu cliques sur ajouter. Sans quitter
cette fenêtre tu vérifies que tu as bien fait comme il faut simplement
en recliquant dans la formule. Tu dois voir un pointillé entourer les
valeurs de ta colonne A.
Maintenant, c'est magique, grace à la formule décaler, si tu ajoutes un
nom dans cette liste, il va automatiquement être pris en compte dans le
nom "maliste" et ajouté sans rien faire dans ta liste sur ton userform.
Essaie, tu verras c'est vraiment ce qu'il y a une plus simple une fois
qu'on a cessé d'avoir peur d'une tite formule décaler :-)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
le 03/11/2003 17:42:
Salut...
J'ai un code pour remplir une liste déroulante de manière
dynamique.
A savoir
Dans un module:
Public gstrRangeListe as string
-----------------------------------------
Public Sub RemplirListe(ByRef frm as UserForm, sh as
String, rge as String, cbo as String)
Worksheets(sh).Activate
frm.Controls(cbo).RowSource = Worksheets(sh).Range
(rge).Address
et sur mon Userform_Activate le code suivant:
Range("A1").Activate
gstrRangeListe = "A1:A" & Selection.End(xlDown).Row
Call RemplirListe (frmNewContact, "data",
gstrRangeListe, "cboTitre")
Me.cboTitre.ListIndex =0
Sur mes cellules, j'ai respectivement Mademoiselle, Madame
Monsieur en A1,A2,A3...
Excel cependant prend en considération les liges jusqu'à l
a ligne 65536...
???????? tout essayer, je deviend fou...
Merci de votre aide... (même un autre code, pourvu^'il
puisse être dynamique si je rajoute quelque chose dans la
liste déroulant
Merci de votre aide
er merci d'avance
Bonjour,
Pour rendre ton code *dynamique*, nul besoin d'une macro compliquée :
Dans le userform_initialize (ou ailleurs suivant tes besoins), tu écris
maliste.rowsource=("mafeuille!maliste")
Dans excel (pas VBA) tu écris les données servant de source à ta liste
dans la feuille mafeuille, par exemple dans la colonne A, les unes en
dessous des autres et sans vides.
Tu sélectionnes ces données
menu insertion/nom.définir
dans la case en haut tu tapes "maliste" et dans la case du bas, là ou
est écrit un truc genre "A1:A23", tu effaces ce qui est inscrit et à la
place tu tapes
Þcaler($A$1;;;nbval($A:$A)) et tu cliques sur ajouter. Sans quitter
cette fenêtre tu vérifies que tu as bien fait comme il faut simplement
en recliquant dans la formule. Tu dois voir un pointillé entourer les
valeurs de ta colonne A.
Maintenant, c'est magique, grace à la formule décaler, si tu ajoutes un
nom dans cette liste, il va automatiquement être pris en compte dans le
nom "maliste" et ajouté sans rien faire dans ta liste sur ton userform.
Essaie, tu verras c'est vraiment ce qu'il y a une plus simple une fois
qu'on a cessé d'avoir peur d'une tite formule décaler :-)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
le 03/11/2003 17:42:Salut...
J'ai un code pour remplir une liste déroulante de manière
dynamique.
A savoir
Dans un module:
Public gstrRangeListe as string
-----------------------------------------
Public Sub RemplirListe(ByRef frm as UserForm, sh as
String, rge as String, cbo as String)
Worksheets(sh).Activate
frm.Controls(cbo).RowSource = Worksheets(sh).Range
(rge).Address
et sur mon Userform_Activate le code suivant:
Range("A1").Activate
gstrRangeListe = "A1:A" & Selection.End(xlDown).Row
Call RemplirListe (frmNewContact, "data",
gstrRangeListe, "cboTitre")
Me.cboTitre.ListIndex =0
Sur mes cellules, j'ai respectivement Mademoiselle, Madame
Monsieur en A1,A2,A3...
Excel cependant prend en considération les liges jusqu'à l
a ligne 65536...
???????? tout essayer, je deviend fou...
Merci de votre aide... (même un autre code, pourvu^'il
puisse être dynamique si je rajoute quelque chose dans la
liste déroulant
Merci de votre aide
er merci d'avance
1- quand je mets en pratique l'exemple,
Excel ne propose pas "maliste" dans la
"zone de nom" en haut, à gauche de la barre de formules.
2- j'ai eu besoin de faire la même manip,
mais en bas d'une feuille, sachant qu'il y avait
d'autres valeurs sans intérêt en haut de la colonne A;
1- quand je mets en pratique l'exemple,
Excel ne propose pas "maliste" dans la
"zone de nom" en haut, à gauche de la barre de formules.
2- j'ai eu besoin de faire la même manip,
mais en bas d'une feuille, sachant qu'il y avait
d'autres valeurs sans intérêt en haut de la colonne A;
1- quand je mets en pratique l'exemple,
Excel ne propose pas "maliste" dans la
"zone de nom" en haut, à gauche de la barre de formules.
2- j'ai eu besoin de faire la même manip,
mais en bas d'une feuille, sachant qu'il y avait
d'autres valeurs sans intérêt en haut de la colonne A;
-----Message d'origine-----
Bonjour,
Pour rendre ton code *dynamique*, nul besoin d'une macro
compliquée :
Dans le userform_initialize (ou ailleurs suivant tes
besoins), tu écris
maliste.rowsource=("mafeuille!maliste")
Dans excel (pas VBA) tu écris les données servant de
source à ta liste
dans la feuille mafeuille, par exemple dans la colonne A,
les unes en
dessous des autres et sans vides.
Tu sélectionnes ces données
menu insertion/nom.définir
dans la case en haut tu tapes "maliste" et dans la case
du bas, là ou
est écrit un truc genre "A1:A23", tu effaces ce qui est
inscrit et à la
place tu tapes
Þcaler($A$1;;;nbval($A:$A)) et tu cliques sur ajouter.
Sans quitter
cette fenêtre tu vérifies que tu as bien fait comme il
faut simplement
en recliquant dans la formule. Tu dois voir un pointillé
entourer les
valeurs de ta colonne A.
Maintenant, c'est magique, grace à la formule décaler, si
tu ajoutes un
nom dans cette liste, il va automatiquement être pris en
compte dans le
nom "maliste" et ajouté sans rien faire dans ta liste sur
ton userform.
Essaie, tu verras c'est vraiment ce qu'il y a une plus
simple une fois
qu'on a cessé d'avoir peur d'une tite formule décaler :-)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
le 03/11/2003 17:42:Salut...
J'ai un code pour remplir une liste déroulante de
manière
dynamique.
A savoir
Dans un module:
Public gstrRangeListe as string
-----------------------------------------
Public Sub RemplirListe(ByRef frm as UserForm, sh as
String, rge as String, cbo as String)
Worksheets(sh).Activate
frm.Controls(cbo).RowSource = Worksheets(sh).Range
(rge).Address
et sur mon Userform_Activate le code suivant:
Range("A1").Activate
gstrRangeListe = "A1:A" & Selection.End(xlDown).Row
Call RemplirListe (frmNewContact, "data",
gstrRangeListe, "cboTitre")
Me.cboTitre.ListIndex =0
Sur mes cellules, j'ai respectivement Mademoiselle,
Madame
Monsieur en A1,A2,A3...
Excel cependant prend en considération les liges
jusqu'à l
a ligne 65536...
???????? tout essayer, je deviend fou...
Merci de votre aide... (même un autre code, pourvu^'il
puisse être dynamique si je rajoute quelque chose dans
la
liste déroulant
Merci de votre aide
er merci d'avance
.
-----Message d'origine-----
Bonjour,
Pour rendre ton code *dynamique*, nul besoin d'une macro
compliquée :
Dans le userform_initialize (ou ailleurs suivant tes
besoins), tu écris
maliste.rowsource=("mafeuille!maliste")
Dans excel (pas VBA) tu écris les données servant de
source à ta liste
dans la feuille mafeuille, par exemple dans la colonne A,
les unes en
dessous des autres et sans vides.
Tu sélectionnes ces données
menu insertion/nom.définir
dans la case en haut tu tapes "maliste" et dans la case
du bas, là ou
est écrit un truc genre "A1:A23", tu effaces ce qui est
inscrit et à la
place tu tapes
=decaler($A$1;;;nbval($A:$A)) et tu cliques sur ajouter.
Sans quitter
cette fenêtre tu vérifies que tu as bien fait comme il
faut simplement
en recliquant dans la formule. Tu dois voir un pointillé
entourer les
valeurs de ta colonne A.
Maintenant, c'est magique, grace à la formule décaler, si
tu ajoutes un
nom dans cette liste, il va automatiquement être pris en
compte dans le
nom "maliste" et ajouté sans rien faire dans ta liste sur
ton userform.
Essaie, tu verras c'est vraiment ce qu'il y a une plus
simple une fois
qu'on a cessé d'avoir peur d'une tite formule décaler :-)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
le 03/11/2003 17:42:
Salut...
J'ai un code pour remplir une liste déroulante de
manière
dynamique.
A savoir
Dans un module:
Public gstrRangeListe as string
-----------------------------------------
Public Sub RemplirListe(ByRef frm as UserForm, sh as
String, rge as String, cbo as String)
Worksheets(sh).Activate
frm.Controls(cbo).RowSource = Worksheets(sh).Range
(rge).Address
et sur mon Userform_Activate le code suivant:
Range("A1").Activate
gstrRangeListe = "A1:A" & Selection.End(xlDown).Row
Call RemplirListe (frmNewContact, "data",
gstrRangeListe, "cboTitre")
Me.cboTitre.ListIndex =0
Sur mes cellules, j'ai respectivement Mademoiselle,
Madame
Monsieur en A1,A2,A3...
Excel cependant prend en considération les liges
jusqu'à l
a ligne 65536...
???????? tout essayer, je deviend fou...
Merci de votre aide... (même un autre code, pourvu^'il
puisse être dynamique si je rajoute quelque chose dans
la
liste déroulant
Merci de votre aide
er merci d'avance
.
-----Message d'origine-----
Bonjour,
Pour rendre ton code *dynamique*, nul besoin d'une macro
compliquée :
Dans le userform_initialize (ou ailleurs suivant tes
besoins), tu écris
maliste.rowsource=("mafeuille!maliste")
Dans excel (pas VBA) tu écris les données servant de
source à ta liste
dans la feuille mafeuille, par exemple dans la colonne A,
les unes en
dessous des autres et sans vides.
Tu sélectionnes ces données
menu insertion/nom.définir
dans la case en haut tu tapes "maliste" et dans la case
du bas, là ou
est écrit un truc genre "A1:A23", tu effaces ce qui est
inscrit et à la
place tu tapes
Þcaler($A$1;;;nbval($A:$A)) et tu cliques sur ajouter.
Sans quitter
cette fenêtre tu vérifies que tu as bien fait comme il
faut simplement
en recliquant dans la formule. Tu dois voir un pointillé
entourer les
valeurs de ta colonne A.
Maintenant, c'est magique, grace à la formule décaler, si
tu ajoutes un
nom dans cette liste, il va automatiquement être pris en
compte dans le
nom "maliste" et ajouté sans rien faire dans ta liste sur
ton userform.
Essaie, tu verras c'est vraiment ce qu'il y a une plus
simple une fois
qu'on a cessé d'avoir peur d'une tite formule décaler :-)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
le 03/11/2003 17:42:Salut...
J'ai un code pour remplir une liste déroulante de
manière
dynamique.
A savoir
Dans un module:
Public gstrRangeListe as string
-----------------------------------------
Public Sub RemplirListe(ByRef frm as UserForm, sh as
String, rge as String, cbo as String)
Worksheets(sh).Activate
frm.Controls(cbo).RowSource = Worksheets(sh).Range
(rge).Address
et sur mon Userform_Activate le code suivant:
Range("A1").Activate
gstrRangeListe = "A1:A" & Selection.End(xlDown).Row
Call RemplirListe (frmNewContact, "data",
gstrRangeListe, "cboTitre")
Me.cboTitre.ListIndex =0
Sur mes cellules, j'ai respectivement Mademoiselle,
Madame
Monsieur en A1,A2,A3...
Excel cependant prend en considération les liges
jusqu'à l
a ligne 65536...
???????? tout essayer, je deviend fou...
Merci de votre aide... (même un autre code, pourvu^'il
puisse être dynamique si je rajoute quelque chose dans
la
liste déroulant
Merci de votre aide
er merci d'avance
.
bonjour,
je trouve vraiment pratique de pouvoir
rendre ainsi "dynamique" une plage nommée.
Mais j'ai plusieurs questions:
1- quand je mets en pratique l'exemple,
Excel ne propose pas "maliste" dans la
"zone de nom" en haut, à gauche de la barre de formules.
2- j'ai eu besoin de faire la même manip,
mais en bas d'une feuille, sachant qu'il y avait
d'autres valeurs sans intérêt en haut de la colonne A;
maliste était alors:
Þcaler($A$353;;;nbval($A353:$A10000)).
Mais là, ça ne marche plus du tout:
si je sélectionne une cellule plus "basse" (ligne 360 p.ex.),
puis ctrl+F3 pour vérifier la définition de "maliste", ....
elle a changé: du genre
Þcaler($A$353;;;nbval($A360:$A10000))
et si je me mets ligne 361, ça change de nouveau.
????
Ai-je tout fait de travers, ou outrepassé les possibilités
d'Excel?
Merci de vos lumières.
Bourby
"Misange" a écrit dans le message news:
OqOS#Bonjour,
Pour rendre ton code *dynamique*, nul besoin d'une macro compliquée :
Dans le userform_initialize (ou ailleurs suivant tes besoins), tu écris
maliste.rowsource=("mafeuille!maliste")
Dans excel (pas VBA) tu écris les données servant de source à ta liste
dans la feuille mafeuille, par exemple dans la colonne A, les unes en
dessous des autres et sans vides.
Tu sélectionnes ces données
menu insertion/nom.définir
dans la case en haut tu tapes "maliste" et dans la case du bas, là ou
est écrit un truc genre "A1:A23", tu effaces ce qui est inscrit et à la
place tu tapes
Þcaler($A$1;;;nbval($A:$A)) et tu cliques sur ajouter. Sans quitter
cette fenêtre tu vérifies que tu as bien fait comme il faut simplement
en recliquant dans la formule. Tu dois voir un pointillé entourer les
valeurs de ta colonne A.
Maintenant, c'est magique, grace à la formule décaler, si tu ajoutes un
nom dans cette liste, il va automatiquement être pris en compte dans le
nom "maliste" et ajouté sans rien faire dans ta liste sur ton userform.
Essaie, tu verras c'est vraiment ce qu'il y a une plus simple une fois
qu'on a cessé d'avoir peur d'une tite formule décaler :-)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
le 03/11/2003 17:42:Salut...
J'ai un code pour remplir une liste déroulante de manière
dynamique.
A savoir
Dans un module:
Public gstrRangeListe as string
-----------------------------------------
Public Sub RemplirListe(ByRef frm as UserForm, sh as
String, rge as String, cbo as String)
Worksheets(sh).Activate
frm.Controls(cbo).RowSource = Worksheets(sh).Range
(rge).Address
et sur mon Userform_Activate le code suivant:
Range("A1").Activate
gstrRangeListe = "A1:A" & Selection.End(xlDown).Row
Call RemplirListe (frmNewContact, "data",
gstrRangeListe, "cboTitre")
Me.cboTitre.ListIndex =0
Sur mes cellules, j'ai respectivement Mademoiselle, Madame
Monsieur en A1,A2,A3...
Excel cependant prend en considération les liges jusqu'à l
a ligne 65536...
???????? tout essayer, je deviend fou...
Merci de votre aide... (même un autre code, pourvu^'il
puisse être dynamique si je rajoute quelque chose dans la
liste déroulant
Merci de votre aide
er merci d'avance
bonjour,
je trouve vraiment pratique de pouvoir
rendre ainsi "dynamique" une plage nommée.
Mais j'ai plusieurs questions:
1- quand je mets en pratique l'exemple,
Excel ne propose pas "maliste" dans la
"zone de nom" en haut, à gauche de la barre de formules.
2- j'ai eu besoin de faire la même manip,
mais en bas d'une feuille, sachant qu'il y avait
d'autres valeurs sans intérêt en haut de la colonne A;
maliste était alors:
Þcaler($A$353;;;nbval($A353:$A10000)).
Mais là, ça ne marche plus du tout:
si je sélectionne une cellule plus "basse" (ligne 360 p.ex.),
puis ctrl+F3 pour vérifier la définition de "maliste", ....
elle a changé: du genre
Þcaler($A$353;;;nbval($A360:$A10000))
et si je me mets ligne 361, ça change de nouveau.
????
Ai-je tout fait de travers, ou outrepassé les possibilités
d'Excel?
Merci de vos lumières.
Bourby
"Misange" <misange@devinezou.net> a écrit dans le message news:
OqOS#4ioDHA.2528@TK2MSFTNGP12.phx.gbl...
Bonjour,
Pour rendre ton code *dynamique*, nul besoin d'une macro compliquée :
Dans le userform_initialize (ou ailleurs suivant tes besoins), tu écris
maliste.rowsource=("mafeuille!maliste")
Dans excel (pas VBA) tu écris les données servant de source à ta liste
dans la feuille mafeuille, par exemple dans la colonne A, les unes en
dessous des autres et sans vides.
Tu sélectionnes ces données
menu insertion/nom.définir
dans la case en haut tu tapes "maliste" et dans la case du bas, là ou
est écrit un truc genre "A1:A23", tu effaces ce qui est inscrit et à la
place tu tapes
Þcaler($A$1;;;nbval($A:$A)) et tu cliques sur ajouter. Sans quitter
cette fenêtre tu vérifies que tu as bien fait comme il faut simplement
en recliquant dans la formule. Tu dois voir un pointillé entourer les
valeurs de ta colonne A.
Maintenant, c'est magique, grace à la formule décaler, si tu ajoutes un
nom dans cette liste, il va automatiquement être pris en compte dans le
nom "maliste" et ajouté sans rien faire dans ta liste sur ton userform.
Essaie, tu verras c'est vraiment ce qu'il y a une plus simple une fois
qu'on a cessé d'avoir peur d'une tite formule décaler :-)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
le 03/11/2003 17:42:
Salut...
J'ai un code pour remplir une liste déroulante de manière
dynamique.
A savoir
Dans un module:
Public gstrRangeListe as string
-----------------------------------------
Public Sub RemplirListe(ByRef frm as UserForm, sh as
String, rge as String, cbo as String)
Worksheets(sh).Activate
frm.Controls(cbo).RowSource = Worksheets(sh).Range
(rge).Address
et sur mon Userform_Activate le code suivant:
Range("A1").Activate
gstrRangeListe = "A1:A" & Selection.End(xlDown).Row
Call RemplirListe (frmNewContact, "data",
gstrRangeListe, "cboTitre")
Me.cboTitre.ListIndex =0
Sur mes cellules, j'ai respectivement Mademoiselle, Madame
Monsieur en A1,A2,A3...
Excel cependant prend en considération les liges jusqu'à l
a ligne 65536...
???????? tout essayer, je deviend fou...
Merci de votre aide... (même un autre code, pourvu^'il
puisse être dynamique si je rajoute quelque chose dans la
liste déroulant
Merci de votre aide
er merci d'avance
bonjour,
je trouve vraiment pratique de pouvoir
rendre ainsi "dynamique" une plage nommée.
Mais j'ai plusieurs questions:
1- quand je mets en pratique l'exemple,
Excel ne propose pas "maliste" dans la
"zone de nom" en haut, à gauche de la barre de formules.
2- j'ai eu besoin de faire la même manip,
mais en bas d'une feuille, sachant qu'il y avait
d'autres valeurs sans intérêt en haut de la colonne A;
maliste était alors:
Þcaler($A$353;;;nbval($A353:$A10000)).
Mais là, ça ne marche plus du tout:
si je sélectionne une cellule plus "basse" (ligne 360 p.ex.),
puis ctrl+F3 pour vérifier la définition de "maliste", ....
elle a changé: du genre
Þcaler($A$353;;;nbval($A360:$A10000))
et si je me mets ligne 361, ça change de nouveau.
????
Ai-je tout fait de travers, ou outrepassé les possibilités
d'Excel?
Merci de vos lumières.
Bourby
"Misange" a écrit dans le message news:
OqOS#Bonjour,
Pour rendre ton code *dynamique*, nul besoin d'une macro compliquée :
Dans le userform_initialize (ou ailleurs suivant tes besoins), tu écris
maliste.rowsource=("mafeuille!maliste")
Dans excel (pas VBA) tu écris les données servant de source à ta liste
dans la feuille mafeuille, par exemple dans la colonne A, les unes en
dessous des autres et sans vides.
Tu sélectionnes ces données
menu insertion/nom.définir
dans la case en haut tu tapes "maliste" et dans la case du bas, là ou
est écrit un truc genre "A1:A23", tu effaces ce qui est inscrit et à la
place tu tapes
Þcaler($A$1;;;nbval($A:$A)) et tu cliques sur ajouter. Sans quitter
cette fenêtre tu vérifies que tu as bien fait comme il faut simplement
en recliquant dans la formule. Tu dois voir un pointillé entourer les
valeurs de ta colonne A.
Maintenant, c'est magique, grace à la formule décaler, si tu ajoutes un
nom dans cette liste, il va automatiquement être pris en compte dans le
nom "maliste" et ajouté sans rien faire dans ta liste sur ton userform.
Essaie, tu verras c'est vraiment ce qu'il y a une plus simple une fois
qu'on a cessé d'avoir peur d'une tite formule décaler :-)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
le 03/11/2003 17:42:Salut...
J'ai un code pour remplir une liste déroulante de manière
dynamique.
A savoir
Dans un module:
Public gstrRangeListe as string
-----------------------------------------
Public Sub RemplirListe(ByRef frm as UserForm, sh as
String, rge as String, cbo as String)
Worksheets(sh).Activate
frm.Controls(cbo).RowSource = Worksheets(sh).Range
(rge).Address
et sur mon Userform_Activate le code suivant:
Range("A1").Activate
gstrRangeListe = "A1:A" & Selection.End(xlDown).Row
Call RemplirListe (frmNewContact, "data",
gstrRangeListe, "cboTitre")
Me.cboTitre.ListIndex =0
Sur mes cellules, j'ai respectivement Mademoiselle, Madame
Monsieur en A1,A2,A3...
Excel cependant prend en considération les liges jusqu'à l
a ligne 65536...
???????? tout essayer, je deviend fou...
Merci de votre aide... (même un autre code, pourvu^'il
puisse être dynamique si je rajoute quelque chose dans la
liste déroulant
Merci de votre aide
er merci d'avance
1- quand je mets en pratique l'exemple,
Excel ne propose pas "maliste" dans la
"zone de nom" en haut, à gauche de la barre de formules.
Normal ... C'est comme ça avec les plages définies par la fonction
(volatile)
DECALER2- j'ai eu besoin de faire la même manip,
mais en bas d'une feuille, sachant qu'il y avait
d'autres valeurs sans intérêt en haut de la colonne A;
C'est l'inconvénient (boff...) de la fonction : elle n'accepte pas les
cellules
vides !
AV
1- quand je mets en pratique l'exemple,
Excel ne propose pas "maliste" dans la
"zone de nom" en haut, à gauche de la barre de formules.
Normal ... C'est comme ça avec les plages définies par la fonction
(volatile)
DECALER
2- j'ai eu besoin de faire la même manip,
mais en bas d'une feuille, sachant qu'il y avait
d'autres valeurs sans intérêt en haut de la colonne A;
C'est l'inconvénient (boff...) de la fonction : elle n'accepte pas les
cellules
vides !
AV
1- quand je mets en pratique l'exemple,
Excel ne propose pas "maliste" dans la
"zone de nom" en haut, à gauche de la barre de formules.
Normal ... C'est comme ça avec les plages définies par la fonction
(volatile)
DECALER2- j'ai eu besoin de faire la même manip,
mais en bas d'une feuille, sachant qu'il y avait
d'autres valeurs sans intérêt en haut de la colonne A;
C'est l'inconvénient (boff...) de la fonction : elle n'accepte pas les
cellules
vides !
AV
Bonjour
Comme te le dit Alain et comme je l'avais précisé, il ne faut aucune
cellule vide dans la zone nommée avec décaler. Ce qui veut dire que si
tu dois effacer une valeur dans une liste d'ailleurs, il faut supprimer
la cellule (décaler vers le haut) et non pas seuement en effacer la
valeur.
La seconde contrainte c'est que toutes les valeurs écrites dans la
colonne prise en ref (ici $A:$A) seront comptées par la formule
nbval($a:$a). Si tu mets une étiquette en haut de colonne, il faut alors
modifier la formule pour tenir compte de cela :
Þcaler($a$2;;;(nbval($a:$a)-1)
Si tu avais 6 lignes inutiles en haut, tu ajusterais de même la cellule
de départ (A7) et le nb de valeurs à prendre : nbval($a:$a)-6. Mais il
faut faire très attention à ne pas ajouter de trucs ailleurs dans cette
colonne. Une habitude que j'ai prise est de réserver une page (toujours
nommée "codes" chez moi comme ça je m'y retrouve...) dans laquelle je
n'écris qu'une série de choses par colonne. Cette page (qui peut être
masquée suivant l'usage du classeur) me sert de lieu de stockage pour
mes listes et de brouillon pour noter ce que je ne dois pas oublier de
corriger par exemple.
Quant au fait que le nom maliste n'apparaisse pas dans la zone de nom,
c'est normal, dès que tu nommes une plage, le nom n'apparait pas si tu
ne cliques dans une seule cellule (qui peut très bien appartenir à
plusieurs plages nommées...)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
le 03/11/2003 23:28:bonjour,
je trouve vraiment pratique de pouvoir
rendre ainsi "dynamique" une plage nommée.
Mais j'ai plusieurs questions:
1- quand je mets en pratique l'exemple,
Excel ne propose pas "maliste" dans la
"zone de nom" en haut, à gauche de la barre de formules.
2- j'ai eu besoin de faire la même manip,
mais en bas d'une feuille, sachant qu'il y avait
d'autres valeurs sans intérêt en haut de la colonne A;
maliste était alors:
Þcaler($A$353;;;nbval($A353:$A10000)).
Mais là, ça ne marche plus du tout:
si je sélectionne une cellule plus "basse" (ligne 360 p.ex.),
puis ctrl+F3 pour vérifier la définition de "maliste", ....
elle a changé: du genre
Þcaler($A$353;;;nbval($A360:$A10000))
et si je me mets ligne 361, ça change de nouveau.
????
Ai-je tout fait de travers, ou outrepassé les possibilités
d'Excel?
Merci de vos lumières.
Bourby
"Misange" a écrit dans le message news:
OqOS#Bonjour,
Pour rendre ton code *dynamique*, nul besoin d'une macro compliquée :
Dans le userform_initialize (ou ailleurs suivant tes besoins), tu écris
maliste.rowsource=("mafeuille!maliste")
Dans excel (pas VBA) tu écris les données servant de source à ta liste
dans la feuille mafeuille, par exemple dans la colonne A, les unes en
dessous des autres et sans vides.
Tu sélectionnes ces données
menu insertion/nom.définir
dans la case en haut tu tapes "maliste" et dans la case du bas, là ou
est écrit un truc genre "A1:A23", tu effaces ce qui est inscrit et à la
place tu tapes
Þcaler($A$1;;;nbval($A:$A)) et tu cliques sur ajouter. Sans quitter
cette fenêtre tu vérifies que tu as bien fait comme il faut simplement
en recliquant dans la formule. Tu dois voir un pointillé entourer les
valeurs de ta colonne A.
Maintenant, c'est magique, grace à la formule décaler, si tu ajoutes un
nom dans cette liste, il va automatiquement être pris en compte dans le
nom "maliste" et ajouté sans rien faire dans ta liste sur ton userform.
Essaie, tu verras c'est vraiment ce qu'il y a une plus simple une fois
qu'on a cessé d'avoir peur d'une tite formule décaler :-)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
le 03/11/2003 17:42:Salut...
J'ai un code pour remplir une liste déroulante de manière
dynamique.
A savoir
Dans un module:
Public gstrRangeListe as string
-----------------------------------------
Public Sub RemplirListe(ByRef frm as UserForm, sh as
String, rge as String, cbo as String)
Worksheets(sh).Activate
frm.Controls(cbo).RowSource = Worksheets(sh).Range
(rge).Address
et sur mon Userform_Activate le code suivant:
Range("A1").Activate
gstrRangeListe = "A1:A" & Selection.End(xlDown).Row
Call RemplirListe (frmNewContact, "data",
gstrRangeListe, "cboTitre")
Me.cboTitre.ListIndex =0
Sur mes cellules, j'ai respectivement Mademoiselle, Madame
Monsieur en A1,A2,A3...
Excel cependant prend en considération les liges jusqu'à l
a ligne 65536...
???????? tout essayer, je deviend fou...
Merci de votre aide... (même un autre code, pourvu^'il
puisse être dynamique si je rajoute quelque chose dans la
liste déroulant
Merci de votre aide
er merci d'avance
Bonjour
Comme te le dit Alain et comme je l'avais précisé, il ne faut aucune
cellule vide dans la zone nommée avec décaler. Ce qui veut dire que si
tu dois effacer une valeur dans une liste d'ailleurs, il faut supprimer
la cellule (décaler vers le haut) et non pas seuement en effacer la
valeur.
La seconde contrainte c'est que toutes les valeurs écrites dans la
colonne prise en ref (ici $A:$A) seront comptées par la formule
nbval($a:$a). Si tu mets une étiquette en haut de colonne, il faut alors
modifier la formule pour tenir compte de cela :
Þcaler($a$2;;;(nbval($a:$a)-1)
Si tu avais 6 lignes inutiles en haut, tu ajusterais de même la cellule
de départ (A7) et le nb de valeurs à prendre : nbval($a:$a)-6. Mais il
faut faire très attention à ne pas ajouter de trucs ailleurs dans cette
colonne. Une habitude que j'ai prise est de réserver une page (toujours
nommée "codes" chez moi comme ça je m'y retrouve...) dans laquelle je
n'écris qu'une série de choses par colonne. Cette page (qui peut être
masquée suivant l'usage du classeur) me sert de lieu de stockage pour
mes listes et de brouillon pour noter ce que je ne dois pas oublier de
corriger par exemple.
Quant au fait que le nom maliste n'apparaisse pas dans la zone de nom,
c'est normal, dès que tu nommes une plage, le nom n'apparait pas si tu
ne cliques dans une seule cellule (qui peut très bien appartenir à
plusieurs plages nommées...)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
le 03/11/2003 23:28:
bonjour,
je trouve vraiment pratique de pouvoir
rendre ainsi "dynamique" une plage nommée.
Mais j'ai plusieurs questions:
1- quand je mets en pratique l'exemple,
Excel ne propose pas "maliste" dans la
"zone de nom" en haut, à gauche de la barre de formules.
2- j'ai eu besoin de faire la même manip,
mais en bas d'une feuille, sachant qu'il y avait
d'autres valeurs sans intérêt en haut de la colonne A;
maliste était alors:
Þcaler($A$353;;;nbval($A353:$A10000)).
Mais là, ça ne marche plus du tout:
si je sélectionne une cellule plus "basse" (ligne 360 p.ex.),
puis ctrl+F3 pour vérifier la définition de "maliste", ....
elle a changé: du genre
Þcaler($A$353;;;nbval($A360:$A10000))
et si je me mets ligne 361, ça change de nouveau.
????
Ai-je tout fait de travers, ou outrepassé les possibilités
d'Excel?
Merci de vos lumières.
Bourby
"Misange" <misange@devinezou.net> a écrit dans le message news:
OqOS#4ioDHA.2528@TK2MSFTNGP12.phx.gbl...
Bonjour,
Pour rendre ton code *dynamique*, nul besoin d'une macro compliquée :
Dans le userform_initialize (ou ailleurs suivant tes besoins), tu écris
maliste.rowsource=("mafeuille!maliste")
Dans excel (pas VBA) tu écris les données servant de source à ta liste
dans la feuille mafeuille, par exemple dans la colonne A, les unes en
dessous des autres et sans vides.
Tu sélectionnes ces données
menu insertion/nom.définir
dans la case en haut tu tapes "maliste" et dans la case du bas, là ou
est écrit un truc genre "A1:A23", tu effaces ce qui est inscrit et à la
place tu tapes
Þcaler($A$1;;;nbval($A:$A)) et tu cliques sur ajouter. Sans quitter
cette fenêtre tu vérifies que tu as bien fait comme il faut simplement
en recliquant dans la formule. Tu dois voir un pointillé entourer les
valeurs de ta colonne A.
Maintenant, c'est magique, grace à la formule décaler, si tu ajoutes un
nom dans cette liste, il va automatiquement être pris en compte dans le
nom "maliste" et ajouté sans rien faire dans ta liste sur ton userform.
Essaie, tu verras c'est vraiment ce qu'il y a une plus simple une fois
qu'on a cessé d'avoir peur d'une tite formule décaler :-)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
le 03/11/2003 17:42:
Salut...
J'ai un code pour remplir une liste déroulante de manière
dynamique.
A savoir
Dans un module:
Public gstrRangeListe as string
-----------------------------------------
Public Sub RemplirListe(ByRef frm as UserForm, sh as
String, rge as String, cbo as String)
Worksheets(sh).Activate
frm.Controls(cbo).RowSource = Worksheets(sh).Range
(rge).Address
et sur mon Userform_Activate le code suivant:
Range("A1").Activate
gstrRangeListe = "A1:A" & Selection.End(xlDown).Row
Call RemplirListe (frmNewContact, "data",
gstrRangeListe, "cboTitre")
Me.cboTitre.ListIndex =0
Sur mes cellules, j'ai respectivement Mademoiselle, Madame
Monsieur en A1,A2,A3...
Excel cependant prend en considération les liges jusqu'à l
a ligne 65536...
???????? tout essayer, je deviend fou...
Merci de votre aide... (même un autre code, pourvu^'il
puisse être dynamique si je rajoute quelque chose dans la
liste déroulant
Merci de votre aide
er merci d'avance
Bonjour
Comme te le dit Alain et comme je l'avais précisé, il ne faut aucune
cellule vide dans la zone nommée avec décaler. Ce qui veut dire que si
tu dois effacer une valeur dans une liste d'ailleurs, il faut supprimer
la cellule (décaler vers le haut) et non pas seuement en effacer la
valeur.
La seconde contrainte c'est que toutes les valeurs écrites dans la
colonne prise en ref (ici $A:$A) seront comptées par la formule
nbval($a:$a). Si tu mets une étiquette en haut de colonne, il faut alors
modifier la formule pour tenir compte de cela :
Þcaler($a$2;;;(nbval($a:$a)-1)
Si tu avais 6 lignes inutiles en haut, tu ajusterais de même la cellule
de départ (A7) et le nb de valeurs à prendre : nbval($a:$a)-6. Mais il
faut faire très attention à ne pas ajouter de trucs ailleurs dans cette
colonne. Une habitude que j'ai prise est de réserver une page (toujours
nommée "codes" chez moi comme ça je m'y retrouve...) dans laquelle je
n'écris qu'une série de choses par colonne. Cette page (qui peut être
masquée suivant l'usage du classeur) me sert de lieu de stockage pour
mes listes et de brouillon pour noter ce que je ne dois pas oublier de
corriger par exemple.
Quant au fait que le nom maliste n'apparaisse pas dans la zone de nom,
c'est normal, dès que tu nommes une plage, le nom n'apparait pas si tu
ne cliques dans une seule cellule (qui peut très bien appartenir à
plusieurs plages nommées...)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
le 03/11/2003 23:28:bonjour,
je trouve vraiment pratique de pouvoir
rendre ainsi "dynamique" une plage nommée.
Mais j'ai plusieurs questions:
1- quand je mets en pratique l'exemple,
Excel ne propose pas "maliste" dans la
"zone de nom" en haut, à gauche de la barre de formules.
2- j'ai eu besoin de faire la même manip,
mais en bas d'une feuille, sachant qu'il y avait
d'autres valeurs sans intérêt en haut de la colonne A;
maliste était alors:
Þcaler($A$353;;;nbval($A353:$A10000)).
Mais là, ça ne marche plus du tout:
si je sélectionne une cellule plus "basse" (ligne 360 p.ex.),
puis ctrl+F3 pour vérifier la définition de "maliste", ....
elle a changé: du genre
Þcaler($A$353;;;nbval($A360:$A10000))
et si je me mets ligne 361, ça change de nouveau.
????
Ai-je tout fait de travers, ou outrepassé les possibilités
d'Excel?
Merci de vos lumières.
Bourby
"Misange" a écrit dans le message news:
OqOS#Bonjour,
Pour rendre ton code *dynamique*, nul besoin d'une macro compliquée :
Dans le userform_initialize (ou ailleurs suivant tes besoins), tu écris
maliste.rowsource=("mafeuille!maliste")
Dans excel (pas VBA) tu écris les données servant de source à ta liste
dans la feuille mafeuille, par exemple dans la colonne A, les unes en
dessous des autres et sans vides.
Tu sélectionnes ces données
menu insertion/nom.définir
dans la case en haut tu tapes "maliste" et dans la case du bas, là ou
est écrit un truc genre "A1:A23", tu effaces ce qui est inscrit et à la
place tu tapes
Þcaler($A$1;;;nbval($A:$A)) et tu cliques sur ajouter. Sans quitter
cette fenêtre tu vérifies que tu as bien fait comme il faut simplement
en recliquant dans la formule. Tu dois voir un pointillé entourer les
valeurs de ta colonne A.
Maintenant, c'est magique, grace à la formule décaler, si tu ajoutes un
nom dans cette liste, il va automatiquement être pris en compte dans le
nom "maliste" et ajouté sans rien faire dans ta liste sur ton userform.
Essaie, tu verras c'est vraiment ce qu'il y a une plus simple une fois
qu'on a cessé d'avoir peur d'une tite formule décaler :-)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
le 03/11/2003 17:42:Salut...
J'ai un code pour remplir une liste déroulante de manière
dynamique.
A savoir
Dans un module:
Public gstrRangeListe as string
-----------------------------------------
Public Sub RemplirListe(ByRef frm as UserForm, sh as
String, rge as String, cbo as String)
Worksheets(sh).Activate
frm.Controls(cbo).RowSource = Worksheets(sh).Range
(rge).Address
et sur mon Userform_Activate le code suivant:
Range("A1").Activate
gstrRangeListe = "A1:A" & Selection.End(xlDown).Row
Call RemplirListe (frmNewContact, "data",
gstrRangeListe, "cboTitre")
Me.cboTitre.ListIndex =0
Sur mes cellules, j'ai respectivement Mademoiselle, Madame
Monsieur en A1,A2,A3...
Excel cependant prend en considération les liges jusqu'à l
a ligne 65536...
???????? tout essayer, je deviend fou...
Merci de votre aide... (même un autre code, pourvu^'il
puisse être dynamique si je rajoute quelque chose dans la
liste déroulant
Merci de votre aide
er merci d'avance