OVH Cloud OVH Cloud

Frame et checkbox (bis)

2 réponses
Avatar
Nicolas
Merci =E0 Denis pour sa contribution mais je rencontre un=20
nouveau probl=E8me :

Je cr=E9=E9 une bo=EEte de dialogue avec une frame contenant des
checkboxs correspondant =E0 certaines feuilles d'un classeur
susceptibles d'=EAtre imprim=E9es;la pas de probl=E8me :

Private Sub UserForm_Initialize()
Dim monTabFeuill
Dim maFeuil As Worksheet
Dim mesfeuill, i%
mesfeuill =3D Application.Sheets.Count
ReDim monTabFeuill(mesfeuill)
For i =3D LBound(monTabFeuill) To UBound(monTabFeuill)
Set maFeuil =3D ActiveWorkbook.Worksheets(i)
monTabFeuill(i) =3D maFeuil.Name
Next i
Application.ScreenUpdating =3D False
Dim chkPage As Control 'chk correspond aux checkbox
qui vont etre cr=E9=E9s
Dim valtop As Integer 'valtop correspond a la hauteur
initiale de la 1ere checbox creee
Dim tailleSBR As Integer

'creation du nb de checkbox correspondant aux nb de
rayons
valtop =3D -10
tailleSBR =3D 10
For i =3D LBound(monTabFeuill) To UBound(monTabFeuill)
If monTabFeuill(i) <> "BG SISCO" _
And monTabFeuill(i) <> "BG PDV" _
And monTabFeuill(i) <> "Dbase RMS" _
And monTabFeuill(i) <> "Dbase Marges & CA" Then
Set chkPage =3D fmImprTous.Controls.Add
("Forms.CheckBox.1")
With chkPage
.Left =3D 6
.Top =3D valtop + 13
.Width =3D 140
.Height =3D 16
.Caption =3D monTabFeuill(i)
End With
valtop =3D chkPage.Top
tailleSBR =3D tailleSBR + 13
End If
Next i

' 'definition de la taille de la scrollbar de F_rayons

If tailleSBR <=3D fmImprTous.Height Then
fmImprTous.KeepScrollBarsVisible =3D fmScrollBarsNone
Else
fmImprTous.KeepScrollBarsVisible =3D
fmScrollBarsVertical
fmImprTous.ScrollBars =3D fmScrollBarsVertical
fmImprTous.ScrollHeight =3D tailleSBR
End If

End Sub

Lorsque je s=E9lectionne ces feuilles pour =EAtre imprim=E9es en
les placant dans un tableau je re=E7ois un message d'erreur=20
d'ex=E9cution : "argument non valide"! alors que la=20
propri=E9t=E9 pour cocher une checkbox est "value" =3D true ou=20
false????

Private Sub btnImprimer_Click()
Dim i%, x%, Arr()
=20
'Impression des choix de la plaquette : selection des pages
x =3D fmImprTous.Controls.Count
ReDim Arr(1 To x)
For i =3D 1 To fmImprTous.Controls.Count
If fmImprTous.Controls(i).Value =3D True Then=20
'erreur d'exc=E9cution : argument non valide ! : la check=20
est pourtant coch=E9e
Arr(x) =3D fmImprTous.Controls(i).Caption
End If
Next i
Me.Hide
Sheets(Arr).Select
ActiveWindow.SelectedSheets.PrintPreview
=20
End Sub
Que c'est dur l'apprentissage !
Merci pour le secours

2 réponses

Avatar
Denis Michon
Bonjour Nicolas,

Attention : fmImprTous.Controls.Count

Est-ce que tu as seulement des Checkbox dans ta feuille ?

Le Frame fait aussi parti de la collection "Controls" mais il n'a pas la propriété "Value" que possède le Checkbox. Dans ta
boucle, lorsque tu testes cette propriété pour le "Frame" une erreur est générée puisque la proprité n'existe pas . Une
correction possible

For i = 1 To fmImprTous.Controls.Count
If fmImprTous.Controls(i).Value = True Then
if If fmImprTous.Controls(i).Name <> "NomDuFrame" then
Arr(x) = fmImprTous.Controls(i).Caption
end if
End If
Next i

Ceci sous réserves de bien comprendre les noms de tes objets.


Salutations!


"Nicolas" a écrit dans le message de news:0e3e01c3be69$92482130$
Merci à Denis pour sa contribution mais je rencontre un
nouveau problème :

Je créé une boîte de dialogue avec une frame contenant des
checkboxs correspondant à certaines feuilles d'un classeur
susceptibles d'être imprimées;la pas de problème :

Private Sub UserForm_Initialize()
Dim monTabFeuill
Dim maFeuil As Worksheet
Dim mesfeuill, i%
mesfeuill = Application.Sheets.Count
ReDim monTabFeuill(mesfeuill)
For i = LBound(monTabFeuill) To UBound(monTabFeuill)
Set maFeuil = ActiveWorkbook.Worksheets(i)
monTabFeuill(i) = maFeuil.Name
Next i
Application.ScreenUpdating = False
Dim chkPage As Control 'chk correspond aux checkbox
qui vont etre créés
Dim valtop As Integer 'valtop correspond a la hauteur
initiale de la 1ere checbox creee
Dim tailleSBR As Integer

'creation du nb de checkbox correspondant aux nb de
rayons
valtop = -10
tailleSBR = 10
For i = LBound(monTabFeuill) To UBound(monTabFeuill)
If monTabFeuill(i) <> "BG SISCO" _
And monTabFeuill(i) <> "BG PDV" _
And monTabFeuill(i) <> "Dbase RMS" _
And monTabFeuill(i) <> "Dbase Marges & CA" Then
Set chkPage = fmImprTous.Controls.Add
("Forms.CheckBox.1")
With chkPage
.Left = 6
.Top = valtop + 13
.Width = 140
.Height = 16
.Caption = monTabFeuill(i)
End With
valtop = chkPage.Top
tailleSBR = tailleSBR + 13
End If
Next i

