[Excel/VBA] Problème List Box vide

Bonjour,
je souhaite créer un classeur excel contenant plusieurs feuilles contenant elles-mêmes plusieurs listbox (activex) ou combobox.

Je pourrais ensuite programmer des actions/évènements en fonction des choix faits.

Mon problème est qu'à l'ouverture du ficher excel, les listes déroulantes sont vides, et je ne vois pas le problème de programmation (je suis très débutant en vb)

j'ai mis dans vb le code suivant (dans Feuil1) :

Private Sub Worksheet_Initialize()

PhysicalStateBox.Clear
ParticleSizeUnitBox.Clear
HandledSubstanceUnitBox.Clear

PhysicalStateBox.AddItem "Gaz"
PhysicalStateBox.AddItem "Liquid"
PhysicalStateBox.AddItem "Solid"
ParticleSizeUnitBox.AddItem "cm"
ParticleSizeUnitBox.AddItem "mm"
ParticleSizeUnitBox.AddItem "µm"
ParticleSizeUnitBox.AddItem "nm"
HandledSubstanceUnitBox.AddItem "mg"
HandledSubstanceUnitBox.AddItem "g"
HandledSubstanceUnitBox.AddItem "kg"
HandledSubstanceUnitBox.AddItem "tons"

End Sub

J'ai bien nommé les list box comme il le fallait bien sûr.

Merci de votre aide.

Yohan
Configuration: Windows XP
Firefox 3.0.6

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonjour,
    Dans excel, que ce soit le 2007 ou précédant il n'y à pas de fonction Initialize
    Tu peu le mettre dans Activate.
    A+
    1. Contributeur
      Pour que Activate soit valider il faut un changement de feuille.
      1. Ok merci ça fonctionne quand on change de feuille.
        Mais là ça ne me convient pas car quand je quitte et reviens sur la feuille, les choix sélectionnés sont partis !
        Je ne peux donc pas exploiter les infos...

        une solution?
        1. Contributeur
          Mettre ce code dans un module général. (Module1 par exemple)
          Public Sub Combo_Initialize()
          Dim TB, i As Integer
              TB = Array("cm", "mm", "µm", "nm", "mg", "g", "kg", "tons")
              With Sheets("Feuil1")
                  .PhysicalStateBox.Clear
                  .ParticleSizeUnitBox.Clear
                  .HandledSubstanceUnitBox.Clear
                  .PhysicalStateBox.AddItem "Gaz"
                  .PhysicalStateBox.AddItem "Liquid"
                  .PhysicalStateBox.AddItem "Solid"
                  For i = 0 To 3: .ParticleSizeUnitBox.AddItem TB(i): Next
                  For i = 4 To 7: .HandledSubstanceUnitBox.AddItem TB(i): Next
              End With
          End Sub

          et dans ThisWorkBook
          Private Sub Workbook_Open()
              Call Combo_Initialize
          End Sub

          Tu sauve et ré ouvre le classeur...