Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

erreur compil : type defini par l'utilisateur non defini ? qu'est ce que j'oublie ?

15 réponses
Avatar
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)


ai-je oubli=E9 quelque chose svp ?

Merci

Jos=E9

10 réponses

1 2
Avatar
anonymousA
peut-être simplement interger qui devrait être integer ?

A+

Alfred WALLACE wrote:
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 = 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 = ActiveCell.Value
No_Event = True
Sheets("PARAMETRES").Visible = False
Sheets(nomfeuille).Select
End Function

qui me fait à l'execution :
Erreur de compilation :
type defini par l'utilisateur non defini



je voudrais l'utiliser comme çà :
Sheets(nomfeuille).CBB_champ_de_page.Visible =
renvoie_propri("CBB_champ_de_page.Visible", nomfeuille, 7)


ai-je oublié quelque chose svp ?

Merci

José


Avatar
lSteph
Bonjour,
peut-être integer au lieu de interger
Function ...
interger)



Pour une ligne long est souvent préférable!


Cordialement.

lSteph
"Alfred WALLACE" a écrit dans le message de news:

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 = 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 = ActiveCell.Value
No_Event = True
Sheets("PARAMETRES").Visible = False
Sheets(nomfeuille).Select
End Function

qui me fait à l'execution :
Erreur de compilation :
type defini par l'utilisateur non defini



je voudrais l'utiliser comme çà :
Sheets(nomfeuille).CBB_champ_de_page.Visible renvoie_propri("CBB_champ_de_page.Visible", nomfeuille, 7)


ai-je oublié quelque chose svp ?

Merci

José


Avatar
AV
M'est avis qu'il y a une très grande confusion entre macro et fonction perso...
Une fonction ne renvoie qu'un résultat ...

AV
Avatar
lSteph
j'ajouterais ...aussi ...pourquoi des select dans une fonction??
et à la fin renvoie_propri =..quoi?

'lSteph

"lSteph" a écrit dans le message de news:

Bonjour,
peut-être integer au lieu de interger
Function ...
interger)



Pour une ligne long est souvent préférable!


Cordialement.

lSteph
"Alfred WALLACE" a écrit dans le message de news:

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 = 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 = ActiveCell.Value
No_Event = True
Sheets("PARAMETRES").Visible = False
Sheets(nomfeuille).Select
End Function

qui me fait à l'execution :
Erreur de compilation :
type defini par l'utilisateur non defini



je voudrais l'utiliser comme çà :
Sheets(nomfeuille).CBB_champ_de_page.Visible > renvoie_propri("CBB_champ_de_page.Visible", nomfeuille, 7)


ai-je oublié quelque chose svp ?

Merci

José






Avatar
Alfred WALLACE
Ah ... heu .....

anonce :

"Cherche une pair d'yeux" ...(et un cerveau en option)


José
Avatar
anonymousA
Effectivement, comme dirait l'autre, y' a de la "confuse" dans l'air,
d'autant entre autres "confuses" que si ta fonction ne change jamais de
valeur (donc par défaut est toujours à False) , quel est l'interêt
de passer par une fonction ? Autant tout de suite mettre
Sheets(nomfeuille).CBB_champ_de_page.Visible lse. Ca ira + vite.

A+

anonymousA wrote:
peut-être simplement interger qui devrait être integer ?

A+

Alfred WALLACE wrote:
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 = 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 = ActiveCell.Value
No_Event = True
Sheets("PARAMETRES").Visible = False
Sheets(nomfeuille).Select
End Function

qui me fait à l'execution :
Erreur de compilation :
type defini par l'utilisateur non defini



je voudrais l'utiliser comme çà :
Sheets(nomfeuille).CBB_champ_de_page.Visible =
renvoie_propri("CBB_champ_de_page.Visible", nomfeuille, 7)


ai-je oublié quelque chose svp ?

Merci

José




Avatar
Alfred WALLACE
AV wrote:
M'est avis qu'il y a une très grande confusion entre macro et fonction perso...
Une fonction ne renvoie qu'un résultat ...

AV


AV, merci, mais pourrais tu me préciser si je peux definir une
fonction
as variant ?

en effet, dans le code principal j'ai :

Sheets(nomfeuille).CBB_champ_de_page.ListFillRange =
fillrange(nom_feuille,9)

le but est d'avoir un range varianble en fonction de la feuille
nom_feuille dans lequel
se trouve mon combobox.


Merci
José

Avatar
Alfred WALLACE
anonymousA wrote:
Effectivement, comme dirait l'autre, y' a de la "confuse" dans l'air,
d'autant entre autres "confuses" que si ta fonction ne change jamais de
valeur (donc par défaut est toujours à False) , quel est l'interêt
de passer par une fonction ? Autant tout de suite mettre
Sheets(nomfeuille).CBB_champ_de_page.Visible lse. Ca ira + vite.


