Control dans Userforme
Bonsoir à tous,
J'ai créer un userform avec différents contrôles 35 environs et sur Texbox "appelé commentaires" dont le controlsource et :données!em5 je n'arrive pas à retrouver mon commentaire dans cette cellule.Ai-je fais un oubli dans la fenêtre des propriétés?
Merci de votre aide
Cordialement
Gérard
Qu'est-ce que tu cherches à faire au juste, clairement.
Bonsoir Math, bonsoir le Forum,
Je récupére des questionnaires de satisfaction papier avec le nom,des dates,et diverses questions tout au cour de la saison. Avec cet Userform je renseigne une base de donnée .Dans ce questionnaire il y a une zone réservé aux suggestions, et donc dans l'userform j'ai créer un texbox pour taper ces suggestions et je souhaiterais les retrouver dans la feuil. "données ".Toutes les autres commandes(optionbouton) fonctionnent et remplissent bien mes cellules de destination dans ma feuille sauf le texte du texbox .Il y a t-il un oubli de ma part dans la fen^tre des propriétés ou dans la Commande si dessous
'COMMENTAIRES
Sheets("données").Range("em5").Value = Text
Merci bonne soirée
Gérard
A quoi fait référence "TEXT" dans ton exemple? Si c'est une variable contenant le texte à copier dans la cellule, ça va. Tu peux toujours vérifier si la variable contient du texte.
Tu peux aussi écrire
Sheets("données").Range("em5").Value = NomDuTextBox.Text
si ça ne fonctionne pas post nous ton code ou un fichier
Bonsoir Math,le forum,
Je te joint le fichier,la commande ne fonctionne pas
d'avance merci
Cordialement
Gérard
Bonjour,
-Pour la note qui ne s'écrivait pas en EM5, change
Sheets("données").Range("em5").Value = Text
pour
Sheets("données").Range("em5").Value = Commentaires.Text
-Pour simplifier le code, tu n'es pas obligé de faire des If pour chaques OptionButton, car tu gardes toutes les possibilité de réponses de toutes façon. Alors tu pourrais faire:
'PISCINES
Sheets("données").Range("i5").Value = CInt(Piscines_TS.Value) * -1
Sheets("données").Range("j5").Value = CInt(Piscines_S.Value) * -1
Sheets("données").Range("k5").Value = CInt(Piscines_PS.Value) * -1
Sheets("données").Range("l5").Value = CInt(Piscines_D.Value) * -1
Sheets("données").Range("m5").Value = CInt(Piscines_NR.Value) * -1
La valeur des OptionButton est vrai ou faux. Je la convertis en nombre avec CInt( ... ) , ça me donne -1 pour vrai et 0 pour faux. Ensuite on multiplie par -1 pour avoir 1 pour vrai et encore 0 pour faux.
-Si tu veux qu'un groupe d'option se coche NR automatiquement,
Private Sub Infrastructure_Non_Click()
Piscines_NR.Value = True
Tennis_NR.Value = True
R_Forme_NR.Value = True
Terrains_Sports_NR.Value = True
Mini_Golf_NR.Value = True
Practice_Golf_NR.Value = True
Salle_TV_NR.Value = True
End Sub
un exemple quand tu cliques sur Infrastructure_Non.
- Au lieu de tout remettre les controles à vide un à un, tu peu faire:
Dim c As Control
For Each c In Me.Controls
Select Case TypeName(c)
Case "TextBox"
c.Value = ""
Case "OptionButton"
c.Value = False
End Select
Next c
C'est une boucle qui prend les controles un à un. Si c'est de type Textbox, le controle est égale à "" et si c'est un optionbutton, c'est égale à false
Si tu as d'autres questions hésite pas
Bonsoir Math, le forum
Pour le coup tu me donne du travail, merci pour ton analyse rapide,je suis sur les modifs
Une autre question: lors de la saisi dans case "Organisme" de l'userform peut-on renseigner la feuille organisme et toujours avoir la liste déroulante.
cordialement
-- 19 Aoû 2010, 21:51 --
re bonsoir Math,
J'ai quelques problèmes avec deux de tes contrôles ils restent en rouge erreur de compilation?
Private Sub Infrastructure_Non_Click()
Piscines_NR.Value = True
Tennis_NR.Value = True
R_Forme_NR.Value = True
Terrains_Sports_NR.Value = True
Mini_Golf_NR.Value = True
Practice_Golf_NR.Value = True
Salle_TV_NR.Value = True
End Sub
'Remise à zéro des Saisies
Dim c As Control
For Each c In Me.Controls
Select Case TypeName(c)
Case "TextBox"
c.Value = ""
Case "OptionButton"
c.Value = False
End Select
Next c
Dois-je modifiè quelques choses ?
Merci bonne soirée
Gérard
Bonjour,
je m'incruste dans ce fil pour ton erreur en rouge.
Enlève les espaces (ou retrait) devant toutes les instructions de ton code.
Lorsque tu postes un code, n'oublie pas d'utiliser les balises en sélectionnant ton code puis en cliquant sur le bouton "code" dans la barre d'outils.
Amicalement
Bonjour Dan, le Forum,
Merci pour ta prise de main sur le post, et mes excuses pour l'envoi du code.
Je ne saisi pas quand aux espaces ou retrait, j'ai essayer mes rien y fait "erreur de compilation Attendu: fin d'instruction".
Je ne fais que copier le code et le colle sur la feuille de code.
Merci bonne journée
Gérard
je m'excuse, je t'ai envoyé les codes sans t'expliquer où les mettres.
la première partie
Private Sub Infrastructure_Non_Click()
Piscines_NR.Value = True
Tennis_NR.Value = True
R_Forme_NR.Value = True
Terrains_Sports_NR.Value = True
Mini_Golf_NR.Value = True
Practice_Golf_NR.Value = True
Salle_TV_NR.Value = True
End Sub
est une procédure qui ce déclenche quand on clique sur l'Option Infrastructure_Non. Copie le code à la toute fin.
L'autre code est à intégré dans ta procédure Valider_Click pour remplacer la section où tu remets tout à zéro
Nom_Prénom.Value = ""
Organismes.Value = ""
Date_Début.Value = ""
Date_fin.Value = ""
Infrastructure_Oui.Value = 0
Infrastructure_Non.Value = 0
Infrastructure_NR.Value = 0
Piscines_TS.Value = 0
Piscines_S.Value = 0
Piscines_PS.Value = 0
Piscines_D.Value = 0
Piscines_NR.Value = 0
etc ...
pour ta question sur la case Organisme, est-ce que tu veux que quand on inscrit quelque chose dans cette case et qu'on clique sur Valider, la valeur vienne s'écrire dans dans feuille organisme?
re,
Je voulais dire d'enlever les espaces dans le code pour avoir ceci :
Private Sub Infrastructure_Non_Click()
Piscines_NR.Value = True
Tennis_NR.Value = True
R_Forme_NR.Value = True
Terrains_Sports_NR.Value = True
Mini_Golf_NR.Value = True
Practice_Golf_NR.Value = True
Salle_TV_NR.Value = True
End Sub
Tu comprends ?
Bonjour Math, Dan,le forum,
Super avec tes explications,
Oui sur la question des Organismes , au fil du temps cela creera une base de donnée. Mais pourra t-on éviter les doublons ? si non on laisse comme çà
Merci bonne soirée
Gérard
voici une petite procédure pour ajouter sans doublons des organismes:
'La procedure sert à ajouter un organisme en évitant les doublons.
Private Sub AjoutOrganisme()
'Avec la feuille Organisme
With Sheets("organisme")
'On utilise la fonction find pour trouver l'occurence de la valeur
'du combobox organisme.
Set c = .Range("A:A").Find(Organismes.Text, LookIn:=xlValues)
'Si on ne trouve rien, C sera égale à Nothing,
'donc il faut l'ajouter dans la liste
If c Is Nothing Then
'Détermine la ligne où ajouter la nouvelle entrée
Dim DerLign As Integer
DerLign = .Range("A65536").End(xlUp).Row + 1
'Ajoute l'information
.Range("A" & DerLign).Value = Organismes.Text
'Rafraichis le combobox Organismes
Organismes.RowSource = "organisme!" & .Range("A2:A" & DerLign).Address
End If
End With
End Sub
je te retourne ton fichier, j'ai pris la liberté de l'alléger un peu
Bonsoir Math, le Forum,
jai fais une réponse plustôt dans la soirée, je ne la retrouve pas bref....
donc pour ta question oui, de façon à créer au fil du temps une base de donnée, mais pourra t-on geré les doublons ? si non on laisse comme çà.
J'ai tout modifié et nickel, encore merci
bonne soirée
Gérard
-- 20 Aoû 2010, 22:01 --
Bonsoir Math,
Nos post se sont croisés, alors chapeau merci pour tout, je reprend la suite avec tes nouveaux codes pour finir, je ferme pas ce fil pour le moment le temps de boucler.
Encore merci super ton boulot
Bonne soirée
Gérard
-- 21 Aoû 2010, 08:11 --
Bonjour Math, le forum,
Bien voilà nickel, merci pour se super boulot
Bonne journée
Gérard