J'ai une question sur les évènements d'un combobox. Je souhaite remplir un combobox lorsqu'on clique dessus.
Je me suis donc intéressé à l'évènement Click, puis DropButtonClick (qui pourrait faire ce que je souhaite, mais j'ai un soucis).
Avec l'évènement Click, rien ne se passe lorsque je clique sur ma CBox, on ne passe même pas dans la macro.
Avec l'évènement DropButtonClick, lorsque je clique dessus j'ai ma ComboBox qui est correctement rempli, mais quand je clique sur une des valeurs, elle n'est pas saisie à cause de la méthode Clear que j'ai mis en début de macro, pour éviter qu'on ait une liste à rallonge à force de cliquer sur la ComboBox...
Si par contre j'enlève la méthode Clear, le choix que je fais dans ma combobox est bien saisi mais lorsque je reclique dessus, j'ai de nouveaux listés et donc je les ai tous en double...
Je fais ceci, car je souhaite lister des images contenus dans un dossier dans la ComboBox, et dans le cas où l'utilisateur ajoute une image dans le dossier, il faut que l'image soit ajouté à la ComboBox.
Code:
Private Sub ComboBox3_DropButtonClick()
Dim Rep As String
Rep = "D:\Dossier"
Dim Fso As Scripting.FileSystemObject
Dim SourceFolder As Scripting.Folder
Dim FileItem As Scripting.File
Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(Rep)
ComboBox3.Clear
For Each FileItem In SourceFolder.Files
If InStr(FileItem.Type, "Image") <> 0 Then
ComboBox3.AddItem FileItem.Name
End If
Next FileItem
End Sub
Bonjour
Une piste
Mettre un bouton au lieu du combo.
Quand on clique dessus inscrire la valeur dans le combo et vérifier le contenu de Listindex, si Listindex = -1 alors on rajoute la valeur dans le combo.
Merci pour la piste, je vais partir sur une idée du même genre.
C'est à dire faire la liste des fichiers dans une autre feuille, que l'on rafraichira avec un bouton. Et si cette liste change (avec l'ajout, la suppression d'un des fichiers), ma ComboBox se mettra à jours elle aussi.
J'ai fait quelque chose de similaire pour une autre ComboBox, sauf que la liste était saisie à la main.