Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Suite de la construction d'un formulaire

Jean-Yves23

XLDnaute Nouveau
Bonjour,

Dans le cadre de mon travail, je construis un formulaire d'évaluation pour évaluer la réussite ou non des objectifs d'un service.

J'ai construis le visuel du formulaire mais je n'ai aucune idée du code VBA qui doit être écrit derrière, pour connecter le formulaire à la feuille Excel qui fait office de base de donnée.

Voici le lien vers le fichier : http://cjoint.com/?gjtW3chkl2

Plus en détails, voici les points sur lesquels je cale :

1) Créer une liste déroulante dont les données viennent d'une feuille Excel; Dans le fichier test, il s'agirait d'utiliser la combobox1 pour sélectionner un des éléments de la liste dans la feuille "T_Listedéroulante"

2) Comment "coder les cases Vrai/faux que j'ai inséré pour qu'elles retournent une valeur 1 si vrai, 2 si faux.

3) J'aimerais limiter la saisie à un format date. Par exemple, pour la Textbox 24 (5° paragraphe, 1°sous-paragraphe, label 7).

4) Plutôt que d'écrire le contenu des "labels", j'aimerais pouvoir aller le rechercher dans une liste. par exemple, pour le label 1, j'aimerais rechercher dans la feuille "T_objectifs" l'objectif n°24 et écrire dans le label "Objectif 1". En consultant les posts du forum, je me suis demandé si une des solutions ne serait pas de renommer le "label 1" en qqch comme "labelO24C2". Mais je n'ai pas la moindre idée de comment faire ça en VBA.

5) Enfin, j'aimerais Exporter les données du formulaire dans une feuille tampon "T_résultats". De nouveau, je pensais utiliser le nom de l'objet pour lui préciser la cellule de destination. Par exemple, TextBox1 deviendrais TextBoxO1R2C4 (O1 = objectif 1, R2C4 pour préciser la destination).

Il est bien entendu que je ne demande pas de réaliser l'ensemble du formulaire. Toute réponse ou suggestion même partielle est la bienvenue.

Merci d'avance à ceux qui ont pris le temps de me lire jusqu'ici.
 

Pierrot93

XLDnaute Barbatruc
Re : Suite de la construction d'un formulaire

Bonsoir Jean-Yves

pourquoi ne pas créer un 2ème module de classe pour les "optionButton", ou transformer celui-ci pour les boutons... Tu as besoin de gérer les 2 événements (click sur frame et click sur bouton) ?

bonne soirée
@+
 

Jean-Yves23

XLDnaute Nouveau
Re : Suite de la construction d'un formulaire

Bonjour Pierrot,

Merci pour ta réponse rapide et en effet je n'ai pas besoin de gérer les deux événements séparemment. Donc un deuxième module de classe peut convenir, avec exactement le même code que dans MaFrameVF_click (). Cependant, je dois copier le "caption" de l'optionbutton dans la textbox de la même frame. Actuellement, j'utilise la variable locale "valeur" et j'avoue que je ne vois pas trop comment m'en passer. En d'autres mots, dans le module de classe pour l'optionbutton, comment pourrais-je trouver la textbox du même frame? Ou encore autrement, comment pourrais-je trouver la frame qui contient l'optionbutton?

Bat,
Jean-Yves
 

Pierrot93

XLDnaute Barbatruc
Re : Suite de la construction d'un formulaire

Re

sans doute en testant la propriété "parent" des controles, elle sera identique :

Code:
If TextBox1.Parent.Name = OptionButton1.Parent.Name Then MsgBox "même frame"

bonne soirée
@+
 

Jean-Yves23

XLDnaute Nouveau
Re : Suite de la construction d'un formulaire

Bonjour Pierrot, bonjour le forum

La fonction parent fonctionne nickel et j'ai reconstruit un module de classe selon tes conseils. Ça fonctionne tip-top.

Merci encore!
 

Jean-Yves23

