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

5 réponses

1 2
Avatar
anonymousA
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é



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

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



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

1 2