Sondage via userform : pb de taille

J

Juliette42

Guest
Bonjour à toutes et à tous,

dans le cadre de mes études, il m'est demandé de réaliser via excel un sondage pour pouvoir traiter les données plus facilement avec des TCD, Mise en forme conditionnelle et autres...

toutefois je rencontre un pb de taille de Userform... en effet, mon questionnaire est établi de la façon suivante:
- une partie avec des infos sur la personne sondée : 6 champs
- une partie avec des questions accompagnées de commentaires : 60 champs ( 20 x 1 question, 1 commentaires, 1 analyse)
- une partie avec uniquement des questions : 80 questions
Soit au total 126 colonnes utilisées.
oui je sais, c'est énorme!!!

Pouvez-vous jeter un coup d'oeil à mon fichier ci-joint?
Quelle solution peut-on apporter pour réaliser cela via Userform?

Bien entendu, je n'oserai pas demandé à qui que se soit de réaliser sur le userform toutes les questions sauf si qq'un à LA solution miracle qui évite de tout taper (copier-coller des éléments de la boites à outils contrôle retenus)...
merci de montrer la démarche et une partie du code éventuellement.

par avance merci de vous être penchée sur mon problème.

Juliette [file name=questionnaire_20051216160113.zip size=13136]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/questionnaire_20051216160113.zip[/file]
 

Pièces jointes

  • questionnaire_20051216160113.zip
    12.8 KB · Affichages: 69

Toutou

XLDnaute Occasionnel
Bonjour Juliette,

Je n'ai pas regardé ton fichier, mai je viens juste de finir un programme ou toutes les infos(plus d'une centaine) était gérer par un seul userform. Pour ma part j'ai utilisé un multipage, je pense que cette solution pourrait te permettre de trier tes infos selon leur type avec les différents onglets.
En éspérant que cela pourra t'inspirer,
à +
Toutou ;)
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Juliette, Toutou, le Forum

Pas vraiment sûr d'avoir compris, mais si on veut se faciliter la tache on peut faire ce genre de codes après avoir vérifier d'avoir activer la référence à 'Microsoft Forms 2.0 Object Library'


Par exemple ce code va générer tout seul un UserForm avec 40 TextBox mesurées, alignées, nommées etc, avec 40 label alignés aussi...


Option Explicit


Const Sign As String = ''Thierry 's Truc sur www.Excel-Downloads.com, March 2005'

Const TxbWidth As Integer = 65
Const TxbHeigth As Integer = 15
Const TxbLeft As Integer = 90
Const TxbTop As Integer = 15

Const LblWidth As Integer = 70
Const LblHeigth As Integer = 15
Const LblLeft As Integer = 10
Const LblTop As Integer = 15

Sub MyUserFormAutoBuilder()
Dim ObjUSF As Object
Dim ObjTextBox As Object, ObjLabel As Object, CmdB As Object, LstB As Object
Dim TopPlusHeight As Integer
Dim X As Byte
Dim VLblLeft As Integer
Dim VTxbLeft As Integer
 
 
Set ObjUSF = ThisWorkbook.VBProject.VBComponents.Add(3)
 
With ObjUSF
    .Properties('Caption') = Sign
    .Properties('Width') = 660
    .Properties('Height') = 195
    .Properties('ShowModal') =
True
 
End With
 
   
For X = 1 To 40
       
     
Set ObjTextBox = ObjUSF.Designer.Controls.Add('Forms.TextBox.1')
     
Set ObjLabel = ObjUSF.Designer.Controls.Add('Forms.Label.1')
     
         
Select Case X
           
Case 1 To 10
             
If X = 1 Then TopPlusHeight = LblTop
              VLblLeft = LblLeft
              VTxbLeft = TxbLeft
           
Case 11 To 20
             
If X = 11 Then TopPlusHeight = LblTop
              VLblLeft = LblLeft + 160
              VTxbLeft = TxbLeft + 160
           
Case 21 To 30
             
If X = 21 Then TopPlusHeight = LblTop
              VLblLeft = LblLeft + 320
              VTxbLeft = TxbLeft + 320
           
Case 31 To 40
             
If X = 31 Then TopPlusHeight = LblTop
              VLblLeft = LblLeft + 480
              VTxbLeft = TxbLeft + 480
         
End Select
             
         
         
