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 :

Plage de donnée variable dans rowsource


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut Plage de donnée variable dans rowsource
    Bonjour,

    Je rencontre un probléme avec la propriété rowsource d'une listbox en VBA.
    J'ai une feuille sur Excel où certaines lignes sont masquées, je réalise un test sur ces lignes pour trouver la première non masquée, et j'aimerai afficher cette ligne dans la listbox.

    J'ai essayé comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sheets("bienslocation").Select
     
    ligne = 2
        Do While Rows(ligne).Hidden = True
            ligne = ligne + 1
        Loop
     
    Me.ListeAnnonce.RowSource = Range("A" & ligne & ":E" & ligne)
    Ça me dit toujours incompatibilité de type.
    J'ai essayé de déclarer ligne comme integer, string, variant, aucun ne résout le probléme.

    J'ai également essayé de remplacer .rowsource par .list, mais dans ce cas, ça me dit "Permission refusée".

    Quelqu'un aurait une solution ?

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    C'est normal, "RowSource" attend un String et non un Range. Si tu veux récupérer les valeurs d'une ligne, il te faut les mettre en colonne avec la fonction "Transpose" :
    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
     
    Private Sub UserForm_Click()
     
        Dim Ligne As Integer
     
        Ligne = 2
     
        Do While Rows(Ligne).Hidden = True
     
            Ligne = Ligne + 1
     
        Loop
     
        Me.ListeAnnonce.List = Application.Transpose(Range("A" & Ligne & ":E" & Ligne))
     
    End Sub
    Hervé.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut
    Bonjour Hervé

    Avec votre solution j'ai toujours "Permission refusée".
    Et en remplacant .list par .rowsource, et j'ai toujours "Incompatibilité de type".

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,
    Avec votre solution j'ai toujours "Permission refusée".
    C'est bizarre, chez moi ça marche ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.ListeAnnonce.List = Application.Transpose(Range("A" & Ligne & ":E" & Ligne))
    Si tu veux utiliser RowSource il te faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.ListeAnnonce.RowSource = Range("A" & Ligne & ":E" & Ligne).Address
    mais dans ce cas, tu n'aura que la valeur de la première cellule. Sinon, il y avec "AddItem" :
    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
     
    Private Sub UserForm_Click()
     
        Dim Ligne As Integer
        Dim I As Integer
     
        Ligne = 2
     
        Do While Rows(Ligne).Hidden = True
     
            Ligne = Ligne + 1
     
        Loop
     
        For I = 1 To 5
     
            Me.ListeAnnonce.AddItem Cells(Ligne, I)
     
        Next I
     
    End Sub
    Hervé.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut
    Avec AddItem ça marche presque.
    Sauf que ça affiche les valeurs des cellules en colonne.

    Est-il possible de les afficher sur une seule ligne de la listbox ?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut
    C'est bon, avec rowsource et .adress ça fonctionne parfaitement.

    Merci beaucoup Hervé

    Bonne soirée

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

Discussions similaires

  1. [XL-2007] Formule dans une plage de données variables
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/09/2013, 14h38
  2. Somme si avec plusieurs conditions et plage de données variables.
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/10/2007, 14h19
  3. Créer un graph avec une plage de donnée variable
    Par nono le golfeur dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/06/2007, 17h15
  4. sélectionner plage de données variable sous Excel
    Par pschmidtke dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/07/2006, 15h25
  5. [VBA] excel croisé dynamique et plage de données variables
    Par totoche dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 04/01/2006, 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