IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Géneration de listbox et de noms d'objet


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 10
    Par défaut Géneration de listbox et de noms d'objet
    Bonsoir à l'équipe

    J'aurai une question (surement simple) a propos de l'association d'un nom automatique à une listbox.

    J'ai un projet ou je dois générer un nombre X de lignes, avec sur chacune une listbox. Pour la suite du projet de dois pouvoir extraire la valeur de chaques listbox sur une cellule en associant la sortie à un nom de list.

    Ce que je comptais faire, c'était lors de leur géneration, leur donner un nom incrémentant grace à la boucle for, mais cela ne marche pas.

    En parallele je dois génerer des checkboxes, qui elles marchent parfaitement.

    Je vois que cela viens du oleobject, mais la je sèche.

    Voici mon code, n'hésitez pas à me dire si cela est imcompréhensible, je débute donc c'est surement horrible .


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Dim a As Single
    a = InputBox("Combien de ListBox voulez vous ?")
     
    For i = 1 To a
     
        Dim j As Integer
        'Recherche de la dernière ligne non vide du tableau
        j = Range("B" & Rows.Count).End(xlUp).Row
        'Ajout d'une ligne à la dernière ligne du tableau
        Rows(j + 1).Insert
     
    'création de la listbox
        Dim Emplacement As Range
        Dim Obj As Object
        'Commencer la géneration sur la case  E3
        Set Emplacement = Range("E3")
        'crée le bouton
        With Emplacement
        'Création + disposition de la listbox
        Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Combobox.1", _
        Link:=False, DisplayAsIcon:=False, Left:=.Left * 1.025, Top:=.Top * 1.1, Width:=.ColumnWidth * 5.5, Height:=.RowHeight * 0.9)  '
        Obj.Name = "lbE" & Format$(derniereligne)
    le problème vient de la dernière ligne, "Obj.Name = "lbE" & Format$(derniereligne)". Le reste marche comme je le voudrais.

    Voila, un grand merci à ceux qui me réponderont. Le codage n'est pas forcément mon domaine de compétance
    Bonne soirée

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Ton problème n'est pas un problème de code/syntaxe en soi, mais de raisonnement même.
    On analyse donc ton usine (supposons que l'utilisateur a voulu créer 5 objets)
    - tu as fait une boucle de 1 à 5
    --- tu n'y modifies jamais ta variable emplacement (est donc toujours E3
    --- ta variable derniereligne (dont je ne vois au demeurant ni où elle a été déclarée, ni comment elle a été initialisée) y est d'une valeur immuable (de surcroît = "" si non initialisée)

    Ben .... tu crées ainsi forcément 5 comboboxes empilées les unes au dessus des autres en cellule E3 et portant toutes forcément le même nom !!!

    Comme tu le vois, je ne pose qu'un regard de paysan sur ton usine, sans même parler code.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 10
    Par défaut
    Merci de m'avoir consacrer du temps

    J'avoue avoir c-c c-v des bouts de codes et de rétro ingénieré tout ca pour comprendre

    J'ai enfin trouvé ma solution. C'était le type de nom qui génait. Il n'aimait pas le LbE & x, j'ai mis 1+i

    Je laisse ma solution si cela peut aider pour la suite des gens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub Bouton167_Cliquer()
     
    Dim a As Single
    a = InputBox("Combien de ListBox voulez vous ?")
     
    For i = 1 To a
     
        Dim j As Integer
        'Recherche de la dernière ligne non vide du tableau
        j = Range("B" & Rows.Count).End(xlUp).Row
        'Ajout d'une ligne à la dernière ligne du tableau
        Rows(j + 1).Insert
     
    'création de la listbox
        Dim Lier As Range
        Dim Sh As Worksheet
        Dim Emplacement As Range
        Dim Obj As Object
        'Commencer la géneration sur la case  E3
        Set Emplacement = Cells(j + 1, 5)
        'crée le bouton
        With Emplacement
        'Création + disposition de la listbox
        Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Combobox.1", _
        Link:=False, DisplayAsIcon:=False, Left:=.Left * 1.025, Top:=.Top * 1.1, Width:=.ColumnWidth * 5.5, Height:=.RowHeight * 0.9)  '
        Obj.Name = "1" & i
        End With
        With ActiveSheet.OLEObjects("1" & i).Object
            .AddItem "0-0.25-0.5"
            .AddItem "0-0.5-1"
            .AddItem "0-0.75-1.5"
            .AddItem "0-1-2"
        End With
    Next
    End Sub
    Encore désolé du dérangement et encore un merci pour votre patience

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DisplayTag] Error looking up property "nom" in objet type "mysample.Personne"
    Par slyv dans le forum Taglibs
    Réponses: 3
    Dernier message: 02/03/2011, 17h53
  2. transfert de nom d'objet
    Par programaniac dans le forum Bases de données
    Réponses: 6
    Dernier message: 01/04/2006, 16h37
  3. frames et javascript - parametrage d'un nom d'objet
    Par titicurio dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/02/2006, 13h35
  4. Nom d'Objet Invalide
    Par etiennegaloup dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 15/11/2004, 09h17
  5. Réponses: 11
    Dernier message: 16/10/2004, 18h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo