Combobox Excel 2007

Résolu
flo666fly Messages postés 2 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 3 mai 2010 - 3 mai 2010 à 11:52
flo666fly Messages postés 2 Date d'inscription lundi 3 mai 2010 Statut Membre Derniè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:

Sub Reset_Click()

Call Clear_Checkboxes
Call Clear_ScrollBar
Call Clear_ComboBox

End Sub

Sub Clear_Checkboxes()

Sheet5.Flooded = False
Sheet5.Broken_armors = False
Sheet5.ROV = False
Sheet5.Ship = False
Sheet5.Barge = False
Sheet5.Technician_days = False
Sheet5.Engineer_days = False
Sheet5.Tool = False
Sheet5.Other1 = False
Sheet5.Other2 = False
Sheet5.Other3 = False
Sheet5.Other4 = False


End Sub

Sub Clear_ScrollBar()

Sheet5.Price_Other1 = 0
Sheet5.Time_Other1 = 0
Sheet5.Time_Ship = 0
Sheet5.Time_Barge = 0
Sheet5.Price_Other2 = 0
Sheet5.Time_Other2 = 0
Sheet5.Price_ROV = 0
Sheet5.Price_Tools = 0
Sheet5.Price_Other3 = 0
Sheet5.Time_Technician = 0
Sheet5.Time_Engineer = 0
Sheet5.Price_Other4 = 0
Sheet5.Time_Other4 = 0

End Sub

Sub Clear_ComboBox()

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

'Sheet1.ComboBox1.ListFillRange = "Liste"

End If

Else: Sheet5.Select
Sheet5.Choice_tech.ListFillRange = "Clamps"

End If

End Sub

---> 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.

Encore merci.

1 réponse

flo666fly Messages postés 2 Date d'inscription lundi 3 mai 2010 Statut Membre Derniè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...
3
Rejoignez-nous