Erreur 424. Ajout item dans une ComboBox

Résolu
Liodene -  
Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    Salut le forum

    Petite erreur de syntase

    Essaye plutôt Combobox1.AddItem

    Mytå
    0
  2. Liodene
     
    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
    1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
       
      Re le forum

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

      Et elle est directement sur la feuille

      Mytå
      0
  3. Liodene
     
    Je l'ai inséré via l'onglet Développeur/Insérer/Controle ActiveX/Zone de liste déroulante.
    0
    1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
       
      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
  4. Liodene
     
    Avec cela, j'ai:

    Erreur d'exécution 57121:

    Erreur définie par l'application ou par l'objet
    0
    1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Liodene
     
    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
    1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
       
      Re le forum

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

      Mytå
      0
  7. Liodene
     
    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
  8. m@rina Messages postés 27507 Date d'inscription   Statut Modérateur Dernière intervention   11 562
     
    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
  9. Liodene
     
    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
    1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
       
      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
    2. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
       
      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
  10. Liodene
     
    Ca marche parfaitement!

    Encore une fois merci!
    0
    1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
       
      Re le forum

      Au plaisir de t'aider de nouveau.

      Mytå
      0