erreur compil : type defini par l'utilisateur non defini ? qu'est ce que j'oublie ?
15 réponses
Alfred WALLACE
Bonjour (re re, et rere)
j'ai cette fonction :
Function renvoie_propri(nom_cbb As String, feuille As String, ligne As
interger) As Boolean
Sheets("PARAMETRES").Visible =3D True
Sheets("PARAMETRES").Select
Range("Z31").Select
Range(Selection, Selection.End(xlToRight)).Select
ActiveCell.Offset(ligne, Application.Match(titre, Selection, 0) -
1).Select
titre_feuille =3D ActiveCell.Value
No_Event =3D True
Sheets("PARAMETRES").Visible =3D False
Sheets(nomfeuille).Select
End Function
qui me fait =E0 l'execution :
Erreur de compilation :
type defini par l'utilisateur non defini
je voudrais l'utiliser comme =E7=E0 :
Sheets(nomfeuille).CBB_champ_de_page.Visible =3D
renvoie_propri("CBB_champ_de_page.Visible", nomfeuille, 7)
Il n'est quasiment jamais nécéssaire de faire appel à Select pour faire quelque chose. Travaille plutot sur le changement de tes SELECT par autre chose et tu t'en sortiras très bien.
exemple: le combobox appelé cb1 se trouve dans la feuile qui est activée et les données qui permettent de remplir ce combobox se trouvent en Feuille PARAMETRES.Au passage on fait un petit test sur les cellules de A1 à A16 de la feuille PARAMETRES pour vérifier si elles contiennent qqchose avant de remplir le combobox
Private Sub Worksheet_Activate()
With sheets("PARAMETRES") For each c in .range("A1:A16") if not Isempty(c) then Me.cb1.Additem c.value Next End with
End Sub
On voit bien qu'il n'y a eu aucune sélection.Pour autant le combobox sera correctement rempli
A+
Alfred WALLACE wrote:
anonymousA wrote:
Si j'ai tout compris , mais rien n'est moins sur !!!.
Tu ne peux affecter un ListFillRange qu'avec quelque chose qui rappelle à Excel une plage contigue et ce au format texte, donc ton affaire d'affectation avec des virgules qui sépare les valeurs est vouée à l'échec
Si tu tiens à utiliser la technique que tu as développée, le plus simple reste sans doute de remplir ton combobox par la méthode Additem en controlant ce remplissage via une vérification de la valeur de chacune des lignes ( dans ton exemple , les lignes xx de la colonne 40)
A+
A chaque jour ne suffit plus sa peine....
le remplissage par une boucle comme tu le suggères me pose d'autres pb...
en effet, l'initialisation des CBB se fait dans une macro de feuille : Private Sub Worksheet_Activate()
mon pb est que, le tableau qui contiend les parametres, se trouve dans une autre feuille ! il semble donc que, dans worksheet_activate() je ne puise pas directement zapper dans la feuille "parametres" pour faire un range("xxx").select j'ai l'erreur la methode select de range à échouée....
C'est pour celà que je me suis lancer dans l'écriture de fonctions... mais bon.... çà ne marche pas...
José
Il n'est quasiment jamais nécéssaire de faire appel à Select pour
faire quelque chose. Travaille plutot sur le changement de tes SELECT
par autre chose et tu t'en sortiras très bien.
exemple:
le combobox appelé cb1 se trouve dans la feuile qui est activée et
les données qui permettent de remplir ce combobox se trouvent en
Feuille PARAMETRES.Au passage on fait un petit test sur les cellules de
A1 à A16 de la feuille PARAMETRES pour vérifier si elles contiennent
qqchose avant de remplir le combobox
Private Sub Worksheet_Activate()
With sheets("PARAMETRES")
For each c in .range("A1:A16")
if not Isempty(c) then Me.cb1.Additem c.value
Next
End with
End Sub
On voit bien qu'il n'y a eu aucune sélection.Pour autant le combobox
sera correctement rempli
A+
Alfred WALLACE wrote:
anonymousA wrote:
Si j'ai tout compris , mais rien n'est moins sur !!!.
Tu ne peux affecter un ListFillRange qu'avec quelque chose qui rappelle
à Excel une plage contigue et ce au format texte, donc ton affaire
d'affectation avec des virgules qui sépare les valeurs est vouée à l'échec
Si tu tiens à utiliser la technique que tu as développée, le plus simple
reste sans doute de remplir ton combobox par la méthode Additem en
controlant ce remplissage via une vérification de la valeur de chacune
des lignes ( dans ton exemple , les lignes xx de la colonne 40)
A+
A chaque jour ne suffit plus sa peine....
le remplissage par une boucle comme tu le suggères me pose d'autres
pb...
en effet, l'initialisation des CBB se fait dans une macro de feuille :
Private Sub Worksheet_Activate()
mon pb est que, le tableau qui contiend les parametres, se trouve dans
une autre feuille !
il semble donc que, dans worksheet_activate() je ne puise pas
directement
zapper dans la feuille "parametres" pour faire un range("xxx").select
j'ai l'erreur
la methode select de range à échouée....
C'est pour celà que je me suis lancer dans l'écriture de fonctions...
mais bon....
çà ne marche pas...
Il n'est quasiment jamais nécéssaire de faire appel à Select pour faire quelque chose. Travaille plutot sur le changement de tes SELECT par autre chose et tu t'en sortiras très bien.
exemple: le combobox appelé cb1 se trouve dans la feuile qui est activée et les données qui permettent de remplir ce combobox se trouvent en Feuille PARAMETRES.Au passage on fait un petit test sur les cellules de A1 à A16 de la feuille PARAMETRES pour vérifier si elles contiennent qqchose avant de remplir le combobox
Private Sub Worksheet_Activate()
With sheets("PARAMETRES") For each c in .range("A1:A16") if not Isempty(c) then Me.cb1.Additem c.value Next End with
End Sub
On voit bien qu'il n'y a eu aucune sélection.Pour autant le combobox sera correctement rempli
A+
Alfred WALLACE wrote:
anonymousA wrote:
Si j'ai tout compris , mais rien n'est moins sur !!!.
Tu ne peux affecter un ListFillRange qu'avec quelque chose qui rappelle à Excel une plage contigue et ce au format texte, donc ton affaire d'affectation avec des virgules qui sépare les valeurs est vouée à l'échec
Si tu tiens à utiliser la technique que tu as développée, le plus simple reste sans doute de remplir ton combobox par la méthode Additem en controlant ce remplissage via une vérification de la valeur de chacune des lignes ( dans ton exemple , les lignes xx de la colonne 40)
A+
A chaque jour ne suffit plus sa peine....
le remplissage par une boucle comme tu le suggères me pose d'autres pb...
en effet, l'initialisation des CBB se fait dans une macro de feuille : Private Sub Worksheet_Activate()
mon pb est que, le tableau qui contiend les parametres, se trouve dans une autre feuille ! il semble donc que, dans worksheet_activate() je ne puise pas directement zapper dans la feuille "parametres" pour faire un range("xxx").select j'ai l'erreur la methode select de range à échouée....
C'est pour celà que je me suis lancer dans l'écriture de fonctions... mais bon.... çà ne marche pas...
José
Papy Bernard
Slt,
Négligence, ignorance, action délibérée, je ne sais, mais ta pendule n'est pas à l'heure !!!!!!
-- A+ Papy Bernard (RTCien malgré lui)
Slt,
Négligence, ignorance, action délibérée, je ne sais, mais ta pendule n'est
pas à l'heure !!!!!!
Négligence, ignorance, action délibérée, je ne sais, mais ta pendule n'est pas à l'heure !!!!!!
-- A+ Papy Bernard (RTCien malgré lui)
Alfred Wallace
Si j'ai tout compris , mais rien n'est moins sur !!!.
Tu ne peux affecter un ListFillRange qu'avec quelque chose qui rappelle à Excel une plage contigue et ce au format texte, donc ton affaire d'affectation avec des virgules qui sépare les valeurs est vouée à l'échec
Si tu tiens à utiliser la technique que tu as développée, le plus simple reste sans doute de remplir ton combobox par la méthode Additem en controlant ce remplissage via une vérification de la valeur de chacune des lignes ( dans ton exemple , les lignes xx de la colonne 40)
A+
Merci,
je fais faire une boucle et un Additem à l'interieur.
José
Si j'ai tout compris , mais rien n'est moins sur !!!.
Tu ne peux affecter un ListFillRange qu'avec quelque chose qui rappelle
à Excel une plage contigue et ce au format texte, donc ton affaire
d'affectation avec des virgules qui sépare les valeurs est vouée à l'échec
Si tu tiens à utiliser la technique que tu as développée, le plus simple
reste sans doute de remplir ton combobox par la méthode Additem en
controlant ce remplissage via une vérification de la valeur de chacune
des lignes ( dans ton exemple , les lignes xx de la colonne 40)
A+
Merci,
je fais faire une boucle et un Additem à l'interieur.
Si j'ai tout compris , mais rien n'est moins sur !!!.
Tu ne peux affecter un ListFillRange qu'avec quelque chose qui rappelle à Excel une plage contigue et ce au format texte, donc ton affaire d'affectation avec des virgules qui sépare les valeurs est vouée à l'échec
Si tu tiens à utiliser la technique que tu as développée, le plus simple reste sans doute de remplir ton combobox par la méthode Additem en controlant ce remplissage via une vérification de la valeur de chacune des lignes ( dans ton exemple , les lignes xx de la colonne 40)
A+
Merci,
je fais faire une boucle et un Additem à l'interieur.
José
anonymousA
Ben , bien sur ca marche quand même.On désigne un objet par son nom, ici sheets("PARAMETRES").Ca suffit pour VBA car du coup, il sait quel est le type de l'objet et donc les propréiétés et méthodes possibles afférentes.En +, il sait dans la collection de ces objets de quel objet précis il s'agit et donc en utlisant le tout, il peut renvoyer toutes les infos possibles de cet objet et exécuter toutes les commandes sur cet objet sans obligation de se déplacer dessus.
A+
Il n'est quasiment jamais nécéssaire de faire appel à Select pour faire quelque chose. Travaille plutot sur le changement de tes SELECT par autre chose et tu t'en sortiras très bien.
exemple: le combobox appelé cb1 se trouve dans la feuile qui est activée et les données qui permettent de remplir ce combobox se trouvent en Feuille PARAMETRES.Au passage on fait un petit test sur les cellules de A1 à A16 de la feuille PARAMETRES pour vérifier si elles contiennent qqchose avant de remplir le combobox
Private Sub Worksheet_Activate()
With sheets("PARAMETRES") For each c in .range("A1:A16") if not Isempty(c) then Me.cb1.Additem c.value Next End with
End Sub
On voit bien qu'il n'y a eu aucune sélection.Pour autant le combobox sera correctement rempli
A+
mais la Private Sub Worksheet_Activate() se trouve dans une AUTRE feuille que la feuille "PARAMETRES", et çà marche quand même ?
Merci José
Ben , bien sur ca marche quand même.On désigne un objet par son nom, ici
sheets("PARAMETRES").Ca suffit pour VBA car du coup, il sait quel est le
type de l'objet et donc les propréiétés et méthodes possibles
afférentes.En +, il sait dans la collection de ces objets de quel objet
précis il s'agit et donc en utlisant le tout, il peut renvoyer toutes
les infos possibles de cet objet et exécuter toutes les commandes sur
cet objet sans obligation de se déplacer dessus.
A+
Il n'est quasiment jamais nécéssaire de faire appel à Select pour
faire quelque chose. Travaille plutot sur le changement de tes SELECT
par autre chose et tu t'en sortiras très bien.
exemple:
le combobox appelé cb1 se trouve dans la feuile qui est activée et
les données qui permettent de remplir ce combobox se trouvent en
Feuille PARAMETRES.Au passage on fait un petit test sur les cellules de
A1 à A16 de la feuille PARAMETRES pour vérifier si elles contiennent
qqchose avant de remplir le combobox
Private Sub Worksheet_Activate()
With sheets("PARAMETRES")
For each c in .range("A1:A16")
if not Isempty(c) then Me.cb1.Additem c.value
Next
End with
End Sub
On voit bien qu'il n'y a eu aucune sélection.Pour autant le combobox
sera correctement rempli
A+
mais la Private Sub Worksheet_Activate() se trouve dans une AUTRE
feuille que la feuille "PARAMETRES", et çà marche quand même ?
Ben , bien sur ca marche quand même.On désigne un objet par son nom, ici sheets("PARAMETRES").Ca suffit pour VBA car du coup, il sait quel est le type de l'objet et donc les propréiétés et méthodes possibles afférentes.En +, il sait dans la collection de ces objets de quel objet précis il s'agit et donc en utlisant le tout, il peut renvoyer toutes les infos possibles de cet objet et exécuter toutes les commandes sur cet objet sans obligation de se déplacer dessus.
A+
Il n'est quasiment jamais nécéssaire de faire appel à Select pour faire quelque chose. Travaille plutot sur le changement de tes SELECT par autre chose et tu t'en sortiras très bien.
exemple: le combobox appelé cb1 se trouve dans la feuile qui est activée et les données qui permettent de remplir ce combobox se trouvent en Feuille PARAMETRES.Au passage on fait un petit test sur les cellules de A1 à A16 de la feuille PARAMETRES pour vérifier si elles contiennent qqchose avant de remplir le combobox
Private Sub Worksheet_Activate()
With sheets("PARAMETRES") For each c in .range("A1:A16") if not Isempty(c) then Me.cb1.Additem c.value Next End with
End Sub
On voit bien qu'il n'y a eu aucune sélection.Pour autant le combobox sera correctement rempli
A+
mais la Private Sub Worksheet_Activate() se trouve dans une AUTRE feuille que la feuille "PARAMETRES", et çà marche quand même ?
Merci José
Alfred Wallace
Il n'est quasiment jamais nécéssaire de faire appel à Select pour faire quelque chose. Travaille plutot sur le changement de tes SELECT par autre chose et tu t'en sortiras très bien.
exemple: le combobox appelé cb1 se trouve dans la feuile qui est activée et les données qui permettent de remplir ce combobox se trouvent en Feuille PARAMETRES.Au passage on fait un petit test sur les cellules de A1 à A16 de la feuille PARAMETRES pour vérifier si elles contiennent qqchose avant de remplir le combobox
Private Sub Worksheet_Activate()
With sheets("PARAMETRES") For each c in .range("A1:A16") if not Isempty(c) then Me.cb1.Additem c.value Next End with
End Sub
On voit bien qu'il n'y a eu aucune sélection.Pour autant le combobox sera correctement rempli
A+
mais la Private Sub Worksheet_Activate() se trouve dans une AUTRE feuille que la feuille "PARAMETRES", et çà marche quand même ?
Merci José
Il n'est quasiment jamais nécéssaire de faire appel à Select pour
faire quelque chose. Travaille plutot sur le changement de tes SELECT
par autre chose et tu t'en sortiras très bien.
exemple:
le combobox appelé cb1 se trouve dans la feuile qui est activée et
les données qui permettent de remplir ce combobox se trouvent en
Feuille PARAMETRES.Au passage on fait un petit test sur les cellules de
A1 à A16 de la feuille PARAMETRES pour vérifier si elles contiennent
qqchose avant de remplir le combobox
Private Sub Worksheet_Activate()
With sheets("PARAMETRES")
For each c in .range("A1:A16")
if not Isempty(c) then Me.cb1.Additem c.value
Next
End with
End Sub
On voit bien qu'il n'y a eu aucune sélection.Pour autant le combobox
sera correctement rempli
A+
mais la Private Sub Worksheet_Activate() se trouve dans une AUTRE
feuille que la feuille "PARAMETRES", et çà marche quand même ?
Il n'est quasiment jamais nécéssaire de faire appel à Select pour faire quelque chose. Travaille plutot sur le changement de tes SELECT par autre chose et tu t'en sortiras très bien.
exemple: le combobox appelé cb1 se trouve dans la feuile qui est activée et les données qui permettent de remplir ce combobox se trouvent en Feuille PARAMETRES.Au passage on fait un petit test sur les cellules de A1 à A16 de la feuille PARAMETRES pour vérifier si elles contiennent qqchose avant de remplir le combobox
Private Sub Worksheet_Activate()
With sheets("PARAMETRES") For each c in .range("A1:A16") if not Isempty(c) then Me.cb1.Additem c.value Next End with
End Sub
On voit bien qu'il n'y a eu aucune sélection.Pour autant le combobox sera correctement rempli
A+
mais la Private Sub Worksheet_Activate() se trouve dans une AUTRE feuille que la feuille "PARAMETRES", et çà marche quand même ?