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 :

Inserer une ligne dans une listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut Inserer une ligne dans une listbox
    Bonjour à tous,

    Voila mon soucis, j'ai un tableau sur une feuille excel et je voudrais inserer les lignes (jusqu'a la colonne 36) dans une liste box A condition que la 1er cellule de cette ligne ne soit pas vide.

    J'ai fais un petit code, mais il supprime les valeurs antérieures

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub CommandButton4_Click()
     
    i = 1
     
    While Cells(i, 1).Value <> ""
     
      ActiveWorkbook.Worksheets("feuil1").Select
      UserForm1.ListBox1.RowSource = Range(Cells(i, 1), Cells(i, 36)).Address
     
      i = i + 1
    Wend
     
    End Sub
    Si quelque a une solution pour eviter la suppression je suis preneur,


    Ps : je debute dans le Vba/excel, merci de votre patience...

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    Le problème vient du fait que tu écrase la valeur à chaque boucle, le principe aurait été de faire MaSource = MaSource + NouvelleLigne mais il y a beaucoup plus simple.
    En connaissant la dernière ligne remplie et sachant que tu as 36 colonnes tu peux directement donner la référence complète pour la source, voici comment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CommandButton4_Click()
     
    Dim NbLigne As String 'Pour récupérer le nombre de ligne
     
    NbLigne = Cells((Range("a:a").Rows.Count), 1).End(xlUp).Row
    'Le RAnge("A:a").rows.count renvoie le nombre de ligne total Excel, pour 2003 = 65536; le End(xlup) "remonte" jusqu'à la première cellule remplie => la dernière en partant du haut; le .row renvoi le numéro de ligne
     
    UserForm1.ListBox1.RowSource = Sheets("sheet1").Range(Cells(1, 1), Cells(NbLigne, 36)).Address
     
    End Sub
    Attention, ne pas oublié de mettre le "ColumnCount" de ta list box à 36, mais j'imagine que c'est déjà fait.

    A+

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut
    Merci beaucoup Fvandermeulen de ta réponse, j'ai adapté ton code à mon environnement (feuil1...) et resultat cela fonctionne bien
    Le seul soucis et que je ne retrouve pas l'integralité de ma ligne dans la listbox

    Donc je voudrais savoir si c'est moi qui ne comprend pas

    Ps : Merci beaucoup pour les commentaire annotés à coté des lignes de code

    Avant que tu ne répondes je repost un petit message pour te remercier, et oui j'avais oublié une ligne ...


    merci beaucoup pour ta réponse

    est - il possible "d'adapter" ta méthode de selctionne de ligne pour les colonnes?

    je voudrais le tableau le plus interactif possible ....

    Cordialement trigger,

  4. #4
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Bien sur, il suffit de faire une variable pour le nombre de colonne, voici le code adapté
    J'ai aussi changé le Dim car un Long est plus adequoi qu'un string attendu qu'on récupère des nombres:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CommandButton4_Click()
     
    Dim NbLigne As Long 'Pour récupérer le nombre de ligne
    Dim NbCol As Long 'Pour récupérer le nombre de colonne
     
    NbLigne = Sheets("Feuil1").Cells((Range("a:a").Rows.Count), 1).End(xlUp).Row
    NbCol = Sheets("Feuil1").UsedRange.Columns.Count
     
    UserForm1.ListBox1.RowSource = Sheets("Feuil1").Range(Cells(1, 1), Cells(NbLigne, NbCol)).Address
    UserForm1.ListBox1.ColumnCount = NbCol 'Adapte le nombre de col de la listbox
     
    End Sub

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut
    Je te remercie beaucoup pour toutes tes explication détaillées, grace à toi j'ai bien compris le systeme pour repérer les cellules pleines/vides.

    Mon premier poste débouche sur une totale satisfaction !

    En espérant ne pas trop avoir pris de ton temps,
    Cordialement;

    trigger

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 21/10/2009, 13h31
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. [E-00] Syntaxe pour insérer une ligne ou une colonne dans une feuille
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/02/2009, 09h27
  4. [MySQL] inserer une ligne d'une table dans une autre table
    Par piero53 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/12/2008, 18h29
  5. Réponses: 3
    Dernier message: 29/01/2008, 12h08

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