UF - Récupérer la valeur d'un combobox

La braise

XLDnaute Occasionnel
Bonjour à Tous,

J'ai un UF avec plusieurs Combobox.

Ce que je souhaite :
- lors que l'on modifie un combobox (celui avec un nom), récupérer la valeur du combobox pour effectuer des Vlookup (dans un onglet du fichier) permettant de rapatrier différentes infos et les afficher dans le UF.

J'ai essayé en utilisant l'option : Private Sub ComboBox1_Change()
où j'ai indiqué :
Nom = UF_02.ComboBox1.Text
Puis
Unload me pour fermer l'UF
et
macro_2 pour aller effectuer les vlookup dans un Sub

La macro_2 est censée :
effectuer les Vlookup,
affecter les résultats à des variables publiques,
relancer le même UF mais cette fois en ajoutant les infos rappatriées.

Mon code Macro_2 :
Sheets("SoldeNom").Select
Set BaseB = Range("A3:B" & ActiveSheet.UsedRange.Rows.Count)
Solde = Application.WorksheetFunction.VLookup(Nom, BaseB, 2, 0)
Uf_02.show

(dans l'UF j'ai un code Private Sub UserForm_Initialize qui charge les variables publiques)

Mais voilà... ça ne marche pas... :mad:

je pense avoir identifié un premier pbm via un "msgbox Nom" dans la macro_2 qui est vide.
Conclusion : le code dans Private Sub ComboBox1_Change() ne fonctionne pas pusiqu'il ne me rapatrie pas la valeur modifié du combobox.

Est-ce possible de récupérer ce type d'info (la valeur "changée" suite modif. utilisateur dans combobox) d'un UF?
et comment? :D

Est-ce possible d'écrire le calcul vlookup comme je l'ai fait c'est à dire :
Solde = Application.WorksheetFunction.VLookup(Nom, BaseB, 2, 0) ?

Je sais que j'aurais pu tout faire dans l'UF mais cela me semble plus compliqué.

Merci d'avance pour votre aide.

:D:D:D
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : UF - Récupérer la valeur d'un combobox

Bonsoir La braise,

Difficile, sans fichier, de t'aiguiller ... Je dirais bien que ta variable "Nom" n'est peut-être pas reconnue, mais il y tant d'explications possibles et imaginables, qu'on risque de procéder par essais/erreurs ... pendant longtemps!
Avec un extrait de ton fichier, on devrait y voir plus clair (et tant pis si tu penses que ce n'est pas un chef d'oeuvre, au stade actuel ... :p)
 

kjin

XLDnaute Barbatruc
Re : UF - Récupérer la valeur d'un combobox

bonsoir,
Sans fichier...
Pourquoi ne pas utiliser la méthode Find
Outre qu'elles doivent être Public, les variables doivent être déclarées dans un modules standard pour être recuperables dans n'importe quel module
A+
kjin
 

La braise

XLDnaute Occasionnel
Re : UF - Récupérer la valeur d'un combobox

Re-,

Je joins un fichier exemple (simple) de mon pbm.

Ici le vlookup fonctionne bien (??? mais soit !) mais maintenant c'est la valeur initiale du nom qui n'apparait plus...

Ex. Lancer la macro Test, sélectionner un nom dans la liste, l'UF s'affiche bien avec la valeur "VLookup-ée" mais c'est le nom qui n'apparait plus... :(


Si quelqu'un a la solution pour actualiser le champ info1 directement dans l'UF, je suis ultra preneur.

D'avance merci pour votre aide.

:D
 

Pièces jointes

  • Exemple XLD 100209.xls
    42 KB · Affichages: 153
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : UF - Récupérer la valeur d'un combobox

re-bonsoir,

dans ton exemple, je ne comprends pas pourquoi tu "décharges" ton Usf, après avoir sélectionné un élément dans ta liste: en effet, quand tu le ré-affiches juste après, tu repasses par le
Code:
Userform_Initialize()
qui regarnit la liste comme la première fois.
La piste de kjin à propos de l'utilisation de Find est sans doute la plus judicieuse et serait à mettre en oeuvre dans ton
Code:
Private Sub ComboBox1_Change()
 

La braise

XLDnaute Occasionnel
Re : UF - Récupérer la valeur d'un combobox

re-,

kjin, merci beaucoup pour ton fichier c'est exactement ce que je cherchais.

J'aurais plusieurs questions :

- Pourquoi mettre le caption du label13(destination) à "" au début?

- Pourquoi mettre un exit sub? Au cas où l'utilisateur consulte la liste et ne sélectionne rien?

- Pourquoi ajouter un Cstr ?

En réalité, mon fichier est plus complexe que le fichier exemple.
La recherche s'effectue sur un Tableau croisé dynamique issu de la base.

Il suffit - je pense - que je définisse les valeurs du combobox non pas dans base mais sur le Tableau croisé dynamique (et du coup me simplifier le pbm du tri des valeurs ;)) et éviter la recherchev.

