OVH Cloud OVH Cloud

besoin d'une confirmation : attendre le nom d'une Combobox variable ?

10 réponses
Avatar
Alfred WALLACE
Bonjour

j'ai une feuille qui contiend des combobox (cbb_xxxxxxxx), par exemple
:
Sheets(nomfeuille).CBB_champ_de_page.Locked =3D True
Sheets(nomfeuille).CBB_champ_de_page.Enabled =3D False

Dans une autre feuille, je souhaite avoir les parametres de cette cbb :


AA1 : champ_de_page
AA2 : visible oui/non
AA3 : modifiable oui/non
AA4 : la_colonne_contenant_les_valeurs_dinit (par exemple D, et D
contiend "AAAA","BBB")
AA5 : la_colonne_contenant_la_valeur_affichee (par exemple E,
contenand "BBB")

je voudrais savoir si je peux =E9crire quelque chose comme :

Sheets(nomfeuille).CBB_ <nom de ma cbb en AA1> . Enabled =3D [AA2].value

Sheets(nomfeuille).CBB_ & [AA1].value.Locked =3D [AA3].value

je voudrais donc pouvoir param=E9trer mes CBB avec une feuille excel
PARAMETRES et donc
j'ai besoin d'y acceder en VBA.........

est-ce possible ?

Merci

Jos=E9

10 réponses

Avatar
papou
Bonjour
Dans ton code VBA, tu peux utiliser le codename de tes feuilles pour accéder
aux objets et valeurs.
Donc par exemple ceci, avec une feuille dont le codename est Feuil2 en tant
que feuille contenant les paramètres et dont la cellule A1 contient la
valeur VRAI ou FAUX :

Feuil1.ComboBox1.Enabled = Feuil2.[A1]

Cordialement
Pascal

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

Bonjour

j'ai une feuille qui contiend des combobox (cbb_xxxxxxxx), par exemple
:
Sheets(nomfeuille).CBB_champ_de_page.Locked = True
Sheets(nomfeuille).CBB_champ_de_page.Enabled = False

Dans une autre feuille, je souhaite avoir les parametres de cette cbb :


AA1 : champ_de_page
AA2 : visible oui/non
AA3 : modifiable oui/non
AA4 : la_colonne_contenant_les_valeurs_dinit (par exemple D, et D
contiend "AAAA","BBB")
AA5 : la_colonne_contenant_la_valeur_affichee (par exemple E,
contenand "BBB")

je voudrais savoir si je peux écrire quelque chose comme :

Sheets(nomfeuille).CBB_ <nom de ma cbb en AA1> . Enabled = [AA2].value

Sheets(nomfeuille).CBB_ & [AA1].value.Locked = [AA3].value

je voudrais donc pouvoir paramétrer mes CBB avec une feuille excel
PARAMETRES et donc
j'ai besoin d'y acceder en VBA.........

est-ce possible ?

Merci

José
Avatar
Alfred WALLACE
papou wrote:
Bonjour
Dans ton code VBA, tu peux utiliser le codename de tes feuilles pour acc éder
aux objets et valeurs.
Donc par exemple ceci, avec une feuille dont le codename est Feuil2 en ta nt
que feuille contenant les paramètres et dont la cellule A1 contient la
valeur VRAI ou FAUX :

Feuil1.ComboBox1.Enabled = Feuil2.[A1]

Cordialement
Pascal


Merci pascal pour ta réponse, mais non, ce n'est pas ce que je veux
faire.
En effet,mes combobox ne sont pas dans un userform, mais dans la
feuille elle meme.
Et comme c'est une feuille que j'utilise comme modele que je duplique,
je ne peux pas savoir "à l'avance" le codename.... enfin, je crois ?

j'avais lu des messages utilisant .controls (par exemple ce message ci
:
http://minilien.com/?gWu1ABil8l

et plus particulièrement çà :
Dim Ctrl as Control
For each Ctrl in MultiPage1.Pages("page1").Controls
Select Case TypeName(Ctrl)
Case "TextBox"
Ctrl = ""
Case "ListBox", "ComboBox"
Ctrl.ListIndex = -1
End Select
Next

mais si j'écris çà
For each Ctrl in sheets(mafeuille).Controls <-- çà ne veut pas....

Une idée ?

Merci

José

Avatar
Alfred WALLACE
Alfred WALLACE wrote:
papou wrote:
Bonjour
Dans ton code VBA, tu peux utiliser le codename de tes feuilles pour ac céder
aux objets et valeurs.
Donc par exemple ceci, avec une feuille dont le codename est Feuil2 en tant
que feuille contenant les paramètres et dont la cellule A1 contient la
valeur VRAI ou FAUX :

