Erreur 424. Ajout item dans une ComboBox

Résolu/Fermé
Liodene - Modifié par Liodene le 28/12/2010 à 21:10
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 - 29 déc. 2010 à 02:56
Bonjour.

Avant de vous montrer mon code, je vais vous expliquer le fonctionnement que je veux qu'il ait. C'est pas bien compliqué! =)

Sur la feuille "principale", il y a une liste déroulante (ComboBox) et un bouton
Alors, lorsque que l'utilisateur clique sur un bouton (que j'ai associer à la macro Create()), une InputBox apparaît, l'utilisateur entre quelque chose que l'on va appelé *Texte*. Et ensuite, cela rajoute l'item *Texte* dans la Combobox et et crée la feuille *Texte*.

Voici mon code:

Sub Create() 
Nom = InputBox("Texte à entrer:") 
Combobox1.Items.Add (Nom) 
Sheets.Add.Name= Nom 


Et ensuite un traitement sur la feuille créé...


Sans l'ajout d'item dans la Combobox, le programme fonctionne parfaitement.
Mais avec, cela m'affiche Erreur 424: Objet requis.
J'ai essayé diverses méthodes pour ajouter les items, rien n'y fait. Même l'ajout d'un simple texte (donc pas une variable) avec:
Combobox1.Items.Add ("Test")

M'affiche quand même l'erreur 424...

Je fais donc appel à votre aide!

Merci d'avance pour votre patience et vos réponses.

9 réponses

Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
28 déc. 2010 à 21:38
Salut le forum

Petite erreur de syntase

Essaye plutôt Combobox1.AddItem

Mytå
0
Je l'avais déjà essayé. Je viens de réessayer mais toujours le même problème.

J'ai également essayé ComboBox1.Item.Insert mais rien.
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
28 déc. 2010 à 22:55
Re le forum

Ta ComboBox provient de la boite à outils Formulaire ou Contrôle

Et elle est directement sur la feuille

Mytå
0
Je l'ai inséré via l'onglet Développeur/Insérer/Controle ActiveX/Zone de liste déroulante.
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
28 déc. 2010 à 23:05
Re le forum

Essaye comme ceci
Sub Create()
Dim Nom As String
Nom = InputBox("Texte à entrer:")
ActiveSheet.OLEObjects("ComboBox1").Object.AddItem Nom
Sheets.Add.Name = Nom
End Sub

Mytå
0
Avec cela, j'ai:

Erreur d'exécution 57121:

Erreur définie par l'application ou par l'objet
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
28 déc. 2010 à 23:20
Re le forum

Tu utilises quelle version d'Excel, car sous Excel 2003 ça fonctionne très bien.

Essaye de joindre un fichier, tu crées un lien à l'aide de
https://www.cjoint.com/ ou de http://cijoint.fr/ et tu
recopies le lien dans ton prochain message.

Mytå
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je viens de recréer un nouveau classeur, copier/coller ma macro et là.... Miracle! Ca marche avec le code que tu as mis au-dessus!

J'avais dû bidouiller un truc qu'il fallait pas dans mes longues heures de déprime à chercher le problème!

Merci beaucoup pour ton aide!
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
28 déc. 2010 à 23:29
Re le forum

Finalement tu me soulages je commencais à en perdre mon latin :)

Mytå
0
Désolé de poursuivre mais j'ai un autre problème auxquels je n'avait pas pensé :s

En effet, lorsque je ferme mon classeur Excel, les éléments de ma ComboBox sont supprimés même après enregistrement... Vois-tu une solution pour que ceux-ci soit "enregistrés"?

Désolé pour le dérangement supplémentaire...
0
m@rina Messages postés 20016 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 16 avril 2024 11 268
29 déc. 2010 à 01:15
Bonsoir,

Moi je lierais la combobox à une liste (propriété ListFillRange) située dans une feuille cachée. Ainsi tu ne te pends plus la tête avec la combobox.

L'inputbox permettra d'ajouter cet item à la liste et c'est tout. La combobox sera automatiquement mise à jour.
Ne pas oublier de convertir ta liste en tableau et d'utiliser le nom de la plage qui, de ce fait, s'agrandira automatiquement dès que tu ajouteras un item.

m@rina
0
Hum... Je vois ce que tu veux faire... Mais j'ai commencé le VBA uniquement sur une demande et les langages orientés POO sont vraiment pas ma tasse de thé donc je ne vois pas "codement parlant", comment faire...
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
Modifié par Mytå le 29/12/2010 à 01:48
Re le forum

A l'ouverture du fichier il suffit de lire le nom des onglets et les ajouter à ta ComboBox.
Code à mettre dans ThisWorkbook
Private Sub Workbook_Open()
Dim i As Byte
For i = 1 To Sheets.Count
Sheets("Feuil1").OLEObjects("ComboBox1").Object.AddItem Sheets(i).Name
Next i
End Sub

Mytå
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
Modifié par Mytå le 29/12/2010 à 02:00
Re le forum

Si tu veux éliminer certaines feuilles ajoute une condition de test
If Sheets(i).Name <> "Feuil1" Then   
    Sheets("Feuil1").OLEObjects("ComboBox1").Object.AddItem Sheets(i).Name   
End If   

Le code complet
Private Sub Workbook_Open()
Dim i As Byte
For i = 1 To Sheets.Count
With Sheets(i)
  If .Name <> "Feuil1" Or .Name <> "Feuil2" Then
    Sheets("Feuil1").OLEObjects("ComboBox1").Object.AddItem .Name
  End If
End With
Next i
End Sub

Mytå
0
Ca marche parfaitement!

Encore une fois merci!
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
29 déc. 2010 à 02:56
Re le forum

Au plaisir de t'aider de nouveau.

Mytå
0