Merci pour ta réponse.
et encore merci pour ton aide! :D
 

La braise

XLDnaute Occasionnel
Re : UF - Récupérer la valeur d'un combobox

re-,

La solution d'utiliser le n° de l'index de la valeur du combobox est parfaite si la base est figée.

Malheureusement, l'exemple est volontairement simpliste.

Dans la réalité ma base sert à créer des tableaux croisés dynamiques sur lesquels je fais les rechercheV.

Évidement (...) des noms présents dans la liste globale ne sont pas forcement présents dans les différents tableaux croisés dynamiques, donc j'ai besoin d'utiliser les recherchev et la fonction : si la recherche ne donne rien afficher ceci.

Dans l'idée :
Si(recherchev(Nom, Base, 1,0)=Nom,recherchev(Nom, Base, 2,0),non)

Est-ce possible?

D'avance merci pour votre aide.

:D
 

La braise

XLDnaute Occasionnel
Re : UF - Récupérer la valeur d'un combobox

re-, Kjin,

Je te rassure, aucun reproche sur ton fichier :D Bien au contraire!
La technique me plait beaucoup et je l'ai mis en pratique.

Il se trouve que l'exemple que j'avais envoyé est trop simpliste par rapport à mon problème.

Ci-joint un nouveau fichier plus cohérent avec mon besoin.

Par rapport au 1er fichier j'ai ajouté un onglet 'données' qui concerne certains clients mais pas tous :
- d'où l'impossibilité de faire pointer la liste du combobox dessus (car tous les clients ne sont pas dedans)

J'ai ajouté un onglet 'Feuil2' qui contient le Tableau croisé dont la base est l'onglet 'données'.

Ce dont j'ai besoin :
- la liste du combobox pointe sur tous les clients de l'onglet 'Clients'
= cela fonctionne déjà parfaitement

- afficher dans l'UF le résultat du calcul :
BAse = plage du TCD sur l'onglet 'Feuil2'
Si(recherchev(Nom, Base, 1,0)=Nom,recherchev(Nom, Base, 2,0),"Absent")
= si le Nom est bien dans le TCD, afficher la valeur de la 2ème colonne sinon afficher "Absent".

J'espère avoir été plus clair.

D'avance merci à tous pour votre aide.

:D
 

Pièces jointes

  • labraise v2.xls
    40 KB · Affichages: 146
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : UF - Récupérer la valeur d'un combobox

Bonjour le fil, bonjour le forum,

J'ai rapidement parcouru ce fil sans prendre le temps de tout lire et donc je risque de dire des bêtises. Comme ce ne sera ni la première ni la dernière fois je ne m'affole pas...

Quand je rencontre ce genre de problème, d'alimenter une Combobox et que je veux par la suite retrouver la donnée dans le tableau, j'utilise l'astuce suivante. J'attribue à la Combobox 2 colonnes (0 et 1) avec la propriété ColumnCount = 2. Je masque la seconde colonne avec la propriété ColumnWitdhs = ;0pt. Et j'alimente ensuite la ComboBox avec la donnée dans la colonne 0 et je récupère le numéro de ligne dans la colonne 1 (masquée). Ensuite, si je sélectionne une donnée dans cette ComboBox, je peux rapidement la localiser (sans faire de recherche) dans le tableau en récupérant le numéro de ligne de la donnée placé dans la seconde colonne de la ComboBox.

J'espère que c'est suffisamment clair et pas trop hors sujet... Un exemple aurait été plus parlant et si, La Braise, cette idée t'intéresse et peut convenir à ton problème, je te ferai.
 

La braise

XLDnaute Occasionnel
Re : UF - Récupérer la valeur d'un combobox

Re- le Fil, Robert,

Robert,
Ta solution est très intéressante et je te redemanderai le moment venu l'exemple si gentiment proposé mais je pense que dans le cas présent cela ne fonctionnera pas car :

L'onglet qui sert à définir la liste du combobox n'est pas le même où je veux faire la recherche.

Re-explication (+ clair j'espère... j'ai un peu de mal!)

- j'ai un onglet avec bcp de client (onglet qui sert à définir la liste du combobox)

- j'ai un autre onglet où pour certains clients (issu du 1er onglet) j'ai des donnés, du CA admettons. Certains clients existent sur le 1er onglet mais pas sur le 2ème.
A partir de ce 2ème onglet j'alimente un Tableau croisé dynamique qui me totalise le CA par client.

Ce que je veux c'est que :
quand je sélectionne dans l'UF un client existant dans le 1er onglet,
récupérer via un Vlookup dans le Tableau croisé dynamique (des clients ayant un CA) le CA de ce client et l'afficher dans un label.
(si pas de CA j'afficherais 0 ou "pas de CA").

J'espère avoir été plus clair.
:D

PS : le fichier de mon post de 12h40 illustre ce besoin.

D'avance merci à tous pour votre aide.
 

Discussions similaires

Statistiques des forums

Discussions
314 586
Messages
2 110 980
Membres
110 999
dernier inscrit
Shiny