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 :

attribuer une source à une listbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut attribuer une source à une listbox
    Bonjour,

    je voudrais attribuer une source à une listbox mais pas toujours sur la même feuille et ceci en donnant le nom de la feuille sur un combobox. j'ai essayer pas mal de solution, mais je ne trouve pas!!

    voila mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ComboBox4_Change()
      Sheets(ComboBox4).Select
     
     
    ListBox1.ColumnCount = 5
    ListBox1.RowSource = "a2: e1500"
     
     
    End Sub
    merci du renseignement!!

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    essais comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    ListBox1.RowSource = ComboBox4.text & "!a2: e1500"

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    il me donne le message suivant:

    erreur d'execution '13'
    incompatibilité de type

    il faut bien l'installer dans le combox4?

  4. #4
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour

    et avec des apostrophes s'il y a des espaces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ListBox1.RowSource = "'" & ComboBox4.text & "'!a2: e1500"

    cordialement

  5. #5
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut
    il ne faut pas la convertir avec Cstr() normalement ? A moins que l'on m'aurait menti...

    Citation Envoyé par jijie Voir le message
    par contre pour "convertir avec Cstr() "? La je suis perdu?
    autant pour moi, j'avais pas réfléchi (ou trop vite), les deux chaînes sont même type, donc nul besoin, a priori, d'en changer le Type

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    je viens juste de le remarquer, mais peut être qu'il y a un espace de trop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    a2:e1500
    plutot que 
    a2: e1500

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    tjrs le même message d'erreur!!

    par contre pour "convertir avec Cstr() "? La je suis perdu?

    Voici mon code!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub ComboBox4_Change()
    ' Sheets(ComboBox4).Select
     
     
    ListBox1.RowSource = "'" & ComboBox4.Text & "'!a2:e1500"
     
     
    End Sub



    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
    36
    37
    Private Sub ListBox1_change()
     
       'ListBox1.RowSource = " " & ComboBox4.Text & "!a2:e1500"
     
     
     If ListBox1.Value = "" Then GoTo fin1
        Worksheets(ComboBox4).Select
        For Each c In Worksheets(ComboBox4).Range("A2:e1500")
            If c.Value = ListBox1.Text Then
                c.Select
            End If
        Next c
        ActiveCell.Offset(0, 1).Select
        TextBox2.Value = ActiveCell.Value
        ActiveCell.Offset(0, 2).Select
        ComboBox3.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox2.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox5.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        TextBox11.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox1.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        TextBox5.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        TextBox6.Value = ActiveCell.Value
     
     
        GoTo fin2
    fin1:
        TextBox4.Value = ""
        TextBox5.Value = ""
     
    fin2:
    End Sub

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Tablo = Worksheets(ComboBox4.Text).Range("A1:J65535").Value
    ListBox1.List() = Tablo
    tu veux bien tester pour nous ?

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    Bon alors, pour la reconnaissance de la liste super ça marche génial!!!!:

    Mais par contre je bug maintenant dans le code de listbox il ne reconnat tjrs pas le combobox4!!!!

    voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ComboBox4_Change()
     
     
    Tablo = Worksheets(ComboBox4.Text).Range("A4:J65535").Value
    ListBox1.List() = Tablo
     
    End Sub
    'ça sa marche trés bien



    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
    36
    37
    Private Sub ListBox1_change()
    
      
    Sheets(ComboBox4).Select 'par contre ici ça m....!!
      
     If ListBox1.List = "" Then GoTo fin1
        Sheets(ComboBox4).Select
        For Each c In Sheets(ComboBox4).Range("A4:j65535")
            If c.Value = ListBox1.List Then
                c.Select
            End If
        Next c
        ActiveCell.Offset(0, 1).Select
        TextBox2.Value = ActiveCell.Value
        ActiveCell.Offset(0, 2).Select
        ComboBox3.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox2.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox5.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        TextBox11.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox1.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        TextBox5.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        TextBox6.Value = ActiveCell.Value
    
        
        GoTo fin2
    fin1:
        TextBox4.Value = ""
        TextBox5.Value = ""
        
    fin2:
    End Sub

  10. #10
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    re

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets(ComboBox4).Text.Select

    EDIT
    à ajouter partout dans ton code
    @+

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    Pourtant Tjrs le même probleme!!

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    Citation Envoyé par jijie Voir le message
    Pourtant Tjrs le même probleme!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sheets(ComboBox4).Text.Select
     
     If ListBox1.List = "" Then GoTo fin1
        Sheets(ComboBox4).Text.Select
        For Each c In Sheets(ComboBox4).Range("A4:j65535")
            If c.Value = ListBox1.List Then
                c.Select
            End If
        Next c

  13. #13
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    re

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(ComboBox4.Text).Select


    et partout dans ton code


    @+

  14. #14
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    Citation Envoyé par jijie Voir le message
    Sheets(ComboBox4).Text.Select

    If ListBox1.List = "" Then GoTo fin1
    Sheets(ComboBox4).Text.Select
    For Each c In Sheets(ComboBox4).Range("A4:j65535")
    If c.Value = ListBox1.List Then
    c.Select
    End If
    Next c
    Autant pour moi!!! par contre c'est trés lent!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sheets(ComboBox4.Text).Select
     
     If ListBox1.Text = "" Then GoTo fin1
        Sheets(ComboBox4.Text).Select
        For Each c In Sheets(ComboBox4.Text).Range("A4:j65535")
            If c.Value = ListBox1.Text Then
                c.Select
            End If
        Next c

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Sinon, tu peux récupérer la valeur de l'index de l'item sélectionné.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Tablo = Worksheets(combobox4.List(combobox4.Listindex)).range("A4:j65535").value
    ListBox.list() = Tablo

  16. #16
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    re

    tu es obligé de chercher sur toute cette plage ("A4:j65535")?

    sinon, recherche la dernière cellule de la feuille et réduit la plage
    @+

  17. #17
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je te conseille une bonne lecture

  18. #18
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    Personne n'a songé aux méthodes Find et FindNext de l'objet Range au lieu du For ... Next? Ça devrait être plus rapide qu'une boucle puisque c'est natif à VBA-Excel...
    Et toutes ce sélection... ça doit être ça qui ralentit la routine.

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour la recherche avec Find, tu as un excellent exemple dans l'aide, sinon, tu peux regarder ici, ou, pour la recherche dichotomique, plus rapide,
    A+

  20. #20
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    ok, mais je ne comprend pas ou installé ce code et je fais comment ma condition??
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Private Sub ComboBox4_Change()
     
     
    Tablo = Worksheets(ComboBox4.Text).Range("A4:J65535").Value
    ListBox1.List() = Tablo
     
    End Sub
     
     
     
     
     
    Private Sub ListBox1_change()
    'Tablo = Worksheets(ComboBox4.List(ComboBox4.ListIndex)).Range("A4:j65535").Value
    'ListBox1.List() = Tablo
     
    Sheets(ComboBox4.Text).Select
     
     If ListBox1.Text = "" Then GoTo fin1
        Sheets(ComboBox4.Text).Select
        For Each c In Sheets(ComboBox4.Text).Range("A4:j65535")
            If c.Value = ListBox1.Text Then
                c.Select
            End If
        Next c
        ActiveCell.Offset(0, 1).Select
        TextBox2.Value = ActiveCell.Value
        ActiveCell.Offset(0, 2).Select
        ComboBox3.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox2.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox5.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        TextBox11.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox1.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        TextBox5.Value = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        TextBox6.Value = ActiveCell.Value
     
     
        GoTo fin2
    fin1:
        TextBox2.Value = ""
        TextBox5.Value = ""
     
    fin2:
    End Sub
    sinon ça marche mais je trouve ça lent

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/02/2021, 17h57
  2. [XL-2010] Copie d'un tableau d'une feuille à une autre : une cellule ne se recopie pas
    Par mchouv dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 25/07/2014, 13h47
  3. [RegExp] Détecter des combinaisons dans une chaine une par une
    Par vermine dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/06/2010, 14h22
  4. Lier une table à une source de données
    Par FranT dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 06/04/2007, 12h00

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