' 'definition de la taille de la scrollbar de F_rayons

If tailleSBR <= fmImprTous.Height Then
fmImprTous.KeepScrollBarsVisible = fmScrollBarsNone
Else
fmImprTous.KeepScrollBarsVisible fmScrollBarsVertical
fmImprTous.ScrollBars = fmScrollBarsVertical
fmImprTous.ScrollHeight = tailleSBR
End If

End Sub

Lorsque je sélectionne ces feuilles pour être imprimées en
les placant dans un tableau je reçois un message d'erreur
d'exécution : "argument non valide"! alors que la
propriété pour cocher une checkbox est "value" = true ou
false????

Private Sub btnImprimer_Click()
Dim i%, x%, Arr()

'Impression des choix de la plaquette : selection des pages For i = 1 To fmImprTous.Controls.Count
If fmImprTous.Controls(i).Value = True Then
'erreur d'excécution : argument non valide ! : la check
est pourtant cochée
Arr(x) = fmImprTous.Controls(i).Caption
End If
Next i

x = fmImprTous.Controls.Count
ReDim Arr(1 To x)
Me.Hide
Sheets(Arr).Select
ActiveWindow.SelectedSheets.PrintPreview

End Sub
Que c'est dur l'apprentissage !
Merci pour le secours
Avatar
Denis Michon
Il y a une erreur ..dans la procédure proposée. il faut inverser la ligne des deux " if"

remplacer ceci :
If fmImprTous.Controls(i).Value = True Then
if If fmImprTous.Controls(i).Name <> "NomDuFrame" then

Par :
if If fmImprTous.Controls(i).Name <> "NomDuFrame" then
If fmImprTous.Controls(i).Value = True Then

Salutations!




Attention : fmImprTous.Controls.Count

Est-ce que tu as seulement des Checkbox dans ta feuille ?

Le Frame fait aussi parti de la collection "Controls" mais il n'a pas la propriété "Value" que possède le Checkbox. Dans ta
boucle, lorsque tu testes cette propriété pour le "Frame" une erreur est générée puisque la proprité n'existe pas . Une
correction possible

For i = 1 To fmImprTous.Controls.Count
If fmImprTous.Controls(i).Value = True Then
if If fmImprTous.Controls(i).Name <> "NomDuFrame" then
Arr(x) = fmImprTous.Controls(i).Caption
end if
End If
Next i

Ceci sous réserves de bien comprendre les noms de tes objets.


Salutations!


"Nicolas" a écrit dans le message de news:0e3e01c3be69$92482130$
Merci à Denis pour sa contribution mais je rencontre un
nouveau problème :

Je créé une boîte de dialogue avec une frame contenant des
checkboxs correspondant à certaines feuilles d'un classeur
susceptibles d'être imprimées;la pas de problème :

Private Sub UserForm_Initialize()
Dim monTabFeuill
Dim maFeuil As Worksheet
Dim mesfeuill, i%
mesfeuill = Application.Sheets.Count
ReDim monTabFeuill(mesfeuill)
For i = LBound(monTabFeuill) To UBound(monTabFeuill)
Set maFeuil = ActiveWorkbook.Worksheets(i)
monTabFeuill(i) = maFeuil.Name
Next i
Application.ScreenUpdating = False
Dim chkPage As Control 'chk correspond aux checkbox
qui vont etre créés
Dim valtop As Integer 'valtop correspond a la hauteur
initiale de la 1ere checbox creee
Dim tailleSBR As Integer

'creation du nb de checkbox correspondant aux nb de
rayons
valtop = -10
tailleSBR = 10
For i = LBound(monTabFeuill) To UBound(monTabFeuill)
If monTabFeuill(i) <> "BG SISCO" _
And monTabFeuill(i) <> "BG PDV" _
And monTabFeuill(i) <> "Dbase RMS" _
And monTabFeuill(i) <> "Dbase Marges & CA" Then
Set chkPage = fmImprTous.Controls.Add
("Forms.CheckBox.1")
With chkPage
.Left = 6
.Top = valtop + 13
.Width = 140
.Height = 16
.Caption = monTabFeuill(i)
End With
valtop = chkPage.Top
tailleSBR = tailleSBR + 13
End If
Next i

' 'definition de la taille de la scrollbar de F_rayons

If tailleSBR <= fmImprTous.Height Then
fmImprTous.KeepScrollBarsVisible = fmScrollBarsNone
Else
fmImprTous.KeepScrollBarsVisible fmScrollBarsVertical
fmImprTous.ScrollBars = fmScrollBarsVertical
fmImprTous.ScrollHeight = tailleSBR
End If

End Sub

Lorsque je sélectionne ces feuilles pour être imprimées en
les placant dans un tableau je reçois un message d'erreur
d'exécution : "argument non valide"! alors que la
propriété pour cocher une checkbox est "value" = true ou
false????

Private Sub btnImprimer_Click()
Dim i%, x%, Arr()

'Impression des choix de la plaquette : selection des pages For i = 1 To fmImprTous.Controls.Count
If fmImprTous.Controls(i).Value = True Then
'erreur d'excécution : argument non valide ! : la check
est pourtant cochée
Arr(x) = fmImprTous.Controls(i).Caption
End If
Next i

x = fmImprTous.Controls.Count
ReDim Arr(1 To x)
Me.Hide
Sheets(Arr).Select
ActiveWindow.SelectedSheets.PrintPreview

End Sub
Que c'est dur l'apprentissage !
Merci pour le secours