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 dans une combobox [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut RowSource dans une combobox
    Bonjour,

    Je suis en train de créer un formulaire, comme ma l'a conseillé Mercatoq mais j'ai un petit problème que je ne trouve pas dans les tutoriels.

    J'ai donc créer un userform et à l'intérieur une combobox. Dans les propriétés je suis allé voir dans RowSource car il est dit dans un tutoriel que si l'on met l'emplacement de notre liste, il l'a reprendra.
    J'ai testé ça marche mais moi je suis intéressé par une liste que j'avais créer grâce à la validation des données et donc je ne peux pas lui mettre de lien.Ces valeurs sont dans aucune case, je les ai noté directement. J'ai essayé de mettre ce que j'avais mis dans la validation des données mais ça ne marche pas. Ce ne sont pas des cellule mais des valeurs.
    ex : clio;mégane;scénic

    J'ai essayé dans le code de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    combobox1.List()="clio";"mégane"
    mais ça ne marche pas

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub UserForm_initialize()
    Dim maTab
     
    maTab = Array("mégane", "clio", "R4")
    Me.ComboBox1.List() = maTab
    End Sub
    mais c'est non évolutif pour l'utilisateur; vaut mieux définir une plage de cellules

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub UserForm_initialize()
    Dim LastLig as long
     
    LastLig=sheets("Feuil4").cells(rows.count,"C").end(xlup).row 'dernière ligne
    Me.ComboBox1.rowsource="Feuil4!C1:C" & Lastlig
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    Tu as raison, c'est pourquoi je vais suivre ton conseil et je viens donc de saisir une liste dans une feuille 6. Le titre étant en cellule A1, ma liste commence à A2, j'ai donc fais les changements dans ton code mais ça ne marche pas. J'ai dû me tromper quelque part. Je te donne ce que j'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub UserForm_initialize()
    Dim LastLig as long
     
    LastLig=sheets("Feuil6").cells(rows.count,"A").end(xlup).row 'dernière ligne
    Me.ComboBox1.rowsource="Feuil6!A2:A" & Lastlig
    End Sub

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Où tu as mis ce code?
    bien sûr sur l'évènement Initialise de ton userform
    en mode création, double click sur ton userform, il te donne par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Click()
     
    End Sub
    tu choisi à droite l'évènement initialize

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    oui oui c'est ce que j'ai fais, d'ailleurs je l'ai fais mais je n'ai pas compris pourquoi on ne mets pas ce code dans le code de la combobox car c'est elle qui est concerné. Quelque chose m'échappe sous VBA apparemment.

    En tout cas, je l'ai bien mis ou tu m'as dis et quand clic sur mon bouton j'ai une fenêtre qui s'ouvre : erreur d'éxécution 9 : l'indice n'appartient pas à la sélection

    je viens de faire un test que je trouve bizarre

    Etant donné que la formule ne marche pas et que tu as l'air surpris. Apparemment ça devrait marcher. J'ai essayé de remettre les cellules nouvellement saisie dans Rowsource, à savoir : et bien ça ne marche pas.

    Par contre quand je remplace simplement le 6 par 1
    exemple : et bien ça marche.

    En fait, ça marche pour la feuil1 et la feuil2. Si je met exactement la même formule pour les autres feuilles 3, 4,5 ou 6 ça ne marche pas. Il me dit :Impossible de définir la propriété Rowsource. Valeur de propriété non valide ???????????

    C'est surement pour ça aussi que ton code ne marche pas

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    tu as bien une feuille nommée feuil6?
    mets en pj un extrait de ton fichier

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    le voilà, j'ai supprimé beaucoup de chose bien sûr

    apparemment mon fichier est trop lourd. Je n'arrête pas de supprimer des choses, il n'y a plus grand chose, mais c'est toujours trop lourd

    je réessaie dans 2 minutes, le temps de supprimer encore

    j'ai presque tous supprimer et mon fichier fais encore 460ko ??

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    fais un fichier test simplifié avec peu de données (j'ai XL03)
    Edit, j'ai pu provoquer ton erreur, tu n'as pas Feuil6 dans ton classeur

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    je t'assure que j'ai bien une feuille 6 dans mon classeur. Je l'ai créer quand tu m'as dis que je devrais utiliser un code avec des références a des cellules et pas des nom directement (je ne sais pas si tu te souviens, c'est plus haut dans la discussion)

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    merci beaucoup,

    je ne comprends pas car pour moi c'est exactement ce que j'ai fais.
    Il y a surement un conflit quelque part, je ne sais pas...

    Je ne sais pas si c'est autorisé sur le forum mais est-ce que je peux t'envoyer mon fichier par mail car mon fichier fait à peine 300Ko et quand je le transforme en version 97-203, il fait plus de 707ko et si je réduit trop tu ne pourra peut-être pas voir mon problème ?

  11. #11
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Charte du forum oblige, pas de questions techniques par MP
    crée un autre usf avec une combo
    ne touche rien aux propriétés
    insère le code fourni à l'évènement Initialize de ton usf

  12. #12
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut
    bonjour manuseverine et mercatog ainsi que le forum

    pour ma part quand j'ai une liste de validation sur un autre feuille que celle qui est ouverte je n'ai pas de soucis pour avoir la liste dans le combox de l'userform, il faut donné un nom a ta list de la feuille 6 et l'écrire en row source de ta combobox et le tour est joué

    cordialement

    Pascal

  13. #13
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    bonjour a tous

    j'ai essayer tes bouts de code et effectivement des fois ca bug

    pourquoi n'essaie tu pas de le faire sous forme de tableau

    exemple:

    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
     
    Private Sub ComboBox1_Enter()
    '******************************************************************************************************************************************
    'a chaque fois que tu entre dans la combobox elle se netoie et se reremplie avec la plage a jour en cas de modification en cour de route
    ComboBox1.Clear
    '*****************************************************************************************************************************************
     
    '*****************************************************************************************************************************************
    'DECLARTATION DE L'EXISTANCE DES VARIABLES REPRESENTANT LE NUMERO DE LA DERNIERE LIGNE RENSEINGNEE ET LA LISTE A OBTENIR ET LEUR TYPE
    Dim derniereligne As Long
    Dim liste As Variant
    '*****************************************************************************************************************************************
     
     
    '*****************************************************************************************************************************************
    'determination de la derniere ligne renseignée
    derniereligne = Sheets("Feuil6").Cells(Rows.Count, "A").End(xlUp).Row 'dernière ligne
    '*****************************************************************************************************************************************
     
     
    '*****************************************************************************************************************************************
    'remplissage de la liste avec la plage a1 jusqu a a la derniere ligne renseignée
    liste = Sheets("feuil6").Range("a1" & ":a" & derniereligne)
    '*****************************************************************************************************************************************
     
     
    '*****************************************************************************************************************************************
     'remplissage de la combobox avec la liste obtenue
    ComboBox1.List = liste
    '*****************************************************************************************************************************************
     
     
    End Sub
    j'ai mis combox1.clear au debus comme ca quand tu modifie une donnée sur la feuille6 a chaque fois que tu entrera dans le combobox1 il sera a jour
    c'est tout simple et il ne peut pas y avoir d'erreur

    en plus le code est placer dans le enter de la combobox comme tu le souhaitais

    au plaisir

    re:

    l'idée de grizan est bonne au sujet de nomer la plage de cellule a condition que cette plage ne soie pas modifiée en terme de nombre de lignes

    je vois que le petit scarabée(grizan) a oublié mes lecons precedentes

    se sera donc 2 heures de colle et 500 lignes de punition

    hihhihi


    pour mapart l'utilisation de la premiere et la derniere ligne renseignée est la plus sur pour que les eventuels changement soient pris en compte



    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  14. #14
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    @patricktoulon
    Ce code (très basique et trivial)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub UserForm_initialize()
    Dim LastLig as long
     
    LastLig=sheets("Feuil6").cells(rows.count,"A").end(xlup).row 'dernière ligne
    Me.ComboBox1.rowsource="Feuil6!A2:A" & Lastlig
    End Sub
    et ceci
    j'ai essayer tes bouts de code et effectivement des fois ca bug
    des fois ça bug, il serait judicieux de dire précisément quand.
    Du moment que des données existent en colonne A de la feuille Feuil6, je ne vois pas de bug.
    à toi d'éclaircir le forum

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    j' ai constaté que c'est dans la facon de l'ecrire


    en fet je ne sais pas pourquoi mais je cherche

    en fet l'adresse d'une celule c'est une ou plusieurs letres e un ou plusieur chiffres

    et dans le:Me.ComboBox1.rowsource="Feuil6!A2:A" & Lastlig
    ce qui est entre guillemet semble prendre en compte les deux points ce qui est inexacte par contre ne me demande pas pourquoi

    j'ai remarqué que ca le fait beaucoup quand je reinitialise le combobox trop rapidement plusieures fois sans doute un probleme de memoire pourtant je n'en manque pas

    c'est pour ca que quand je marque ca:
    liste = Sheets("feuil6").Range("a1" & ":a" & derniereligne)
    je separe les deux point du premier repere (a1) pour ne pas qui l'interprete autrement j'avais deja eu le probleme et ca venait de la


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #16
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Attention de ne pas risquer d'induire les lecteurs en erreur, les arguments invoqués ne me semblent pas corrects.

    Syntaxe
    object.RowSource [= String]
    c'est l'aide d'excel

    La relecture de ce tuto est intéressante sur ces points, Tutoriel

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    J'ai enfin réussi a réduire mon dossier, je vous le joins avec des modifs pour protéger mes clients bien sûr.

    Mercatoq, tu verras le bouton intitulé "Filtre" est sur la page Véhicules

    Merci

  18. #18
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
    Dim LastLig As Long
    LastLig = Sheets("Listes déroulantes").Cells(Rows.Count, "A").End(xlUp).Row
    Me.ComboBox1.RowSource = "'Listes déroulantes'!A2:A" & LastLig
    End Sub
    Tu as mélangé le nom de la feuille (Listes déroulantes) et son CodeName (Feuil6). journées perdues

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    désolé, je pensais que si je laissais "feuil6" au lieu du nom de la feuille, c'était pareil. Que le code feuil marchait pareille.

    J'avais essayé avec le nom de la feuille mais j'avais dû faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
    Dim LastLig As Long
    LastLig = Sheets("'Listes déroulantes'").Cells(Rows.Count, "A").End(xlUp).Row
    Me.ComboBox1.RowSource = "'Listes déroulantes'!A2:A" & LastLig
    End Sub
    c'est à dire que j'avais mis des ' dans les parenthèses.

    Merci et désolé pour cette perte de temps.

  20. #20
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour a tous les deux


    non effectivement mercatog a raison

    soit tu utilise le nom de la feuil:

    "Listes déroulante"'

    soit tu utilise son index:

    sheets(6) et non pas sheets("feuil6")


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. Comment afficher dans une combobox les driver des imprimante
    Par lassad dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/10/2005, 08h56
  3. ajouter une valeur dans une combobox
    Par decour dans le forum Access
    Réponses: 1
    Dernier message: 17/10/2005, 10h58
  4. Réponses: 2
    Dernier message: 14/09/2005, 13h39
  5. [VB+IE] Comment sélectionner dans une combobox d'une page IE
    Par danje dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 03/05/2005, 09h10

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