flo666fly
Messages postés2Date d'inscriptionlundi 3 mai 2010StatutMembreDernière intervention 3 mai 2010
-
3 mai 2010 à 11:52
flo666fly
Messages postés2Date d'inscriptionlundi 3 mai 2010StatutMembreDernière intervention 3 mai 2010
-
3 mai 2010 à 15:02
Bonjour à toutes et à tous,
Je suis débutant en VBA et surtout pour la gestion des interfaces graphiques simples. Je viens à vous après avoir cherché, un peu partout sur le net, les instructions pour se servir d'une Combobox à partir d'une feuille.
Pour résumé mon problème est très simple. Comme je n'utilise pas de UF, j'utilise très certainement des commandes qu'Excel ne veut pas comprendre sur une feuille. Passons l'introduction et rentrons dans le vif du sujet.
J'appuie sur un boutton start "OK_1" (un peu plus bas). Celui-ci démarre avec la vérification au réalable que tout est à zéro, pour l'instant pas de souci, sauf pour la Combobx mais j'y reviendrai, voici le code:
If Sheet5.Choice_tech.ListCount > 0 Then
Sheet5.Choice_tech.Clear
End If
End Sub
Je souhaiterai à partir d'une liste "Clamps" dans une "Sheet6", faire migrer ma liste vers une Combobox en "Sheet5" en cliquant dans une CheckBox "OK_1". Pour l'instant rien de bien méchant, j'ai même réussi à remplir ma ComboBox avec ça:
Sub OK_1_Click()
Call Reset_Click '----> remise à zéro si évaluation avec "OK_1" puis recherche de la combinaison des CheckBox "Fooded et Broken_armors"
If Other1.Value = False Then
If Flooded.Value True And Broken_armors True Then
Sheet5.Select
Sheet5.Choice_tech.ListFillRange = "Clamps"
ElseIf Flooded.Value True And Broken_armors False Then
Sheet5.Choice_tech.ListFillRange = "Clamps"
ElseIf Flooded.Value False And Broken_armors True Then
Sheet5.Choice_tech.ListFillRange = "Clamps"
'
' Else: Choice_Tech.Clear
---> je vous fourni les sub des chekbox au cas ou...
Sub Broken_armors_Click()
If Broken_armors.Value = True Then
Call P2(3)
Else
Call P2(4)
End If
End Sub
Sub Flooded_Click()
If Flooded.Value = True Then
Call P2(1)
Else
Call P2(2)
End If
End Sub
Sub P2(i As Double) 'Chose techno
If i = 1 Then ' Activation du mode flooded
ElseIf i = 2 Then 'Pas d'activation du flooded
ElseIf i = 3 Then ' Activation du mode broken armor
ElseIf i = 4 Then 'Pas d'activation du broken armor
ElseIf i = 5 Then ' Activation du mode other
Call P1
End If
End Sub
Tout ce code n'est pas au top mais ce n'est pas ce qui me dérange le plus pour le moment. Excusez moi si c'est lourd comme message.
Lorsque je relance une sélection, est que je mets en place un effacement de la combobx avec : Combobx.Clear, j'obtiens l'erreur suivante... Je me doute que ma commande > 0 doit être mauvaise mais comment demander à remettre à zéro? De tout façon si je chinte le problème de la sorte --->
Sub Clear_ComboBox()
'If Sheet5.Choice_tech.ListCount > 0 Then
Sheet5.Choice_tech.Clear
'End If
'Sheet5.Choice_Tech.ListIndex = -1
End Sub
je reçois ce désagréable message:
Run-times error : '2147467259 (80004005)!!!!
Certain sur les forum parle de cette erreur mais il ne me semble pas que cela me concerne. J'ai aussi essayé des routines plus simples, exemple:
-----> dans un module j'ai
Sub Oval1_Click() ' on clic sur un bouton start
Sheet1.ComboBox1.Clear 'nettoyage de la combobox 'je vide ou cas ou la combobox sur la feuille
Call Worksheet_Activate
End Sub
Sub Worksheet_Activate() 'je teste une methode de lecture en liste "Liste" sur la feuille "Sheet1" et non pas en item.
Sheet1.ComboBox1.ListFillRange = "Liste"
'Sheet1.ComboBox1.AddItem "New york"
'Sheet1.ComboBox1.AddItem "Paris"
'Sheet1.ComboBox1.AddItem "Oslo"
End Sub
-------> et dans la sheet1 j'ai cela
Public Sub ComboBox1_Change()
If ComboBox1 = "New york" Then
Sheet1.ComboBox1.AddItem "FUCK it works !"
Else
Call Oval1_Click
End If
End Sub
Bilan au premier coup quand tout est vide c'est parfait ca marche et ça rempli tout puis bug lors de Combobox.clear.
J'ai aussi essayé avec les items et si je tente avec ça fonctionne mieux mais si je lance une action apres avec un des item, ici "New york" et la ca foire ou ça me double la liste au choix...
Voilà j'ai tout dit, je me relis et surtout je vous remercie par avance pour votre aide je me sens super bête avec cette histoire.
A oui et si c'est nul comme question, soyez cool svp j'ai vraiment besoin d'une réponse claire.
flo666fly
Messages postés2Date d'inscriptionlundi 3 mai 2010StatutMembreDernière intervention 3 mai 2010 3 mai 2010 à 15:02
Bon j'ai trouver une astuce, cela vient surement du fait que j'utilise la commande ListFillRange, ainsi pour vider une Combobox, sans passer par un UF, il faut mettre :
Sheet5.ComboBox1.ListFillRange = ""
Voilà, ça c'est fait...
Maintenant j'aurai surement d'autres questions mais je referai un sujet, merci quand même.
PS: c'est fou on chercher trois jours et c'est quand on dérange la communauté que l'on trouve...