bon, voilà ce que j'essaye de faire depuis des semaines...(voir
lorsque je parle de feuille modele que je cherche à dupliquer)

ma feuille modele contiend des CBB. j'accede à mes cbb effectivement
comme çà :
Sheets(nomfeuille).CBBxxxx.Visible = <la valeur voulue>

en mettant une fonction pour me ramener cette valeur voulue, je
duplique
la feuille modele, je lui donne un nom (de feuille) "toto", et, ma
fonction se charge de retrouver dans une feuille parametre la valeur
cherchée, par exemple pour la colonne "toto" à l'indice "ligne" je
vais trouver "VRAI".... celui de la colonne à coté (donc une autre
feuille) pourra être à "faux".
Lorsque je voudrai créer de nouvelles feuilles issues de mon modele,
je n'aurai qu'à
remplir une colonne de plus dans ma feuille parametre, au lieux de
tripoter si maladroitement (comme vous l'avez vu) mon code VBA ...


Si t'es toujours vivant après çà, j'ai une question :
donc, la colonne "toto" à la ligne 12 contiend, par exemple un chiffre
40.
la ligne 12 correspond au listfillrange de la CBB concernée.
Ce 40 me dis que, la liste des valeurs à mettre dans le listfillrange
se trouve à
la 40ieme colonne d'un range defini ailleurs et qui contiend ceci :
COL40LIGNExx "AAAAAAA"
COL40LIGNExx+1 "BBBBBBB"
COL40LIGNExx+2 <rien_ici>
COL40LIGNExx+3 "DDDDDDDD"

est-ce que je peux écrire :

Sheets(nomfeuille).CBBxxxx.listfillrange = remplissage(nomfeuille,12)

et remplissage sera defini as variant ? et pourra donc retourner les
valeurs
"AAAAAAA","BBBBBBB","DDDDDDDD"


je ne peux pas écrire :
Sheets(nomfeuille).CBBxxxx.listfillrange = "parametre![AA10:AA30]"
parceque
il y a des cellules vides là dedans

ouf....

Avatar
anonymousA
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+

anonymousA wrote:
Effectivement, comme dirait l'autre, y' a de la "confuse" dans l'air,
d'autant entre autres "confuses" que si ta fonction ne change jamais de
valeur (donc par défaut est toujours à False) , quel est l'interêt
de passer par une fonction ? Autant tout de suite mettre
Sheets(nomfeuille).CBB_champ_de_page.Visible úlse. Ca ira + vite.


bon, voilà ce que j'essaye de faire depuis des semaines...(voir
lorsque je parle de feuille modele que je cherche à dupliquer)

ma feuille modele contiend des CBB. j'accede à mes cbb effectivement
comme çà :
Sheets(nomfeuille).CBBxxxx.Visible = <la valeur voulue>

en mettant une fonction pour me ramener cette valeur voulue, je
duplique
la feuille modele, je lui donne un nom (de feuille) "toto", et, ma
fonction se charge de retrouver dans une feuille parametre la valeur
cherchée, par exemple pour la colonne "toto" à l'indice "ligne" je
vais trouver "VRAI".... celui de la colonne à coté (donc une autre
feuille) pourra être à "faux".
Lorsque je voudrai créer de nouvelles feuilles issues de mon modele,
je n'aurai qu'à
remplir une colonne de plus dans ma feuille parametre, au lieux de
tripoter si maladroitement (comme vous l'avez vu) mon code VBA ...


Si t'es toujours vivant après çà, j'ai une question :
donc, la colonne "toto" à la ligne 12 contiend, par exemple un chiffre
40.
la ligne 12 correspond au listfillrange de la CBB concernée.
Ce 40 me dis que, la liste des valeurs à mettre dans le listfillrange
se trouve à
la 40ieme colonne d'un range defini ailleurs et qui contiend ceci :
COL40LIGNExx "AAAAAAA"
COL40LIGNExx+1 "BBBBBBB"
COL40LIGNExx+2 <rien_ici>
COL40LIGNExx+3 "DDDDDDDD"

est-ce que je peux écrire :

Sheets(nomfeuille).CBBxxxx.listfillrange = remplissage(nomfeuille,12)

et remplissage sera defini as variant ? et pourra donc retourner les
valeurs
"AAAAAAA","BBBBBBB","DDDDDDDD"


je ne peux pas écrire :
Sheets(nomfeuille).CBBxxxx.listfillrange = "parametre![AA10:AA30]"
parceque
il y a des cellules vides là dedans

ouf....




Avatar
Alfred WALLACE
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 s imple
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é

1 2