USF Initialize : alimenter des Label selon la référence d'un label

Mulder

XLDnaute Junior
Bonjour à tous,
J'ai un USF qui s'ouvre, avec un code produit contenu dans le Label de l'USF.
Je cherche à afficher les données d'une base de données, grâce à une recherchev ou autre sur le code produit.
Actuellement, j'ai le code suivant qui ne fonctionne pas, mais je dois me tromper dans les commandes applicable au Label (.Caption ? .Value ? J'ai testé les deux, ça ne fonctionne pas...).

Code:
Private Sub UserForm_Initialize()
Dim r As Range

Set r = Sheets("BDD_Legends").Range("A1:N200").Find(Me.Label10.Caption, , xlValues, xlWhole)
If Not r Is Nothing Then
    Me.Label11.Caption = r.Offset(3, 0).Value
Else
  Me.Label11.Caption = ""
End If

End Sub

Question subsidiaire : cette méthode est-elle intéressante si je dois alimenter une dizaine de Label ?
D'avance merci...
 

Papou-net

XLDnaute Barbatruc
C'est pas que j'ai un message d'erreur, c'est qu'en fait, mon Label11 affiche "Label11"...

Bonjour Mulder,

Et qu'est-ce que Label11 devrait afficher ? Quel est le contenu de la cellule R.Offset(3, 0) ?

Une copie en PJ permettrait de cerner plus efficacement le problème.

Sinon, essaie en retirant une virgule:

Set r = Sheets("BDD_Legends").Range("A1:N200").Find(Me.Label10.Caption, xlValues, xlWhole)

Cordialement.

PS: Bonjour Dranreb.
 

Mulder

XLDnaute Junior
Bonjour Papou-net,
Ci-joint un fichier pour illustrer.
Actuellement, cliquer sur l' "icône" en colonne 2 (B1 dans l'exemple) me lance l'USF, avec le code produit correctement repris (A1 dans l'exemple).

Actuellement, la macro USF_Initialize est volontairement en commentaire pour que vous ayez une idée de ce que j'obtiens comme résultat (au moins, l'USF s'affiche).
Dès qu'on passe des commentaires au VBA, plus rien ne marche, pas même le lancement de l'USF...

Nota : le lancement de l'USF se fait si target est une cellule. Dans le cas contraire, ça plante (on sélectionne une zone de plusieurs cellules, une colonne, une ligne...). Peut-on limiter le fonctionnement à "si target est une cellule" ?
 

Pièces jointes

  • test.xlsm
    18 KB · Affichages: 21

Dranreb

XLDnaute Barbatruc
Il y avait 2 erreur dans le code d'origine.
1) — L'userForm_Initialize était exécutée avant l'affectation UserForm1.Label4.Caption = Target.Offset(0, -1).Value dans la Sub Worksheet_SelectionChange. Solution: la remplacer par une Sub UserForm_Activate pour que ça s’exécute au Show et non à la 1ère mention de UserForm1.
2) — Il manquait une virgule pour sauter le 2ième paramètre, After, dans la méthode Find de sorte que xlValue était pris comme After (incompatbilité de type) au lieu de Lookin et xlWhole était pris comme LookIn au lieu de LookAt.
 

Mulder

XLDnaute Junior
Bonjour Si... et Dranreb,
Merci pour votre retour.

@Dranreb : point 1, ok ; point 2, j'avais effectivement supprimé une virgule comme tu l'avais mentionné dans ta première réponse, mais je ne l'avais pas remise, d'où le fait que ça ne fonctionnait plus.

@Si... : excellent, ça fonctionne comme je l'entends. Quelques difficultés à comprendre pour l'adapter à mon cas (d'où mon retard dans la réponse, j'ai cherché à comprendre d'abord), mais je pense que j'ai pigé le fonctionnement. C'est nickel, dans la mesure où ça affiche ce que je veux (une dizaine de Labels au final) et sans planter quand on sélectionne autre chose qu'une cellule.

Je ne passe pas en "RESOLU" pour l'instant car j'aurai peut-être besoin de revenir si jamais il y a des bugs suite à des ajouts.

En attendant, merci à vous deux.
 

Si...

XLDnaute Barbatruc
Re

Une image explicative de ma proposition
upload_2017-10-24_10-4-57.png
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 973
Membres
103 073
dernier inscrit
MSCHOE16