OVH Cloud OVH Cloud

Maj automatique ListBox ou ComboBox MPFE 1438

3 réponses
Avatar
Nova
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
=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)

3 réponses

Avatar
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)
Avatar
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)




Avatar
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)