Afficher dans des cellules précises le résultat d'un UserForm

Le
akar.serkan
Bonjour,

J'écris ce message en partant du principe qu'il n'y a pas de question
stupide :) Alors étant débutant concernant VBA je suis vraiment
perdu.. j'ai passé 2 jours complets à chercher la solution sur le net
mais impossible de trouver..

Alors voilà mon problème;

J'ai créé un UserForm avec 24 checkboxs qui représentent différentes
actions de bourse. La personne qui ouvre excel voit apparaître le
UserForm et doit cocher maximum 5 cases. Ensuite, en cliquant sur Ok,
les noms des actions cochées doivent se placer dans les cellules F8 à
F12 (5 lignes) de la feuille "Optimisateur".

Donc je voulais tout d'abord savoir comment faire pour que les
sélections s'affichent automatiquement dans les cellules que j'ai
précisé?

Ensuite je ne sais pas comment faire également pour que 5 cases au
maximum puissent êtres cochées.

Et pour finir je ne comprends pas pourquoi mon UserForm ne se retrouve
pas dans la liste des macros lorsque je fais "Outils/Macros". Car je
voudrais ajouter un bouton sur la feuille "Optimisateur" pour que
l'utilisateur puisse relancer l'analyse.

Comme vous pouvez le voir je suis absolument perdu. Je dois rendre mon
travail la semaine prochaine, une aide serait la très bien venue.

Merci d'avance!
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #4248961
Bonsoir,

Transfert en F8:F12:

Private Sub b_ok_Click()
ligne = 8
For i = 1 To 8
If Me("checkbox" & i) Then
Cells(ligne, 6) = Me("checkbox" & i).Caption
ligne = ligne + 1
End If
Next i
End Sub

La suite demain

JB

On 15 mar, 23:19, wrote:
Bonjour,

J'écris ce message en partant du principe qu'il n'y a pas de question
stupide :) Alors étant débutant concernant VBA je suis vraiment
perdu.. j'ai passé 2 jours complets à chercher la solution sur le net
mais impossible de trouver..

Alors voilà mon problème;

J'ai créé un UserForm avec 24 checkboxs qui représentent différen tes
actions de bourse. La personne qui ouvre excel voit apparaître le
UserForm et doit cocher maximum 5 cases. Ensuite, en cliquant sur Ok,
les noms des actions cochées doivent se placer dans les cellules F8 à
F12 (5 lignes) de la feuille "Optimisateur".

Donc je voulais tout d'abord savoir comment faire pour que les
sélections s'affichent automatiquement dans les cellules que j'ai
précisé?

Ensuite je ne sais pas comment faire également pour que 5 cases au
maximum puissent êtres cochées.

Et pour finir je ne comprends pas pourquoi mon UserForm ne se retrouve
pas dans la liste des macros lorsque je fais "Outils/Macros". Car je
voudrais ajouter un bouton sur la feuille "Optimisateur" pour que
l'utilisateur puisse relancer l'analyse.

Comme vous pouvez le voir je suis absolument perdu. Je dois rendre mon
travail la semaine prochaine, une aide serait la très bien venue.

Merci d'avance!


JB
Le #4248941
http://cjoint.com/?dqajs8aryd

Dim Chk(1 To 24) As New ClasseSaisie
Private Sub UserForm_Initialize()
For b = 1 To 24: Set Chk(b).GrSaisie = Me("Checkbox" & b): Next b
End Sub
Private Sub b_ok_Click()
ligne = 8
For i = 1 To 24
If Me("checkbox" & i) Then
Cells(ligne, 6) = Me("checkbox" & i).Caption
ligne = ligne + 1
End If
Next i
End Sub

Module de classe:

Public WithEvents GrSaisie As MSForms.CheckBox
Private Sub GrSaisie_Change()
n = 0
For i = 1 To 24
If UserForm1("Checkbox" & i) Then
n = n + 1
End If
Next i
If n > 5 Then UserForm1(GrSaisie.Name) = False
End Sub


JB

On 15 mar, 23:37, "JB"
Bonsoir,

Transfert en F8:F12:

Private Sub b_ok_Click()
ligne = 8
For i = 1 To 8
If Me("checkbox" & i) Then
Cells(ligne, 6) = Me("checkbox" & i).Caption
ligne = ligne + 1
End If
Next i
End Sub

La suite demain

JB

On 15 mar, 23:19, wrote:



Bonjour,

J'écris ce message en partant du principe qu'il n'y a pas de question
stupide :) Alors étant débutant concernant VBA je suis vraiment
perdu.. j'ai passé 2 jours complets à chercher la solution sur le n et
mais impossible de trouver..

Alors voilà mon problème;

J'ai créé un UserForm avec 24 checkboxs qui représentent différ entes
actions de bourse. La personne qui ouvre excel voit apparaître le
UserForm et doit cocher maximum 5 cases. Ensuite, en cliquant sur Ok,
les noms des actions cochées doivent se placer dans les cellules F8 à
F12 (5 lignes) de la feuille "Optimisateur".

