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 :

Changer la RowSource d'une Listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 300
    Par défaut Changer la RowSource d'une Listbox
    Bonjour

    Voilà, après avoir regardé plusieurs Tutosssssss, je n'arrive toujours pas à trouver la solution.
    J'aimerais changer la rowsource de ma listbox, quand je change la date de DTPicker.
    j'arrive, à changer et trouver l'onglet correspondant, sélectionner ma plage, mais je n'arrive pas a changer le contenu de ma Listbox....... Je ne vois ce que j'ai oublié dans mon code.
    Merci d'avance.

    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
    Private Sub UserForm_Initialize()
    LB1.ColumnHeads = True
    LB1.RowSource = "Didier!A10:T30"
    LB1.ColumnCount = 20
    LB1.ColumnWidths = "200;0;0;0;0;0;0;0;200;200;0;0;0;0;0;200;0;0;0;0"
     
    End Sub
     
    Private Sub DTPicker1_CloseUp()
     
    Convoc = CDate(Me.DTPicker1)
    DateConvoc = Left(Convoc, 2) & "-" & Mid(Convoc, 4, 2) & "-" & Mid(Convoc, 7, 4) & " " & Me.Lab1.Caption
    MsgBox DateConvoc
     
    For Each Feuille In ThisWorkbook.Worksheets
        If Feuille.Name = DateConvoc Then
        Feuille.Select
        'Me.LB1.List() = Range("A10:T30").Value 'Ne fonctionne pas
     
        'Me.LB1.RowSource = Range("A10:T29")'Ne fonctionne pas
        End If
    Next
     
    End Sub

  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
    1) je ne vois dans cette partie de ton code aucune tentative (code en commentaire inclus) de modifier la propriété RowSource
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For Each Feuille In ThisWorkbook.Worksheets
        If Feuille.Name = DateConvoc Then
        Feuille.Select
        'Me.LB1.List() = Range("A10:T30").Value 'Ne fonctionne pas
     
        'Me.LB1.RowSource = Range("A10:T29")'Ne fonctionne pas
        End If
    Next
    2) l'ensemble me laisse assez perplexe, dans la mesure où ta listbox LB1 est apparemment sur un Userform et que ta procédure évènementielle DTPicker1_CloseUp() semble vouloir la modifier sur ... chacune des feuilles de calcul Worksheets

    Pour conclure :
    - on ne sait pas trop ce que tu cherches à faire et surtout si tu as une seule listbox ou si tu en as plusieurs et où elles sont
    - lorsque la propriété rowsource d'une listbox a été spécifiée, on ne peut (sauf à la remettre à vide préalablement) modifier de quelque manière que ce soit la propriété list de cette listbox. BIEN EVIDEMMENT

  3. #3
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Pour compléter la réponse de Jacques (que je salue au passage), la propriété RowSource n'accepte pas de Range, mais un String.
    Du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1.RowSource = "Feuil1!A10:T29"
    Pour voir cela :
    F1 ==> aide. Taper RowSource nous donne :
    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 :
    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.
    Ou en ligne (saisir : msdn RowSource sous votre moteur de recherche préféré) :
    https://msdn.microsoft.com/fr-fr/VBA...ource-property

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 300
    Par défaut
    Bonjour.

    Je me suis certainement mal exprimé.

    LB1 est ma listbox de base elle s'initialise sur une feuille spécifique "Didier" en l'occurence. la feuille "didier " à un planning qui se trouve à la date du jour.
    avec un autre Userform, j'ai créé des feuilles qui me permette de faire des planning sur plusieurs jours (Dates et Noms différents.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Convoc = CDate(Me.DTPicker_DateJour)
    DateConvoc = Left(Convoc, 2) & "-" & Mid(Convoc, 4, 2) & "-" & Mid(Convoc, 7, 4) & " " & Me.Lab_Agent.Caption ' Converti la Date en Texte pour l'onglet
    Donc mes feuilles ont la date et le nom de l'agent. Style : 4-11-2017 DIDIER
    mais ce sont des copie de la feuille initial Didier, sauf l'intérieur du tableau contenu dans les cellules A10:T30
    Donc ce que j'aimerais faire c'est pouvoir rechercher la feuille en changeant ma date de DTPicker cela selectionne la feuille correspondante afin de pouvoir complèter le tableau
    d'ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Convoc = CDate(Me.DTPicker1)
    DateConvoc = Left(Convoc, 2) & "-" & Mid(Convoc, 4, 2) & "-" & Mid(Convoc, 7, 4) & " " & Me.Lab1.Caption
    MsgBox DateConvoc
     
    For Each Feuille In ThisWorkbook.Worksheets
        If Feuille.Name = DateConvoc Then
        Feuille.Select
    End if
    Next
    Jusqu'ici j'arrive bien à sélectionner la feuille, mais c'est a ce moment là ou je bug.....
    j'aimerais sélectionner la plage A10:T30 de cette feuille, afin qu'elle devienne la nouvelle Rowsource de ma Listbox.
    Si je change la date de Dtpicker, je changerais de feuille.
    d'ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each Feuille In ThisWorkbook.Worksheets
        If Feuille.Name = DateConvoc Then
        Feuille.Select
    Je vérifie si la feuille existe, ensuite " si then
    Changement de rowsource
    ou
    exit sub

    Voilà j'espère avoir été plus clair.

    Cordialement

  5. #5
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each Feuille In ThisWorkbook.Worksheets
        If Feuille.Name = DateConvoc Then
        Feuille.Select
    Je vérifie si la feuille existe, ensuite " si then
    Changement de rowsource
    Hé bien ? Pijaku, que je salue, te l'a indiquée, cette solution, non ?
    Pour mémoire :
    Pour compléter la réponse de Jacques (que je salue au passage), la propriété RowSource n'accepte pas de Range, mais un String.
    Du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1.RowSource = "Feuil1!A10:T29"
    Ou Feuil1 est à remplacer par le nom de ta variable Feuille suivi de "!A10:T29"
    Il est où, ton problème ? Dans la construction d'une chaîne par concaténation ? (j'espère que non car ce serait plus qu'inquiétant).

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 300
    Par défaut
    Bonjour

    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.LB1.RowSource = "DateConvoc(A10:T30)"
    mais j'ai un message d'erreur : Impossible de définir la propriété Rowsource. Valeur de propriété non valide.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Quelqu'un qui décompose ses date avec des mid ne peut pas être foncièrement méchant!

    Suis les conseils avisés de unparia

    Ou Feuil1 est à remplacer par le nom de ta variable Feuille suivi de "!A10:T29"
    Il est où, ton problème ? Dans la construction d'une chaîne par concaténation ? (j'espère que non car ce serait plus qu'inquiétant).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.LB1.RowSource = format (Me.DTPicker_DateJour,"dd-mm-yyyy") & " " & Me.Lab_Agent.Caption & "!A10:T29" ' Converti la Date en Texte pour l'onglet
    Dernière modification par Invité ; 04/11/2017 à 12h39.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 300
    Par défaut
    Bonjour

    Voilà c''est résolu.

    Le problème était dans le nom de la feuille 10-10-2017 DIDIER ne passe pas même quand j'indiquais la Rowsource dans la fenêtre propriété.
    Donc en changeant le Nom en 10_10_2017_DIDIER, cela fonctionne.

    Merci à Unparia et dysorthographie pour votre aide.

    Cordialement

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    quand tu as un espace dans le nom d'une feuille inscrit-le entre 2 ' ' dans vba.
    eric

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

Discussions similaires

  1. changer les variables d'une listbox
    Par MatthieuT42 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/06/2015, 13h59
  2. [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
  3. Changer le style d'une listbox
    Par adrix26 dans le forum Silverlight
    Réponses: 1
    Dernier message: 16/12/2009, 14h48
  4. 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
  5. [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

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