Feuil1.ComboBox1.Enabled = Feuil2.[A1]

Cordialement
Pascal



Je continue (ou plutôt me reprend), j'ai trouve çà :
http://groups.google.com/group/microsoft.public.fr.excel/browse_thread/thre ad/bad8ea833fd69ed1/6f6b7eb7701018fb?lnk=gst&q=propri%C3%A9t%C3%A9+cont rols&rnum=6#6f6b7eb7701018fb

(minilien : http://minilien.com/?uNxnNf0Vof désolé pour la pub)

est-ce que je peux me servir de

ActiveSheet.Shapes(nom).Select avec nom = "CBB_champ_de_page"

puis dire :

Selection.Locked = True

si çà marchais se serait genial !

un petit coup de main ? svp ?

merci

José


Avatar
JB
Bonjour,


Sub ComboFeuille()
For Each c In ActiveSheet.OLEObjects
If Left(c.Name, 5) = "Combo" Then
c.ListFillRange = "liste"
End If
Next
End Sub

Cordialement JB

Alfred WALLACE wrote:
papou wrote:
Bonjour
Dans ton code VBA, tu peux utiliser le codename de tes feuilles pour accéder
aux objets et valeurs.
Donc par exemple ceci, avec une feuille dont le codename est Feuil2 e n tant
que feuille contenant les paramètres et dont la cellule A1 contient la
valeur VRAI ou FAUX :

Feuil1.ComboBox1.Enabled = Feuil2.[A1]

Cordialement
Pascal



Je continue (ou plutôt me reprend), j'ai trouve çà :
http://groups.google.com/group/microsoft.public.fr.excel/browse_thread/th read/bad8ea833fd69ed1/6f6b7eb7701018fb?lnk=gst&q=propri%C3%A9t%C3%A9+co ntrols&rnum=6#6f6b7eb7701018fb

(minilien : http://minilien.com/?uNxnNf0Vof désolé pour la pub)

est-ce que je peux me servir de

ActiveSheet.Shapes(nom).Select avec nom = "CBB_champ_de_page"

puis dire :

Selection.Locked = True

si çà marchais se serait genial !

un petit coup de main ? svp ?

merci

José




Avatar
Alfred WALLACE
Alfred WALLACE wrote:
Je continue (ou plutôt me reprend), j'ai trouve çà :
(minilien : http://minilien.com/?uNxnNf0Vof désolé pour la pub)
est-ce que je peux me servir de
ActiveSheet.Shapes(nom).Select avec nom = "CBB_champ_de_page"
puis dire :
Selection.Locked = True
si çà marchais se serait genial !
un petit coup de main ? svp ?
merci
José


Ben, je suis pas génial, parce que ben... çà marche pô ....

nom_ctrl = "CBB_champ_de_page"

ActiveSheet.Shapes(nom_ctrl).Select
Sheets(nomfeuille).Selection.Value = "lulu"

me fait un message d'erreur à l'execution :
"propriété ou méthode non gerée par cet objet" ....

je suis coincé....y'a vraiment rien à faire ??

Merci
José

Avatar
JB
http://cjoint.com/?iyqNbYBp6w

JB wrote:
Bonjour,


Sub ComboFeuille()
For Each c In ActiveSheet.OLEObjects
If Left(c.Name, 5) = "Combo" Then
c.ListFillRange = "liste"
End If
Next
End Sub

Cordialement JB

Alfred WALLACE wrote:
papou wrote:
Bonjour
Dans ton code VBA, tu peux utiliser le codename de tes feuilles pou r accéder
aux objets et valeurs.
Donc par exemple ceci, avec une feuille dont le codename est Feuil2 en tant
que feuille contenant les paramètres et dont la cellule A1 contie nt la
valeur VRAI ou FAUX :

Feuil1.ComboBox1.Enabled = Feuil2.[A1]

Cordialement
Pascal



Je continue (ou plutôt me reprend), j'ai trouve çà :
http://groups.google.com/group/microsoft.public.fr.excel/browse_thread/ thread/bad8ea833fd69ed1/6f6b7eb7701018fb?lnk=gst&q=propri%C3%A9t%C3%A9+ controls&rnum=6#6f6b7eb7701018fb

(minilien : http://minilien.com/?uNxnNf0Vof désolé pour la pub)

est-ce que je peux me servir de

ActiveSheet.Shapes(nom).Select avec nom = "CBB_champ_de_page"

puis dire :

Selection.Locked = True

si çà marchais se serait genial !

un petit coup de main ? svp ?

merci

José






Avatar
Alfred Wallace
http://cjoint.com/?iyqNbYBp6w

JB wrote:

Bonjour,


Sub ComboFeuille()
For Each c In ActiveSheet.OLEObjects
If Left(c.Name, 5) = "Combo" Then
c.ListFillRange = "liste"
End If
Next
End Sub

Cordialement JB




Merci bien !!!
je supose que je peux remplacer .listfillRange par une autre propriété
(hidden ou autres ?)

cordialement et bonne journée !

José


Avatar
papou
Bonjour
Si tes contrôles sont issus de la boîte à outils contrôle, reconsidère mon
message d'hier (qui concernait bien des contrôles sur une feuille malgré ce
que tu m'as répondu)

Cordialement
Pascal

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


Alfred WALLACE wrote:
Je continue (ou plutôt me reprend), j'ai trouve çà :
(minilien : http://minilien.com/?uNxnNf0Vof désolé pour la pub)
est-ce que je peux me servir de
ActiveSheet.Shapes(nom).Select avec nom = "CBB_champ_de_page"
puis dire :
Selection.Locked = True
si çà marchais se serait genial !
un petit coup de main ? svp ?
merci
José


Ben, je suis pas génial, parce que ben... çà marche pô ....

nom_ctrl = "CBB_champ_de_page"

ActiveSheet.Shapes(nom_ctrl).Select
Sheets(nomfeuille).Selection.Value = "lulu"

me fait un message d'erreur à l'execution :
"propriété ou méthode non gerée par cet objet" ....

je suis coincé....y'a vraiment rien à faire ??

Merci
José

Avatar
papou
Re
Pour compléter la démonstration ici en PJ :
http://cjoint.com/data/izmrKBji7E.htm

Cordialement
Pascal

"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de news:

Bonjour
Si tes contrôles sont issus de la boîte à outils contrôle, reconsidère mon
message d'hier (qui concernait bien des contrôles sur une feuille malgré
ce que tu m'as répondu)

Cordialement
Pascal

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


Alfred WALLACE wrote:
Je continue (ou plutôt me reprend), j'ai trouve çà :
(minilien : http://minilien.com/?uNxnNf0Vof désolé pour la pub)
est-ce que je peux me servir de
ActiveSheet.Shapes(nom).Select avec nom = "CBB_champ_de_page"
puis dire :
Selection.Locked = True
si çà marchais se serait genial !
un petit coup de main ? svp ?
merci
José


Ben, je suis pas génial, parce que ben... çà marche pô ....

nom_ctrl = "CBB_champ_de_page"

ActiveSheet.Shapes(nom_ctrl).Select
Sheets(nomfeuille).Selection.Value = "lulu"

me fait un message d'erreur à l'execution :
"propriété ou méthode non gerée par cet objet" ....

je suis coincé....y'a vraiment rien à faire ??

Merci
José





Avatar
JB
Je ne sais pas si cela peut t'aider:


http://cjoint.com/?iAqiTW3xzm

Sub EssaiCombo()
' B1:Nom combo,B2:visibilité,B3:Autorisé,B4:Source
Call Combo([B1], [B2], [B3], [B4])
End Sub

Sub Combo(Optional NomCombo, Optional visibilité, Optional Autorisé,
Optional Source)
For Each c In ActiveSheet.OLEObjects
If UCase(c.Name) = UCase(NomCombo) Then
c.Visible = visibilité
c.enabled = Autorisé
c.ListFillRange = Source
End If
Next
End Sub

Pour simuler les champs indicés des formulaires:

Sub EssaiIndicé()
For i = 1 To 5
Call Combo("ComboBox" & i, True, True, "D2:D4")
Next i

For i = 1 To 3
Call Combo("Toto" & i, True, True, "D2:D4")
Next i
End Sub

JB



http://cjoint.com/?iyqNbYBp6w

JB wrote:

Bonjour,


Sub ComboFeuille()
For Each c In ActiveSheet.OLEObjects
If Left(c.Name, 5) = "Combo" Then
c.ListFillRange = "liste"
End If
Next
End Sub

Cordialement JB




Merci bien !!!
je supose que je peux remplacer .listfillRange par une autre propriét é
(hidden ou autres ?)

cordialement et bonne journée !

José