Donc je voulais tout d'abord savoir comment faire pour que les
sélections s'affichent automatiquement dans les cellules que j'ai
précisé?

Ensuite je ne sais pas comment faire également pour que 5 cases au
maximum puissent êtres cochées.

Et pour finir je ne comprends pas pourquoi mon UserForm ne se retrouve
pas dans la liste des macros lorsque je fais "Outils/Macros". Car je
voudrais ajouter un bouton sur la feuille "Optimisateur" pour que
l'utilisateur puisse relancer l'analyse.

Comme vous pouvez le voir je suis absolument perdu. Je dois rendre mon
travail la semaine prochaine, une aide serait la très bien venue.

Merci d'avance!- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



LSteph
Le #4248921
Bonjour,

Pas vraiment pour débutant amha:

http://cjoint.com/?dqaVT7tTlD

Dans la feuille A2:A25 les 24 noms d'action.
Dans VBE
Menu insertion
Un module de classe
Affichage fenêtre des propriétés
le nommer myChb
Un userform avec les 24 checkbox et 2 CommandButtons (Ok,Fermer)
Un module standard


''*****dans code Feuil1**
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
UserForm1.Show
End Sub




'****dans module de classe myChb****
Option Explicit

Public WithEvents mychbx As MSForms.CheckBox



Private Sub MyChBx_Click()


If comptCheck() >= 5 Then
verrouille
Else
deverrouille
End If


End Sub

'''''***dans module1****
Public Function comptCheck()
Dim elt As Control
comptCheck = 0
For Each elt In UserForm1.Controls
If TypeName(elt) = "CheckBox" Then
If elt.Value Then comptCheck = comptCheck + 1
End If
Next
End Function
Public Sub verrouille()
Dim elt As Control
For Each elt In UserForm1.Controls
If TypeName(elt) = "CheckBox" Then
elt.Enabled = elt.Value
End If

Next
End Sub
Public Sub deverrouille()
Dim elt As Control
For Each elt In UserForm1.Controls
If TypeName(elt) = "CheckBox" Then
elt.Enabled = True
End If
Next
End Sub

'''''****dans le code de userform1****
Option Explicit
Private meschbx() As New myChb


Private Sub UserForm_Initialize()


Dim elt As Control, i&
For Each elt In Me.Controls
If TypeName(elt) = "CheckBox" Then
ReDim Preserve meschbx(0 To i)
Set meschbx(i).mychbx = elt
i = i + 1
End If
Next elt
For i = 1 To 24
Me.Controls("CheckBox" & i).Caption = CStr(Feuil1.Cells(i + 1, 1))
Next

End Sub

Private Sub UserForm_Terminate()
Dim i&
For i = 0& To UBound(meschbx)
Set meschbx(i) = Nothing
Next i
End Sub
Private Sub Ok_Click()
Dim i&, ctl As Control
With Feuil1.[f8:f12]
.Clear
For Each ctl In Me.Controls
If TypeName(ctl) = "CheckBox" And ctl Then
i = i + 1
.Cells(i) = ctl.Caption
End If
Next ctl
End With
Unload Me
End Sub



Private Sub Fermer_Click()
Unload Me
End Sub

'Cdlt

'lSteph

Bonjour,

J'écris ce message en partant du principe qu'il n'y a pas de question
stupide :) Alors étant débutant concernant VBA je suis vraiment
perdu.. j'ai passé 2 jours complets à chercher la solution sur le net
mais impossible de trouver..

Alors voilà mon problème;

J'ai créé un UserForm avec 24 checkboxs qui représentent différentes
actions de bourse. La personne qui ouvre excel voit apparaître le
UserForm et doit cocher maximum 5 cases. Ensuite, en cliquant sur Ok,
les noms des actions cochées doivent se placer dans les cellules F8 à
F12 (5 lignes) de la feuille "Optimisateur".

Donc je voulais tout d'abord savoir comment faire pour que les
sélections s'affichent automatiquement dans les cellules que j'ai
précisé?

Ensuite je ne sais pas comment faire également pour que 5 cases au
maximum puissent êtres cochées.

Et pour finir je ne comprends pas pourquoi mon UserForm ne se retrouve
pas dans la liste des macros lorsque je fais "Outils/Macros". Car je
voudrais ajouter un bouton sur la feuille "Optimisateur" pour que
l'utilisateur puisse relancer l'analyse.

Comme vous pouvez le voir je suis absolument perdu. Je dois rendre mon
travail la semaine prochaine, une aide serait la très bien venue.

Merci d'avance!



akar.serkan
Le #4248891
Merci beaucoup!! Déjà pour la rapidité de la réponse et surtout pour
la qualité !

Les actions cochées s'affichent comme prévu dès la cellule F8. Mais
malheureusement si j'en sélectionne plus ça marche quand même..

Je recopie ce que j'ai dans mon module de classe :

Public WithEvents GrSaisie As MSForms.CheckBox
Private Sub GrSaisie_Change()
n = 0
For i = 1 To 24
If Selection_titres("Checkbox" & i) Then
n = n + 1
End If
Next i
If n > 5 Then Selection_titres(GrSaisie.Name) = False
End Sub


