ToBee
Messages postés10Date d'inscriptionsamedi 25 mars 2006StatutMembreDernière intervention28 septembre 2012
-
27 sept. 2012 à 21:19
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
28 sept. 2012 à 12:54
Bonsoir a toutes et a tous,
Je travaille sur un code que je peaufine au fur et a mesure depuis quelques mois pour arriver au code ultime de saisie par userform. il marche déjà très très bien MAIS !
J'aimerais pouvoir différencier le traitement des Optionbutton par rapport aux CheckBox et TextBox.
Je m'explique et vous colle mon code après : je réccupère a la fin du code une colone par controle, et c'est embetant quand on a des optionsbuttons, le but est d'en retirer qu'une seule réponse.
Plutot que d'avoir en colonne OptionButton1 = vrai et optionbutton2=faux je veux que le résultat apparaisse dans une seule colonne en OptionButton1.caption.
J'espère ne pas etre trop flou... et maintenant voici le code :
Private Sub CommandButton1_Click()
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
' Améliorer les réponses en OptionButton *
' pour la suite du developpement -
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
Dim MesFrames As New Collection, MesTexts As New Collection
Dim CtrlForm As Control, CtrlFrame As Control
Dim Num As String
Dim b As Integer, i As Byte, j As Byte, Temp As Integer, Ligne As Integer
Ligne = ThisWorkbook.Worksheets("Base").Range("A65536").End(xlUp).Row + 1
'compte page
For Each Page In MultiPage1.Pages
'compte frame
For Each CtrlForm In Page.Controls
If TypeName(CtrlForm) = "Frame" Then
i = i + 1
Num = CStr(CtrlForm.TabIndex + iprime)
MesFrames.Add Item:=CtrlForm, Key:=Num
End If
'MsgBox MesFrames.Item(CStr(0)).Name
Next CtrlForm
iprime = i
Next Page
For j = 0 To i - 1
Dim FrameActive As Object
Set FrameActive = MesFrames.Item(CStr(j))
'compte textbox ou optionbutton
For Each CtrlFrame In FrameActive.Controls
If TypeName(CtrlFrame) "TextBox" Or TypeName(CtrlFrame) "CheckBox" Or TypeName(CtrlFrame) = "OptionButton" Then
Num = CStr(CtrlFrame.TabIndex + 1)
MesTexts.Add Item:=CtrlFrame, Key:=Num
End If
Next CtrlFrame
For Temp = 1 To MesTexts.Count
b = b + 1
If b < 248 Then ThisWorkbook.Worksheets("Base").Cells(Ligne, b) = MesTexts.Item(CStr(Temp)).Value
If b > 247 Then ThisWorkbook.Worksheets("Base2").Cells(Ligne, b - 247) = MesTexts.Item(CStr(Temp)).Value
Next Temp
'Del collec text
For Temp = 1 To MesTexts.Count
MesTexts.Remove 1
Next Temp
Next j
'Del Collec Frame
For Temp = 1 To MesFrames.Count
MesFrames.Remove 1
Next Temp
RAZ
End Sub
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 27 sept. 2012 à 21:29
Avant d'aller plus loin :
ce qui serait "intelligent", déjà, serait d'ouvrir tes discussions dans la section correspondant à ton langage de développement.
Non, tu ne développes pas dans :
Forum > VB.NET et VB 2005
Je ne veux par ailleurs pas commenter (je préfère m'abstenir) ce que tu as compris du rôle des optionbuttons (ton texte) et du mécanisme qui les régit).
Et confondre avec des checkboxes -le code montré) l'est encore plus
C'est inquiétant !
Je te suggère donc de :
- ouvrir une nouvelle discussion dans la section Langages dérivés > VBA
- apporter le plus grand soin à tes explications, à leur clarté et à leur "harmonie" avec le code montré.
Il n'est jamais trop tard pour réellement s'y mettre, hein !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
ToBee
Messages postés10Date d'inscriptionsamedi 25 mars 2006StatutMembreDernière intervention28 septembre 2012 27 sept. 2012 à 21:34
Ok pour le mauvais emplacement de la discussion, je n'avais pas vu.
Par contre je ne confond rien du tout, dans mon code justement je n'arrive pas a séparer la gestion des optionbutton du reste c'est pour ça qu'il est pas au top, et c'est même ce pourquoi j'ai créé le sujet...
Si tu veux aider je t'écoute volontiers mais si tu as décidé de passer tes nerfs, passe ton chemin !
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 27 sept. 2012 à 21:37
Désolé, mais je ne peux aider qu'en "osmose". Elle n'est pas présente et je suis fatigué<.
Ne t'inquiète pas : un autre prendra le relais.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 28 sept. 2012 à 10:04
Pour que tu comprennes mieux de quoi je veux parler, lorsque j'utilise certains termes, dont "osmose", je vais t'aider en te demandant de faire ce tout petit test qui, lui, n'utilise que des notions de base :
For Each c In Me.Controls
If TypeName(c.Parent) = "Page" Then
MsgBox c.Name & " est un contrôle " & TypeName(c) & " posé sur la page " & c.Parent.Name & vbCrLf
End If
Next
Cela devrait te mettre sur la voie de la sagesse... et de revoir toute ta gymnastique.
Bonne chance
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 28 sept. 2012 à 10:37
Ah oui, tu as également à recenser ce qui se trouverait dans des Frames sur tes pages ?
Alors on continue un peu plus loin le test :
For Each c In Me.Controls
If TypeName(c.Parent) = "Page" Then
MsgBox c.Name & " est un contrôle " & TypeName(c) & " posé sur la page " & c.Parent.Name
If TypeName(c) = "Frame" Then
For Each sousc In c.Controls
MsgBox "et ce Frame " & c.Name & " contient le contrôle " & TypeName(sousc) & " nommé " & sousc.Name
Next
End If
End If
Next
Si tu ne sais pas comprendre et utiliser à ta guise tout cela ... ===>> ("")
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
ToBee
Messages postés10Date d'inscriptionsamedi 25 mars 2006StatutMembreDernière intervention28 septembre 2012 28 sept. 2012 à 12:53
Bien, je connais tes deux bouts de code et il se trouve que ca ne m'aide pas.
J'ai posté sur ce forum pour avoir de l'aide pas pour me faire descendre. aide moi ou arrete de poster sur mes discutions merci.
(Vu la qualité de ton aide je préfèrerai d'ailleurs que tu arrete de poster tout simplement sur mes discutions)
Je poste pas sur un forum pour passer pour un abruti, merci.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 28 sept. 2012 à 12:54
Amen, donc
Bonne chance.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