XLDnaute Nouveau
Re : Suite de la construction d'un formulaire

Bonjour,

Et oui encore des difficultés mais je commence à voir le bout du tunnel.
Actuellement, je tente d'affecter une valeur à un objet "DTPicker".

J'ai donc une boucle avec qqch comme ceci :

Code:
If Typeof ctrl is DTPicker

ctrl.value = Date

Endif

et ca renvoie une belle petite erreur du style "L'erreur # 35788 a été générée par DTPicker. Une erreur est survenue lors de l'appel au controle Windows Date and Time".

Faudrait-il appliquer un format spécifique à "Date"? Autre idée?

A+ et merci
Jean-Yves
 

Pierrot93

XLDnaute Barbatruc
Re : Suite de la construction d'un formulaire

Bonjour Jean-Yves

regarde le code ci-dessous, fonctionne chez moi sous Excel2003 :

Code:
Dim Ctrl As Control
For Each Ctrl In Me.Controls
    If TypeName(Ctrl) = "DTPicker" Then Ctrl.Value = Date
Next Ctrl

bon après midi
@+
 

Jean-Yves23

XLDnaute Nouveau
Re : Suite de la construction d'un formulaire

Bonjour,

Et oui encore un petit souçi!.
cette fois-ci, j'ai une fonction comme ci-dessous :

Code:
Function Mémoriser (ByRef usf as UserForm)

Sheets("Blabla"). Cells(i,j).value = usf.Name

End Function

i et j sont déclaré comme entiers et correctement initialisés (vérifié avec le debuggeur). Dans UserForm_QueryClose, je fais appel à cette fonction de la façon suivant :

Code:
Call Mémoriser (UserForm1)

Malgré tout cela, un message d'erreur apparait disant "Propriété ou méthode non gérée par cet objet". J'imagine donc que la propriété "Name" n'est pas gérée par l'objet "usf". La question est donc : Comment dois-je écrire ma fonction pour que je puisse l'appliquer à UserForm1, UserForm2, etc? Je pensais que passer le formulaire par référence à la fonction était une bonne idée mais visiblement ca ne l'est pas tant... :-(

A+ et merci
Jean-Yves
 

Jean-Yves23

XLDnaute Nouveau
Re : Suite de la construction d'un formulaire

Bonjour,

C'est presque devenu une habitude, voici mon post journalier lié à la construction de mon formulaire. Aujourd'hui, le problème est le suivant : j'utilise "Find" pour rechercher, dans une plage de cellules, un mot de passe correspondant à la saisie. Concrètement, j'ai écrit ceci :

Code:
Dim c as Range

Set c = Sheets("blabla").Range("MotDePasse").Find(what:=mdp,Lookin:=xlValues)

Avec :
MotDePasse = une plage nommée contenant les mots de passe pour chaque utilisateur.
mdp est une variable public contenant la saisie de l'utilisateur.

Cela fonctionne très bien en temps normal. Ou est le problème alors me direz-vous?

Et bien, pour éviter que des petits curieux ne puissent regarder mes mots de passe, j'ai appliqué à mes cellules (sans utiliser de code VBA, juste via clic-droit, Format de cellule) un format type :

Code:
"****";"****";"****";"****"

Et à partir de ce moment là "Find" ne trouve plus rien du tout et la variable "C" reste désespérément = Nothing.

J'avoue que je ne comprends pas trop ce phénomène. Je précise bien que "Find" doit chercher dans "xlValues" donc les valeurs, donc le format ne doit pas interférer normalement.

Des idées?

Merci
Jean-Yves
 

Pierrot93

XLDnaute Barbatruc
Re : Suite de la construction d'un formulaire

Bonjour Pierre-Yves

essayes ainsi :

Code:
Dim c as Range
Set c = Sheets("blabla").Range("MotDePasse").Find(what:=mdp,Lookin:=[B][COLOR="Red"]xlFormulas[/COLOR][/B])

bon après midi
@+
 

Discussions similaires

Réponses
17
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…