Modification de la propriété d'une combobox...avec for each
1 réponse
jaba
Salut à tous...!
J'essaie tant bien que mal de résoudre depuis des jours mais malheureusment
sans résultat.
Je suis en train de construire une feuille de calcul où une combobox VBA me
proposera d'afficher ou de cacher une autre combobox.
j'ai réussi à écrire la code qui suit:
Sub display_hide_2()
Dim Ctrl As MSForms.Control
Dim pos, pos2 As Single
Dim nom As String
Application.ScreenUpdating = False
On Error Resume Next
pos = Worksheets("devis").Cells(10, 5)
pos2 = pos + 1
For Each Ctrl In Sheets("devis").Controls
nom = "combobox" & pos2
If Ctrl.Name = nom And Worksheets("lien").Cells(pos + 1, 3) = 1 Then
nom = Ctrl.Name
Sheets("devis").ActiveControl.Visible = False
End If
If Ctrl.Name = "ComboBox" & pos2 And Worksheets("lien").Cells(pos + 1,
3) = 0 Then Sheets("devis").Ctrl.Visible = True
Next
Je fais donc une routine dans tous les controls de ma feuille et dès que je
tombe sur la combobox qui a été sélectionner précédemment je l'affiche ou je
la cache selon ce qu'il y a dans la cellule cells(pos+1,3).
Donc 1 problème me gène:
je n'arrive pas rendre visible ou invisible le controls .Pour que cela
soient possible il faut impérativement mettre le nom de la combobox tel
Sheets("devis").combobox2.Visible = False
mais à ce moment là, la routine ne sert plus à rien et le code est
interminable.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
jaba
bonsoir...
en fait je me répond à moi meme...au cas ou quelqu'un d'autre ai rencontré ce problème.
j'ai donc abandonné for each qui de toute ne fonctionnait pas sur la feuille (apparement que sur une userform). voici le résultat
nom = "combobox" & pos2 ' est le nom de la combobox qui doit etre modifié
If Worksheets("lien").Cells(pos + 1, 3) = 1 Then 'si la cbox est deja visible, je la cache ActiveSheet.Shapes(nom).Select Selection.Visible = False End If
en fait c'était tout con et je me suis compliqué la vie
a+
Salut à tous...!
J'essaie tant bien que mal de résoudre depuis des jours mais malheureusment sans résultat.
Je suis en train de construire une feuille de calcul où une combobox VBA me proposera d'afficher ou de cacher une autre combobox.
j'ai réussi à écrire la code qui suit:
Sub display_hide_2()
Dim Ctrl As MSForms.Control Dim pos, pos2 As Single Dim nom As String Application.ScreenUpdating = False On Error Resume Next
pos = Worksheets("devis").Cells(10, 5)
pos2 = pos + 1 For Each Ctrl In Sheets("devis").Controls nom = "combobox" & pos2 If Ctrl.Name = nom And Worksheets("lien").Cells(pos + 1, 3) = 1 Then nom = Ctrl.Name Sheets("devis").ActiveControl.Visible = False End If If Ctrl.Name = "ComboBox" & pos2 And Worksheets("lien").Cells(pos + 1, 3) = 0 Then Sheets("devis").Ctrl.Visible = True
Next
Je fais donc une routine dans tous les controls de ma feuille et dès que je tombe sur la combobox qui a été sélectionner précédemment je l'affiche ou je la cache selon ce qu'il y a dans la cellule cells(pos+1,3).
Donc 1 problème me gène: je n'arrive pas rendre visible ou invisible le controls .Pour que cela soient possible il faut impérativement mettre le nom de la combobox tel Sheets("devis").combobox2.Visible = False
mais à ce moment là, la routine ne sert plus à rien et le code est interminable.
Y a t 'il un moen de passer outre??'
aider moi svp
jaba
bonsoir...
en fait je me répond à moi meme...au cas ou quelqu'un d'autre ai rencontré
ce problème.
j'ai donc abandonné for each qui de toute ne fonctionnait pas sur la feuille
(apparement que sur une userform). voici le résultat
nom = "combobox" & pos2 ' est le nom de la combobox qui doit etre modifié
If Worksheets("lien").Cells(pos + 1, 3) = 1 Then 'si la cbox est deja
visible, je la cache
ActiveSheet.Shapes(nom).Select
Selection.Visible = False
End If
en fait c'était tout con et je me suis compliqué la vie
a+
Salut à tous...!
J'essaie tant bien que mal de résoudre depuis des jours mais malheureusment
sans résultat.
Je suis en train de construire une feuille de calcul où une combobox VBA me
proposera d'afficher ou de cacher une autre combobox.
j'ai réussi à écrire la code qui suit:
Sub display_hide_2()
Dim Ctrl As MSForms.Control
Dim pos, pos2 As Single
Dim nom As String
Application.ScreenUpdating = False
On Error Resume Next
pos = Worksheets("devis").Cells(10, 5)
pos2 = pos + 1
For Each Ctrl In Sheets("devis").Controls
nom = "combobox" & pos2
If Ctrl.Name = nom And Worksheets("lien").Cells(pos + 1, 3) = 1 Then
nom = Ctrl.Name
Sheets("devis").ActiveControl.Visible = False
End If
If Ctrl.Name = "ComboBox" & pos2 And Worksheets("lien").Cells(pos + 1,
3) = 0 Then Sheets("devis").Ctrl.Visible = True
Next
Je fais donc une routine dans tous les controls de ma feuille et dès que je
tombe sur la combobox qui a été sélectionner précédemment je l'affiche ou je
la cache selon ce qu'il y a dans la cellule cells(pos+1,3).
Donc 1 problème me gène:
je n'arrive pas rendre visible ou invisible le controls .Pour que cela
soient possible il faut impérativement mettre le nom de la combobox tel
Sheets("devis").combobox2.Visible = False
mais à ce moment là, la routine ne sert plus à rien et le code est
interminable.
en fait je me répond à moi meme...au cas ou quelqu'un d'autre ai rencontré ce problème.
j'ai donc abandonné for each qui de toute ne fonctionnait pas sur la feuille (apparement que sur une userform). voici le résultat
nom = "combobox" & pos2 ' est le nom de la combobox qui doit etre modifié
If Worksheets("lien").Cells(pos + 1, 3) = 1 Then 'si la cbox est deja visible, je la cache ActiveSheet.Shapes(nom).Select Selection.Visible = False End If
en fait c'était tout con et je me suis compliqué la vie
a+
Salut à tous...!
J'essaie tant bien que mal de résoudre depuis des jours mais malheureusment sans résultat.
Je suis en train de construire une feuille de calcul où une combobox VBA me proposera d'afficher ou de cacher une autre combobox.
j'ai réussi à écrire la code qui suit:
Sub display_hide_2()
Dim Ctrl As MSForms.Control Dim pos, pos2 As Single Dim nom As String Application.ScreenUpdating = False On Error Resume Next
pos = Worksheets("devis").Cells(10, 5)
pos2 = pos + 1 For Each Ctrl In Sheets("devis").Controls nom = "combobox" & pos2 If Ctrl.Name = nom And Worksheets("lien").Cells(pos + 1, 3) = 1 Then nom = Ctrl.Name Sheets("devis").ActiveControl.Visible = False End If If Ctrl.Name = "ComboBox" & pos2 And Worksheets("lien").Cells(pos + 1, 3) = 0 Then Sheets("devis").Ctrl.Visible = True
Next
Je fais donc une routine dans tous les controls de ma feuille et dès que je tombe sur la combobox qui a été sélectionner précédemment je l'affiche ou je la cache selon ce qu'il y a dans la cellule cells(pos+1,3).
Donc 1 problème me gène: je n'arrive pas rendre visible ou invisible le controls .Pour que cela soient possible il faut impérativement mettre le nom de la combobox tel Sheets("devis").combobox2.Visible = False
mais à ce moment là, la routine ne sert plus à rien et le code est interminable.