Mon UserForm s'intitule "Selection_titres" et il y a 24 Checkbox.
Aurais-je fais une erreur?

En tout cas encore merci pour l'aide!
JB
Le #4248821
Bonjour,

Le module de classe a t-il bien été nommé ClasseSaisie?

http://cjoint.com/?dqhQuMQstw

JB

On 16 mar, 01:36, wrote:
Merci beaucoup!! Déjà pour la rapidité de la réponse et surtout p our
la qualité !

Les actions cochées s'affichent comme prévu dès la cellule F8. Mais
malheureusement si j'en sélectionne plus ça marche quand même..

Je recopie ce que j'ai dans mon module de classe :

Public WithEvents GrSaisie As MSForms.CheckBox
Private Sub GrSaisie_Change()
n = 0
For i = 1 To 24
If Selection_titres("Checkbox" & i) Then
n = n + 1
End If
Next i
If n > 5 Then Selection_titres(GrSaisie.Name) = False
End Sub

Mon UserForm s'intitule "Selection_titres" et il y a 24 Checkbox.
Aurais-je fais une erreur?

En tout cas encore merci pour l'aide!


garnote
Le #4248411
Salut JB et LSteph,

Des macros de haut-vol que vous nous faites là. Wow !
J'ai essayé celles de JB et ça bloque sur Cells(ligne,6) :
La méthode 'Cells' de l'objet '_Global' a échoué.

Pourquoi ?

Serge


"JB" Bonjour,

Le module de classe a t-il bien été nommé ClasseSaisie?

http://cjoint.com/?dqhQuMQstw

JB

On 16 mar, 01:36, wrote:
Merci beaucoup!! Déjà pour la rapidité de la réponse et surtout pour
la qualité !

Les actions cochées s'affichent comme prévu dès la cellule F8. Mais
malheureusement si j'en sélectionne plus ça marche quand même..

Je recopie ce que j'ai dans mon module de classe :

Public WithEvents GrSaisie As MSForms.CheckBox
Private Sub GrSaisie_Change()
n = 0
For i = 1 To 24
If Selection_titres("Checkbox" & i) Then
n = n + 1
End If
Next i
If n > 5 Then Selection_titres(GrSaisie.Name) = False
End Sub

Mon UserForm s'intitule "Selection_titres" et il y a 24 Checkbox.
Aurais-je fais une erreur?

En tout cas encore merci pour l'aide!


garnote
Le #4246251
Ha ben ça alors, une fois le document de JB
enregistré sur mon bureau, tout est OK.
Erreur sur Cjoint et pas erreur sur Bureau !

Serge


"garnote"
Salut JB et LSteph,

Des macros de haut-vol que vous nous faites là. Wow !
J'ai essayé celles de JB et ça bloque sur Cells(ligne,6) :
La méthode 'Cells' de l'objet '_Global' a échoué.

Pourquoi ?

Serge


"JB" Bonjour,

Le module de classe a t-il bien été nommé ClasseSaisie?

http://cjoint.com/?dqhQuMQstw

JB

On 16 mar, 01:36, wrote:
Merci beaucoup!! Déjà pour la rapidité de la réponse et surtout pour
la qualité !

Les actions cochées s'affichent comme prévu dès la cellule F8. Mais
malheureusement si j'en sélectionne plus ça marche quand même..

Je recopie ce que j'ai dans mon module de classe :

Public WithEvents GrSaisie As MSForms.CheckBox
Private Sub GrSaisie_Change()
n = 0
For i = 1 To 24
If Selection_titres("Checkbox" & i) Then
n = n + 1
End If
Next i
If n > 5 Then Selection_titres(GrSaisie.Name) = False
End Sub

Mon UserForm s'intitule "Selection_titres" et il y a 24 Checkbox.
Aurais-je fais une erreur?

En tout cas encore merci pour l'aide!







akar.serkan
Le #4246091
Grâce à JB chez moi tout marche en tout cas.. Merci beaucoup!!
akar.serkan
Le #4245571
Tout de même j'aurais une petite question..

J'ai pu faire en sorte que le UserForm se bloque lorsque 5 cases sont
cochées mais je n'arrive pas à bloquer le bouton OK lorsqu'aucune
action n'est sélectionnée.

J'ai voulu ajouter

If n = 0 Then
Bouton_OK.Enabled = False
End If

Tout ceci dans le but de demander qu'au moins une action soit
sélectionnée. Je voudrais aussi qu'on ne puisse pas fermer le UserForm
avec la croix rouge qui est dans le coin en haut à droite sans que les
actions soient choisies.

Merci d'avance!
LSteph
Le #4245561
Bonsoir,

Salut JB et LSteph,

Des macros de haut-vol que vous nous faites là. Wow !



Merci de ton appréciation Serge, cela fait plaisir ... ;o)

Grâce à JB chez moi tout marche en tout cas.. Merci beaucoup!!




Publicité
Poster une réponse
Anonyme