Les labels VBA

Fermé
niny@ Messages postés 107 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 16 septembre 2008 - 18 mars 2008 à 15:56
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 18 mars 2008 à 21:34
bonjour,

j'ai une question à propos des noms des labels dynamique :

je créer mes labels dynamiquement, mon problème est que ceux ci doivent recevoir un "id" venant d'une requête faite sur un autre userform et que je ne sais pas comment faire pour récupérer cet "id" dans le bouton créé dans le premier userform.

cet "id" doit devenir son .caption, mais le fait que ce soit sur un autre userform cela me pose des problème de variables.

est ce que quelqu'un aurait un truc à me proposer ?

merci beaucoup

16 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 mars 2008 à 16:07
Bonjour,

Il suffit pour cela de stocker la donnée correspondante du recordset dans une variable, et ensuite de récupérer cette variable pour la mettre dans la propriété Caption du label.

Admettons que ta variable (monLabel déclarée en public) qui récupère le nom du label soit sur UserForm1 et le label1 sur UserForm2, ça donne :

UserForm2.Label1.Caption = UserForm1.monLabel

;o)

polux
0
niny@ Messages postés 107 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 16 septembre 2008
18 mars 2008 à 16:27
salut !

en fait ca me marque l'erreur "membre méthode ou donnée introuvable" sur la variable créée qui est censé récupérer le recorset.
peut etre que je fais une erreur dans mon code :

monlabel = RSCONSO2!Install & " , cal " & RSCONSO2!Cal // donc mon label = c'est ma var public

// dans mon autre userform

With label_dyna
.Caption = choix_install2.monlabel
....


c'est bien ca non ?

merci polux
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 mars 2008 à 18:07
Ton label est donc la concaténation de 2 champs de ta requête ... Tu as bien déclaré ta variable comme ça :

Public monLabel As String

Mais un point d'arrêt sur monlabel = RSCONSO2!Install & " , cal " & RSCONSO2!Cal et regarde ce que contient la variable.

Dans ton autre userform, label_dyna est créé avec la méthode que je t'ai passé ?
0
niny@ Messages postés 107 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 16 septembre 2008
18 mars 2008 à 19:58
oui c'est ca, ma variable est bien la concaténation de 2 champs de ma requête.

j'ai bien déclaré monlabel public

pour label_dyna j'ai utilisé :

Set label_dyna = Controls.Add("forms.label.1", "label" & lig & col, True)
With label_dyna
.Left = (40 + EspaceX) * (col - 1) + BaseX
.Top = (40 + EspaceY) * (lig - 1) + BaseY
. caption = ???

que j'ai insérer dans une boucle de création de boutons

je vais regarder avec un point d'arrêt
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 mars 2008 à 20:09
C'est étrange ... ton label_dyna se créait-il bien ? fait un test en mettant .caption = "toto" par exemple ...
0
niny@ Messages postés 107 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 16 septembre 2008
18 mars 2008 à 20:14
oui mon label se créer bien pour chaque bouton que je créer j'associe un label différent.

public monlabel as string me donne l'erreur "attribut incorrect dans une procédure sub ou function"

quand je le sort de là , ca me dit que seul les commentaires peuvent etre en dehors d'une fonction ou procédure.

et du coup pour l'instant je ne vois pas si monlabel récupére bien les données de la requête
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 mars 2008 à 20:20
ok

dans les champs du resordset n'aurais-tu pas une apostrophe ?
0
niny@ Messages postés 107 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 16 septembre 2008
18 mars 2008 à 20:25
il me semble qu'il n'y a rien d'anormal :

Requete = "SELECT Install,Cal,ID FROM CONSO WHERE ID=" & id_install & " "

Set RSCONSO2 = BDDCONSO.OpenRecordset(Requete)

normalement quand je faisais la même chose pour un seul bouton et un champs caché associé ma requête marchait.

je sais vraiment pas je modifie à dte à gauche mais ca veut pas faire passer la var monlabel.

je suis désolée de t'embéter même le soir ;-( j'espere ne pas trop t'importuner
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 mars 2008 à 20:25
Dans quelle partie as-tu déclaré monLabel ??? il faut la déclarer en variable globale ... en tout début de code avant toute procédure ou fonction ....
0
niny@ Messages postés 107 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 16 septembre 2008
18 mars 2008 à 20:29
oups, elle était en dessous d'une autre procédure différente et pas tout en haut.

par contre faut que je vérifie si ca récupère bien les données du recordset car le label se créer mais sans rien dedans
pour l'instant
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 mars 2008 à 20:31
lol ... et oui ça une variable globale qui peut être lu de n'importe quel module

;o)

polux
0
niny@ Messages postés 107 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 16 septembre 2008
18 mars 2008 à 20:36
par curiosité ca fait combien de temps que tu codes le VBA ? parce que pour debugger de loin c'est aps évident!!! surtout quand tu tombes sur des gens comme moi lol !

bon "monlabel" récupére bien les données du recorset mais ne le renvois pas sur l'autre userform. car quand je fais un msgbox pour vérifier le .caption de mon label créé dynamiquement recoit rien.

faut pas re déclarer monlabel vu que cette variable est dans l'autre en public ? c'est ca non ?
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 mars 2008 à 20:45
lol je ne code pas en VBA ... je fais du VB de temps en temps ... mais le principe est le même.

Fait juste un msgbox userform1.monLabel dans le load de l'userform2 (userform_initialize je crois sur VBA)...
0
niny@ Messages postés 107 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 16 septembre 2008
18 mars 2008 à 20:55
c'est ce que j'ai fait mais du coup ca me montre bien que la var ne transite pas vers l'autre userform.
ca me fait comme si elle était déclarée en locale. c'est bizarre pourtant il me semble que tout y est .

*chapeau pour la prog, j'ai encore du boulot mais pti à pti on apprend
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 mars 2008 à 20:57
peux-tu mettre ton fichier ici : https://www.cjoint.com/ et ensuite tu mets le lien ici ...
0
niny@ Messages postés 107 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 16 septembre 2008
18 mars 2008 à 21:19
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 mars 2008 à 21:27
ça marche pas ... tu peux refaire la manip ?
0
niny@ Messages postés 107 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 16 septembre 2008
18 mars 2008 à 21:31
0
niny@ Messages postés 107 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 16 septembre 2008
18 mars 2008 à 21:33
je sais pas les liens ne sont pas actifs

bon c'est aps grave je peux te faire un résumé de code pi etre que tu trouveras mon pb non ?
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 mars 2008 à 21:34
bon ça marche pas :-s
je te donne mon mail en message privé ... tu me le passes par là ...
0