With ObjLabel
            .Caption = 'Label TextBox ' & X
            .Left = VLblLeft: .Top = TopPlusHeight: .Width = LblWidth: .Height = LblHeigth
            .Tag = 'Thierry
's Demo'
            .Name = 'LblDemo' & X
         
End With
         
With ObjTextBox
            .Left = VTxbLeft: .Top = TopPlusHeight: .Width = TxbWidth: .Height = TxbHeigth
            .Tag = 'Thierry
's Demo'
            .Name = 'TxbDemo' & X
            .TextAlign = fmTextAlignRight
         
End With
         
        TopPlusHeight = TopPlusHeight + 15
   
Next

VBA.UserForms.Add(ObjUSF.Name).Show
 
Set ObjUSF = Nothing
Set ObjTextBox = Nothing
Set ObjLabel = Nothing
End Sub


Pour un control Multipage, le 'passage' de page se fait en précisant sa valeur :

MultiPage1.Value = 0 'Pour la première page


Bonne Soirée je dois partir là
Et Bon Week End
[ol]@+Thierry[/ol]
 
T

Toutou

Guest
Bonjour Juliette, Excel_Lent, _Thierry, le forum
pour le multipage, j'ai coder de cette manière et ça a marcher:

UserForm1.Multipage1.page1.TextBox2....etc
UserForm1.Multipage1.page2.TextBox2....etc
UserForm1.Multipage1.page3.CheckBox2....etc
UserForm1.Multipage1.page4.TextBox2....etc

Mais je pense que
UserForm1.Multipage1.TextBox2....etc
suffit

Bon courage, @ +
Toutou
 

Blunet

XLDnaute Occasionnel
J'ai peut être un exemple en piecte jointe !!!

Mais avant des remarques:

Il faut que tu regroupes les questions par thème dans une Page de ton Multipage, Concernant les Checkbox, ils sont mieux ssi lenquête peut choisir + de 1e modalité par réponse. Sinon s#il doit choisir 1e et 1e seule rep par question le contrôle onglet est mieux :
A quoi te sert 'Analyse' que tu affiches dans le userform apres 'Commentaire' ? Sil s´agit de tes analyses cést pas la peine de les faire figurer sur le userform !

Jai donc créée 1e page 'Identification' ; 2 pages questions - analyses (chaque page contient 10 questions - analyses) ; 4 pages questions (chaque page contient 20 questions)

Pour la Date, s´agit-il de la date du jour ou de celle de fin de réponse au questionnaire (ce dernier cas serait peut être mieux). Pour faire apparaître un calendrier jutilise le contrôle Microsoft Date and Time, (Contrôles supplémentaires)

Enfin, si tu dois interroger avec un tel questionnaire as-tu prévu de gérer le fait que l'enquêté soit épuisé et ne réponde pas à toutes les questions immédiatement ? le cas échéant comment récupéreras-tu toutes les questions sur 1 même fichier ou support ?
Sur ce je te laisse en espérant que ce petit exple puisse t'inspiré, mais je suis ouvert à tes questions.
 
J

Juliette42

Guest
Bonjour Toutou , @+Thierry , Excel_lent, Blunet, MichelXld et bien sûr le Forum

après qques jours d'abscence, je souhaite vous tous pour votre aide. Merci de vous être penchés sur mon cas.
chacun avec son bout de code et autres conseils techniques m'a permis de resserer le fond e mon pb.
(Blunet... je n'ai pas réussi à exploiter ta pièce jointe :( )

toutefois, si vous me permettez, je fais un clin d'oeil spécial à MichelXld... car la pièce jointe foruni répond exactement à ce que je souhaite faire.
je vais rajouter des questions à son fichier (j'en ai 140... hum rien que ça!) et le tout sera joué.

Merci encore pour le temps consacré.

Bonne fin d'année 2005 à tous.

Juliette
 

Gael

XLDnaute Barbatruc
Bonsoir Juliette, Toutou , Thierry , Excel_lent, Blunet, MichelXld,

Comme je me mets doucement au VBA, j'ai regardé les diverses solutions proposées qui m'ont appris encore un peu plus, notamment sur le multipage.

Thierry, j'ai essayé également ta macro et il faut remplacer:

.TextAlign = fmTextAlignRight

par .TextAlign = 3

pour que ça fonctionne (et ça marche très bien).

Merci pour ces exemples.

@+

Gael
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 336
Membres
103 190
dernier inscrit
silverwolf854