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 ^^) :
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 : 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
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
Partager