Sur le site MPFE j'ai trouvé l'astuce ci-dessous :
Je l'ai intégré à mon code. Je retrouve bien la liste souhaitée dans la
liste déroulante de mon formulaire, mais quand
je veux valider les données saisies dans celui-ci ma Macro buggue et
s'arrête sur la ligne maliste.rowsource=("mafeuille!maliste") avec le
message Erreur d'exécution '91' Variable objet ou variable de bloc With non
définie.
Faut-il déclarer 'maliste' en début de Macro, et si oui, on doit la
déclarer en temps que quoi ?
Merci d'avance Nova
Mise à jour automatique de Listbox ou combobox
Ma combobox est alimentée à partir de données situées dans une feuille
excel.
Comment faire pour qu'un ajout sur cette feuille se répercute sur ma listbox
? 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.
Attention, 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 cette liste
d'ailleurs, il faut supprimer la cellule (décaler vers le haut) et non pas
seulement 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 :
=decaler($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.
Flo Cabon, Ajouté ou modifié le 02/06/2004 (N°1438)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour Nova,
ligne maliste.rowsource=("mafeuille!maliste")
2 choses :
MaListe.rowsource : Est-ce que le MaListe dans cette ligne de code représente la propriété "Name" de ton combobox ? Si, non, c'est normal que ta procédure plange ...
= "mafeuille!maliste" Le "Maliste" de cette ligne de code représente une plage de cellule de la feuille "MaFeuille" de ton classeur. Voir barre des menus / insertion / nom et le nom MaListe est défini par la formule Þcaler($A$1;;;nbval($A:$A)) . Est-ce que le nom de ta plage nommée existe -elle ? Il ne faut pas oublier de relire les contraintes de cette façon de faire que Misange a expliqué.
Comme on est en vba, et que l'on peut écrire du code assez facilement, moi, je préfére initialer mon combobox de cette manière.
'-------------------------------- Private Sub UserForm_Initialize()
With Worksheets("MaFeuille") Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row) Tblo = Rg End With
With Me.ComboBox1 .List = Tblo End With
End Sub '--------------------------------
Salutations!
"Nova" a écrit dans le message de news: Bonjour,
Sur le site MPFE j'ai trouvé l'astuce ci-dessous :
Je l'ai intégré à mon code. Je retrouve bien la liste souhaitée dans la liste déroulante de mon formulaire, mais quand je veux valider les données saisies dans celui-ci ma Macro buggue et s'arrête sur la ligne maliste.rowsource=("mafeuille!maliste") avec le message Erreur d'exécution '91' Variable objet ou variable de bloc With non définie. Faut-il déclarer 'maliste' en début de Macro, et si oui, on doit la déclarer en temps que quoi ?
Merci d'avance Nova
Mise à jour automatique de Listbox ou combobox Ma combobox est alimentée à partir de données situées dans une feuille excel. Comment faire pour qu'un ajout sur cette feuille se répercute sur ma listbox ? 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.
Attention, 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 cette liste d'ailleurs, il faut supprimer la cellule (décaler vers le haut) et non pas seulement 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. Flo Cabon, Ajouté ou modifié le 02/06/2004 (N°1438)
Bonjour Nova,
ligne maliste.rowsource=("mafeuille!maliste")
2 choses :
MaListe.rowsource : Est-ce que le MaListe dans cette ligne de code représente la propriété "Name" de ton combobox ? Si,
non, c'est normal que ta procédure plange ...
= "mafeuille!maliste" Le "Maliste" de cette ligne de code représente une plage de cellule de la feuille "MaFeuille" de
ton classeur. Voir barre des menus / insertion / nom et le nom MaListe est défini par la formule
Þcaler($A$1;;;nbval($A:$A)) . Est-ce que le nom de ta plage nommée existe -elle ? Il ne faut pas oublier de relire les
contraintes de cette façon de faire que Misange a expliqué.
Comme on est en vba, et que l'on peut écrire du code assez facilement, moi, je préfére initialer mon combobox de cette
manière.
'--------------------------------
Private Sub UserForm_Initialize()
With Worksheets("MaFeuille")
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Me.ComboBox1
.List = Tblo
End With
End Sub
'--------------------------------
Salutations!
"Nova" <nospam-nova69@free.fr> a écrit dans le message de news:ehS8GkdvEHA.1404@TK2MSFTNGP11.phx.gbl...
Bonjour,
Sur le site MPFE j'ai trouvé l'astuce ci-dessous :
Je l'ai intégré à mon code. Je retrouve bien la liste souhaitée dans la
liste déroulante de mon formulaire, mais quand
je veux valider les données saisies dans celui-ci ma Macro buggue et
s'arrête sur la ligne maliste.rowsource=("mafeuille!maliste") avec le
message Erreur d'exécution '91' Variable objet ou variable de bloc With non
définie.
Faut-il déclarer 'maliste' en début de Macro, et si oui, on doit la
déclarer en temps que quoi ?
Merci d'avance Nova
Mise à jour automatique de Listbox ou combobox
Ma combobox est alimentée à partir de données situées dans une feuille
excel.
Comment faire pour qu'un ajout sur cette feuille se répercute sur ma listbox
? 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.
Attention, 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 cette liste
d'ailleurs, il faut supprimer la cellule (décaler vers le haut) et non pas
seulement 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.
Flo Cabon, Ajouté ou modifié le 02/06/2004 (N°1438)
MaListe.rowsource : Est-ce que le MaListe dans cette ligne de code représente la propriété "Name" de ton combobox ? Si, non, c'est normal que ta procédure plange ...
= "mafeuille!maliste" Le "Maliste" de cette ligne de code représente une plage de cellule de la feuille "MaFeuille" de ton classeur. Voir barre des menus / insertion / nom et le nom MaListe est défini par la formule Þcaler($A$1;;;nbval($A:$A)) . Est-ce que le nom de ta plage nommée existe -elle ? Il ne faut pas oublier de relire les contraintes de cette façon de faire que Misange a expliqué.
Comme on est en vba, et que l'on peut écrire du code assez facilement, moi, je préfére initialer mon combobox de cette manière.
'-------------------------------- Private Sub UserForm_Initialize()
With Worksheets("MaFeuille") Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row) Tblo = Rg End With
With Me.ComboBox1 .List = Tblo End With
End Sub '--------------------------------
Salutations!
"Nova" a écrit dans le message de news: Bonjour,
Sur le site MPFE j'ai trouvé l'astuce ci-dessous :
Je l'ai intégré à mon code. Je retrouve bien la liste souhaitée dans la liste déroulante de mon formulaire, mais quand je veux valider les données saisies dans celui-ci ma Macro buggue et s'arrête sur la ligne maliste.rowsource=("mafeuille!maliste") avec le message Erreur d'exécution '91' Variable objet ou variable de bloc With non définie. Faut-il déclarer 'maliste' en début de Macro, et si oui, on doit la déclarer en temps que quoi ?
Merci d'avance Nova
Mise à jour automatique de Listbox ou combobox Ma combobox est alimentée à partir de données situées dans une feuille excel. Comment faire pour qu'un ajout sur cette feuille se répercute sur ma listbox ? 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.
Attention, 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 cette liste d'ailleurs, il faut supprimer la cellule (décaler vers le haut) et non pas seulement 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. Flo Cabon, Ajouté ou modifié le 02/06/2004 (N°1438)
Misange
Bonsoir,
la ligne en question doit être mise dans le userform_initialize() du coup, je ne vois pas comment la macro peut s'arrêter sur cette ligne quand tu valides une données sélectionnée dans la combo. Les procédures de valiation des données dans la combo ne sont en effet normalement pas dans l'initialisation du formulaire ! Maliste n'a nullement besoin d'être déclarée en tous cas dans la macro.
Misange migrateuse http://www.excelabo.net mail : http://cerbermail.com/?k5Q8Dh2mta
on 29/10/2004 19:02:
Bonjour,
Sur le site MPFE j'ai trouvé l'astuce ci-dessous :
Je l'ai intégré à mon code. Je retrouve bien la liste souhaitée dans la liste déroulante de mon formulaire, mais quand je veux valider les données saisies dans celui-ci ma Macro buggue et s'arrête sur la ligne maliste.rowsource=("mafeuille!maliste") avec le message Erreur d'exécution '91' Variable objet ou variable de bloc With non définie. Faut-il déclarer 'maliste' en début de Macro, et si oui, on doit la déclarer en temps que quoi ?
Merci d'avance Nova
Mise à jour automatique de Listbox ou combobox Ma combobox est alimentée à partir de données situées dans une feuille excel. Comment faire pour qu'un ajout sur cette feuille se répercute sur ma listbox ? 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.
Attention, 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 cette liste d'ailleurs, il faut supprimer la cellule (décaler vers le haut) et non pas seulement 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. Flo Cabon, Ajouté ou modifié le 02/06/2004 (N°1438)
Bonsoir,
la ligne en question doit être mise dans le userform_initialize()
du coup, je ne vois pas comment la macro peut s'arrêter sur cette ligne
quand tu valides une données sélectionnée dans la combo. Les procédures
de valiation des données dans la combo ne sont en effet normalement pas
dans l'initialisation du formulaire !
Maliste n'a nullement besoin d'être déclarée en tous cas dans la macro.
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
on 29/10/2004 19:02:
Bonjour,
Sur le site MPFE j'ai trouvé l'astuce ci-dessous :
Je l'ai intégré à mon code. Je retrouve bien la liste souhaitée dans la
liste déroulante de mon formulaire, mais quand
je veux valider les données saisies dans celui-ci ma Macro buggue et
s'arrête sur la ligne maliste.rowsource=("mafeuille!maliste") avec le
message Erreur d'exécution '91' Variable objet ou variable de bloc With non
définie.
Faut-il déclarer 'maliste' en début de Macro, et si oui, on doit la
déclarer en temps que quoi ?
Merci d'avance Nova
Mise à jour automatique de Listbox ou combobox
Ma combobox est alimentée à partir de données situées dans une feuille
excel.
Comment faire pour qu'un ajout sur cette feuille se répercute sur ma listbox
? 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.
Attention, 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 cette liste
d'ailleurs, il faut supprimer la cellule (décaler vers le haut) et non pas
seulement 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.
Flo Cabon, Ajouté ou modifié le 02/06/2004 (N°1438)
la ligne en question doit être mise dans le userform_initialize() du coup, je ne vois pas comment la macro peut s'arrêter sur cette ligne quand tu valides une données sélectionnée dans la combo. Les procédures de valiation des données dans la combo ne sont en effet normalement pas dans l'initialisation du formulaire ! Maliste n'a nullement besoin d'être déclarée en tous cas dans la macro.
Misange migrateuse http://www.excelabo.net mail : http://cerbermail.com/?k5Q8Dh2mta
on 29/10/2004 19:02:
Bonjour,
Sur le site MPFE j'ai trouvé l'astuce ci-dessous :
Je l'ai intégré à mon code. Je retrouve bien la liste souhaitée dans la liste déroulante de mon formulaire, mais quand je veux valider les données saisies dans celui-ci ma Macro buggue et s'arrête sur la ligne maliste.rowsource=("mafeuille!maliste") avec le message Erreur d'exécution '91' Variable objet ou variable de bloc With non définie. Faut-il déclarer 'maliste' en début de Macro, et si oui, on doit la déclarer en temps que quoi ?
Merci d'avance Nova
Mise à jour automatique de Listbox ou combobox Ma combobox est alimentée à partir de données situées dans une feuille excel. Comment faire pour qu'un ajout sur cette feuille se répercute sur ma listbox ? 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.
Attention, 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 cette liste d'ailleurs, il faut supprimer la cellule (décaler vers le haut) et non pas seulement 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. Flo Cabon, Ajouté ou modifié le 02/06/2004 (N°1438)
Nova
Merci, ça marche.
Salutations Nova
Bonjour Nova,
ligne maliste.rowsource=("mafeuille!maliste")
2 choses :
MaListe.rowsource : Est-ce que le MaListe dans cette ligne de code représente la propriété "Name" de ton combobox ? Si, non, c'est normal que ta procédure plange ...
= "mafeuille!maliste" Le "Maliste" de cette ligne de code représente une plage de cellule de la feuille "MaFeuille" de ton classeur. Voir barre des menus / insertion / nom et le nom MaListe est défini par la formule Þcaler($A$1;;;nbval($A:$A)) . Est-ce que le nom de ta plage nommée existe -elle ? Il ne faut pas oublier de relire les contraintes de cette façon de faire que Misange a expliqué.
Comme on est en vba, et que l'on peut écrire du code assez facilement, moi, je préfére initialer mon combobox de cette manière.
'-------------------------------- Private Sub UserForm_Initialize()
With Worksheets("MaFeuille") Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row) Tblo = Rg End With
With Me.ComboBox1 .List = Tblo End With
End Sub '--------------------------------
Salutations!
"Nova" a écrit dans le message de news: Bonjour,
Sur le site MPFE j'ai trouvé l'astuce ci-dessous :
Je l'ai intégré à mon code. Je retrouve bien la liste souhaitée dans la liste déroulante de mon formulaire, mais quand je veux valider les données saisies dans celui-ci ma Macro buggue et s'arrête sur la ligne maliste.rowsource=("mafeuille!maliste") avec le message Erreur d'exécution '91' Variable objet ou variable de bloc With non définie. Faut-il déclarer 'maliste' en début de Macro, et si oui, on doit la déclarer en temps que quoi ?
Merci d'avance Nova
Mise à jour automatique de Listbox ou combobox Ma combobox est alimentée à partir de données situées dans une feuille excel. Comment faire pour qu'un ajout sur cette feuille se répercute sur ma listbox ? 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.
Attention, 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 cette liste d'ailleurs, il faut supprimer la cellule (décaler vers le haut) et non pas seulement 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. Flo Cabon, Ajouté ou modifié le 02/06/2004 (N°1438)
Merci, ça marche.
Salutations
Nova
Bonjour Nova,
ligne maliste.rowsource=("mafeuille!maliste")
2 choses :
MaListe.rowsource : Est-ce que le MaListe dans cette ligne de code
représente la propriété "Name" de ton combobox ? Si,
non, c'est normal que ta procédure plange ...
= "mafeuille!maliste" Le "Maliste" de cette ligne de code représente une
plage de cellule de la feuille "MaFeuille" de
ton classeur. Voir barre des menus / insertion / nom et le nom MaListe
est défini par la formule
Þcaler($A$1;;;nbval($A:$A)) . Est-ce que le nom de ta plage nommée
existe -elle ? Il ne faut pas oublier de relire les
contraintes de cette façon de faire que Misange a expliqué.
Comme on est en vba, et que l'on peut écrire du code assez facilement,
moi, je préfére initialer mon combobox de cette
manière.
'--------------------------------
Private Sub UserForm_Initialize()
With Worksheets("MaFeuille")
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Me.ComboBox1
.List = Tblo
End With
End Sub
'--------------------------------
Salutations!
"Nova" <nospam-nova69@free.fr> a écrit dans le message de
news:ehS8GkdvEHA.1404@TK2MSFTNGP11.phx.gbl...
Bonjour,
Sur le site MPFE j'ai trouvé l'astuce ci-dessous :
Je l'ai intégré à mon code. Je retrouve bien la liste souhaitée dans la
liste déroulante de mon formulaire, mais quand
je veux valider les données saisies dans celui-ci ma Macro buggue et
s'arrête sur la ligne maliste.rowsource=("mafeuille!maliste") avec le
message Erreur d'exécution '91' Variable objet ou variable de bloc With
non
définie.
Faut-il déclarer 'maliste' en début de Macro, et si oui, on doit la
déclarer en temps que quoi ?
Merci d'avance Nova
Mise à jour automatique de Listbox ou combobox
Ma combobox est alimentée à partir de données situées dans une feuille
excel.
Comment faire pour qu'un ajout sur cette feuille se répercute sur ma
listbox
? 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.
Attention, 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 cette liste
d'ailleurs, il faut supprimer la cellule (décaler vers le haut) et non pas
seulement 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.
Flo Cabon, Ajouté ou modifié le 02/06/2004 (N°1438)
MaListe.rowsource : Est-ce que le MaListe dans cette ligne de code représente la propriété "Name" de ton combobox ? Si, non, c'est normal que ta procédure plange ...
= "mafeuille!maliste" Le "Maliste" de cette ligne de code représente une plage de cellule de la feuille "MaFeuille" de ton classeur. Voir barre des menus / insertion / nom et le nom MaListe est défini par la formule Þcaler($A$1;;;nbval($A:$A)) . Est-ce que le nom de ta plage nommée existe -elle ? Il ne faut pas oublier de relire les contraintes de cette façon de faire que Misange a expliqué.
Comme on est en vba, et que l'on peut écrire du code assez facilement, moi, je préfére initialer mon combobox de cette manière.
'-------------------------------- Private Sub UserForm_Initialize()
With Worksheets("MaFeuille") Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row) Tblo = Rg End With
With Me.ComboBox1 .List = Tblo End With
End Sub '--------------------------------
Salutations!
"Nova" a écrit dans le message de news: Bonjour,
Sur le site MPFE j'ai trouvé l'astuce ci-dessous :
Je l'ai intégré à mon code. Je retrouve bien la liste souhaitée dans la liste déroulante de mon formulaire, mais quand je veux valider les données saisies dans celui-ci ma Macro buggue et s'arrête sur la ligne maliste.rowsource=("mafeuille!maliste") avec le message Erreur d'exécution '91' Variable objet ou variable de bloc With non définie. Faut-il déclarer 'maliste' en début de Macro, et si oui, on doit la déclarer en temps que quoi ?
Merci d'avance Nova
Mise à jour automatique de Listbox ou combobox Ma combobox est alimentée à partir de données situées dans une feuille excel. Comment faire pour qu'un ajout sur cette feuille se répercute sur ma listbox ? 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.
Attention, 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 cette liste d'ailleurs, il faut supprimer la cellule (décaler vers le haut) et non pas seulement 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. Flo Cabon, Ajouté ou modifié le 02/06/2004 (N°1438)