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 :

VBA combobox.rowsource alimenté par vlookup ?


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 3
    Par défaut VBA combobox.rowsource alimenté par vlookup ?
    Bonjour à tous,

    Grand bidouilleur en VBA, je suis confronté à un petit problème...

    Pour situer le contexte : je suis en train de développer un classeur excel avec des userforms pour saisir des informations relatives à l'embauche (nom, prénom, etc, etc) dont la saisie de ce que l'on appelle les plans de roulement (plage horaires de travail).

    Chaque sites de mon entreprise a des plans de roulements différents et pour limiter les erreurs de saisies (plan de roulement du site A saisie pour un salarié embauché dans le site B), je me suis lancé sur un combobox alimenté en fonction du code du site.

    Jusque là rien de sorcié, il suffisait de nommé les plages de données en fonction des noms des sites non ? Sauf que ces coquins de codes sites sont du type FXXX (comme une cellule excel ...).

    J'ai donc nommé les plages de plan de roulement différement (pour le site A la plage s'appelle Num1, site B Num2, etc) et à l'aide d'un tableau à 2 colonnes la liaison(Code site et en face le nom de la plage lui correspondant), pour travailler le tout à l'aide de VlookUp.

    Donc mon esprit simpliste a fomenté ce magnifique code (ne fonctionnant pas bien évidement ^^) :

    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_Initialize()
    Dim Code As Variant
    Dim Bis As String
    ' Détermine mes 2 variables
     
    With Sheets("Fiche Embauche")
    Code = Range("Y149").Value
    End With
    ' Récupère le code du site (saisie à l'aide d'un autre USF)
     
    With Sheets("Table")
    Bis = Application.VLookup(Code, Sheets("Table").Range("DK2", "DL49"), 2, False)
    End With
    ' Trouve l'équivalence du code site en plage de donnée (par exemple le site F001 à la plage de donnée Num1, etc).
     
    With Sheets("Table")
    ComboBox1.RowSource = Bis
    End With
    ' Doit alimenter la combobox en allant chercher le nom de plage trouvée via vlookup
     
    End Sub
    Donc la feuille "Fiche Embauche" est celle contenant les boutons de lancement des userforms et aussi les informations saisies et la seconde feuille "Table" contient toutes les données alimentants les combobox des userforms.

    Code est bien identifié et donne la bonne valeur.
    Bis fonctionne bien et donne la bonne valeur.

    Mais le rowsource, lui, refuse de fonctionner.

    J'ai essayé de changé le code en passant "Bis" en "Object" et en ajoutant ".value" dans la ligne du rowsource, mais rien à y faire ...

    Y a-t-il un conflit entre rowsource et vlookup ?

    Je me plante peut être sur la dénomination des variables ?

    Je vous remercie par avance de votre aide.

    Cdt,

    Metil

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonsoir,
    Jusque là rien de sorcié, il suffisait de nommé les plages de données en fonction des noms des sites non ? Sauf que ces coquins de codes sites sont du type FXXX (comme une cellule excel ...).
    Rien ne t'empêche d'ajouter un suffixe ou un préfixe à FXXX ce qui t'évitera un conflit, comme par exemple siteFXXX.
    Tu peux créer une table et utiliser la fonction INDIRECT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =(INDEX(INDIRECT(B2);1,1))
    en B2 se trouve le siteF001
    Dans ton code initialisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.combobox1.rowsource="siteF001"
    Tu remplaces "siteF001" par une variable remplie par une recherche.
    Etc ...
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. combobox alimenté par requête sur base access
    Par urbanspike dans le forum VB.NET
    Réponses: 1
    Dernier message: 04/06/2009, 21h11
  2. [VBA-E]Rowsource variable pour combobox/listbox
    Par ippo_master dans le forum Excel
    Réponses: 7
    Dernier message: 25/10/2007, 13h44
  3. [VBA-E]Mise à jour de cellule alimentée par une liste
    Par moritan dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/01/2007, 06h11
  4. [VBA-E]ComboBox + RowSource ne concerne que les lignes ?
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 10/04/2006, 14h29

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