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 :

Rowsource d'un listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 29
    Par défaut Rowsource d'un listbox
    Bonjour,
    Un listbox affiche un certaine zone d'un worksheet, et cette zone est amenée à grandir. J'ai donc adapté les propriétés du listbox en fonction de cette évolution (par exemple, la propriété Columnwidths est construite avec une boucle for, qui parcourt les colonnes de la feuille tant qu'elles sont non-vides)
    par contre, pour la propriété Rowsource, j'ai un petit souci.
    Dans un premier temps, après la boucle for pour le Columnwidths, je disposais des coordonnées (i,j) de la dernière cellule remplie, donc j'avais "sur le papier" toutes les données nécessaires pour définir le Rowsource.
    J'ai donc tenté un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     .rowsource = range(cells(1,1) , cells (i,j))
    qui ne fonctionnait pas (même si dans l'aide, il est noté que l'on peut utiliser un objet range pour le rowsource

    J'ai donc bidouillé quelquechose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    .rowsource = "mafeuille!A1:" & Chr(64+j) & i
    qui fonctionnait très bien, jusqu'à ce que j'atteigne la colonne AA...

    Quelle syntaxe puis-je donc adopter pour définir le rowsource, qui soit valable quelquesoit la largeur de ma zone de données ?
    Merci

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    tant que l'on est dans la bidouille j'en ai une rigolotte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim col As String
     
    col = Split(Cells(1, j).Address, "$")(1)
     
    Feuil1.RowSource = "mafeuille!A1:" & col & i

  3. #3
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 116
    Par défaut
    Salut
    Il te suffit juste d'utiliser la propriété address de l'objet range ou cells

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.RowSource = range(cells(1,"AA"),cells(200,"AC")).address
    Heu
    même si dans l'aide, il est noté que l'on peut utiliser un objet range pour le rowsource
    ou ca?
    Citation Envoyé par Aide Excel
    RowSource, propriété@import url(/Office.css);RowSource, propriété


    Spécifie la source de données fournissant une liste à un contrôle ComboBox ou ListBox.
    Syntaxe
    object.RowSource [= String]
    La syntaxe de la propriété RowSource comprend les éléments suivants :
    Élément Description object Objet valide. String Facultatif. Source de données de la liste du contrôle ComboBox ou ListBox.
    Remarques
    la propriété RowSource accepte des plages de feuilles de travail de Microsoft Excel.
    Si c'est la dernière ligne, il y a quand même une forte nuance entre un objet range (Target par exemple) et une plage de feuille ("feuil1!A1:B16")
    a++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  4. #4
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 29
    Par défaut
    merci pour la solution bidouille, j'aime, et ça marche très bien !
    pour le range, j'ai peut-être dû lire un peu rapidement l'aide (qui en anglais au boulot, j'ai dû rater une subtilité de langage)

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

Discussions similaires

  1. [XL-2010] Appel de procédure avec arguments pour RowSource d'une ListBox
    Par RicardoBxl dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/01/2011, 22h06
  2. Problème avec le RowSource d'une ListBox
    Par niavlys26 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/07/2008, 04h29
  3. [VBA-Excel] Propiété RowSource d'une ListBox
    Par padre03 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/09/2006, 18h05
  4. [VBA-E] erreur avec listbox.rowsource
    Par repié dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/02/2006, 10h55
  5. LISTBOX rowsource : référence à des cellules fusionées
    Par alexxx69 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/10/2005, 15h42

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