Afficher valeurs selectionnées d'un formulaire sur un onglet
yanounou91
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
yanounou91 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
yanounou91 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je m'explique. Je souhaite faire un questionnaire sous la forme d'un formulaire où l'utilisateur doit repondre à toute les questions. Des valeurs de menus deroulants doivent s'afficher directement à l'ouverture de l'Userform. Ces valeurs doivent etre copiés une feuille de calcul sheets("Données").
C'est la que cele ne fonctionne pas, les valeurs ne veulent pas s'afficher.
Quand j'utilise le mode "Initialize" : ni menu deroulant ni copie des valeurs dans "Données"
Quand j'utilise le mode "Activate" : Menu déroulants présents mais aucune copie des valeurs
Quand j'utilise le monde "clic" : Menu déroulant + copie des valeurs.
Comment faire pour que les menu déroulant s'affiche directement et que la copie des valeurs se fasse ? Je ne souhaite pas le mode "click" car je crains que l'utilisateur pense que le formulaire ne fonctionne pas.
En vous remerciant.
Yannick
Voici le code :
Merci à vous.
Je m'explique. Je souhaite faire un questionnaire sous la forme d'un formulaire où l'utilisateur doit repondre à toute les questions. Des valeurs de menus deroulants doivent s'afficher directement à l'ouverture de l'Userform. Ces valeurs doivent etre copiés une feuille de calcul sheets("Données").
C'est la que cele ne fonctionne pas, les valeurs ne veulent pas s'afficher.
Quand j'utilise le mode "Initialize" : ni menu deroulant ni copie des valeurs dans "Données"
Quand j'utilise le mode "Activate" : Menu déroulants présents mais aucune copie des valeurs
Quand j'utilise le monde "clic" : Menu déroulant + copie des valeurs.
Comment faire pour que les menu déroulant s'affiche directement et que la copie des valeurs se fasse ? Je ne souhaite pas le mode "click" car je crains que l'utilisateur pense que le formulaire ne fonctionne pas.
En vous remerciant.
Yannick
Voici le code :
Option Explicit
Dim Ws As Worksheet
'pour enlever la croix rouge d'un UF
#If Win64 Then
Private Declare PtrSafe Function GetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare PtrSafe Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#Else
Private Declare Function GetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub TextBox1_Change()
End Sub
#End If
Private Sub UserForm_Initialize()
Dim hWnd As Long
hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") _
& "Frame", Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
End Sub
'Fermeture, validation du questionnaire
Private Sub CommandButton1_Click()
Unload UserForm1
End Sub
Private Sub UserForm_Activate()
ComboBox19.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox19.List() = Array("DT", "BUS", "BUE", "BUI", "BUC", "BU Autres/DIV", "Etablissement")
ComboBox5.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox5.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
ComboBox6.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox6.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
ComboBox7.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox7.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
ComboBox8.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox8.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
ComboBox13.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox13.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
ComboBox14.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox14.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
ComboBox15.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox15.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
ComboBox15.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox15.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
ComboBox16.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox16.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
ComboBox17.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox17.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
ComboBox18.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox18.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
ComboBox9.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox9.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
ComboBox10.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox10.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
ComboBox11.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox11.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
ComboBox12.ColumnCount = 1 'Pour la liste déroulante Entité
ComboBox12.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
'Sheets("Données").Range(Cells(2, 1), Cells(18, 1)) = ComboBox19.Value
Sheets("Données").Range(Cells(2, 2), Cells(18, 2)) = TextBox1.Value
Sheets("Données").Range(Cells(2, 3), Cells(18, 3)) = TextBox3.Value
Sheets("Données").Range(Cells(2, 4), Cells(18, 4)) = TextBox2.Value
Sheets("Données").Cells(2, 8) = ComboBox5.Value
Sheets("Données").Cells(3, 8) = ComboBox6.Value
Sheets("Données").Cells(4, 8) = ComboBox7.Value
Sheets("Données").Cells(5, 8) = ComboBox8.Value
Sheets("Données").Cells(6, 8) = ComboBox13.Value
Sheets("Données").Cells(7, 8) = ComboBox14.Value
Sheets("Données").Cells(8, 8) = ComboBox15.Value
Sheets("Données").Cells(9, 8) = ComboBox16.Value
Sheets("Données").Cells(10, 8) = ComboBox17.Value
Sheets("Données").Cells(11, 8) = ComboBox18.Value
Sheets("Données").Cells(12, 8) = ComboBox9.Value
Sheets("Données").Cells(13, 8) = ComboBox10.Value
Sheets("Données").Cells(14, 8) = ComboBox11.Value
Sheets("Données").Cells(15, 8) = ComboBox12.Value
Sheets("Données").Cells(16, 8) = TextBox4.Value
Sheets("Données").Cells(17, 8) = TextBox5.Value
Sheets("Données").Cells(18, 8) = TextBox6.Value
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim Ctrl As Control
'parcourt les contrôles du formulaire
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "TextBox" Then
If Ctrl.Text = "" Then
MsgBox "Veuillez renseigner tous les champs SVP"
Cancel = True
Exit Sub
End If
End If
Next Ctrl
End Sub
Private Sub UserForm_QueryClose2(Cancel As Integer, CloseMode As Integer)
End Sub
Dim Ctrl As Control
'parcour les contrôles du formulaire
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "ComboBox" Then
If Ctrl.Text = "" Then
MsgBox "Veuillez renseigner tous les champs SVP"
Cancel = True
Exit Sub
End If
End If
Next Ctrl
End Sub
Merci à vous.
A voir également:
- Afficher valeurs selectionnées d'un formulaire sur un onglet
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Rouvrir un onglet fermé - Guide
- Afficher appdata - Guide
- Formulaire de reclamation instagram - Guide
1 réponse
Ces valeurs doivent etre copiés une feuille de calcul sheets("Données").
Il manque une préposition, soit "d'", soit "vers".
Là, tu affectes à la cellule Excel la valeur du ComboBox qui est vide. Ce ne serait pas :
?
Il manque une préposition, soit "d'", soit "vers".
Sheets("Données").Cells(2, 8) = ComboBox5.Value
Là, tu affectes à la cellule Excel la valeur du ComboBox qui est vide. Ce ne serait pas :
ComboBox5.Value = Sheets("Données").Cells(2, 8)
?
Sinon j'ai testé votre proposition et VBA me renvoie également une erreur.
PS : "Il manque une préposition, soit "d'", soit "vers". " : vous voulez dire que dans le code je dois inscrire quelque chose qiu indique "vers la feuille" ?
Cordialement.
yannick
Pour le reste, UserForm_Initialize et Activate ne s'exécutent qu'au premier affichage du UserForm, il faut utiliser les macros événementielles ComboBoxX_Change pour les actions ultérieures, si tu veux que la mise à jour soit instantanée (chaque ligne est donc à sortir du module UserForm_Activate et à mettre dans une macro événementielle).
Mais en général, on n'exporte les données saisies qu'à la fin, à l'aide d'un bouton "OK" par exemple.
Sheets("Données").Activate (chose que j'avais oublié). Puis le code qui demande la copie des valeurs dans la feuille "Données". Cela fonctionne.
En revanche l'apparition directe des valeurs de menu selectionnable à l'ouverture du formulaire ne fonctionne ni en Userform_activate ni Uniform_Initiliaze ... suis je condamné au Userform_Click qui lui fonctionne et affiche les valeurs de menu ? J'ai peur que l'utilisateur pense que le formulaire ne fonctionne pas s'il ne voit pas s'afficher les valeurs de menu deroulant.
Cordialement.
Yannick
Tu peux envoyer ton fichier sur https://www.cjoint.com/ pour qu'on vérifie.
A+
Cordialement.
Ynnick