Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

12 réponses
Avatar
akar.serkan
Bonjour,

J'=E9cris ce message en partant du principe qu'il n'y a pas de question
stupide :) Alors =E9tant d=E9butant concernant VBA je suis vraiment
perdu.. j'ai pass=E9 2 jours complets =E0 chercher la solution sur le net
mais impossible de trouver..

Alors voil=E0 mon probl=E8me;

J'ai cr=E9=E9 un UserForm avec 24 checkboxs qui repr=E9sentent diff=E9rentes
actions de bourse. La personne qui ouvre excel voit appara=EEtre le
UserForm et doit cocher maximum 5 cases. Ensuite, en cliquant sur Ok,
les noms des actions coch=E9es doivent se placer dans les cellules F8 =E0
F12 (5 lignes) de la feuille "Optimisateur".

Donc je voulais tout d'abord savoir comment faire pour que les
s=E9lections s'affichent automatiquement dans les cellules que j'ai
pr=E9cis=E9?

Ensuite je ne sais pas comment faire =E9galement pour que 5 cases au
maximum puissent =EAtres coch=E9es.

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=E8s bien venue.

Merci d'avance!

10 réponses

1 2
Avatar
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 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!


Avatar
JB
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" wrote:
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 -



Avatar
LSteph
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!



Avatar
akar.serkan
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!
Avatar
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 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!


Avatar
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" a écrit dans le message de news:
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!


Avatar
garnote
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" a écrit dans le message de news: %
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" a écrit dans le message de news:
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!







Avatar
akar.serkan
Grâce à JB chez moi tout marche en tout cas.. Merci beaucoup!!
Avatar
akar.serkan
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!
Avatar
LSteph
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!!




1 2