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

Bouton option VS Select case & With - End with

10 réponses
Avatar
Meg
Bonjour,

J'ai le code d'un petit userform que je voudrais optimiser. Alors voilà,
j'ai un With - End With à l'ntérieur du Select Case, mais je voudrais ne pas
avoir à le répéter à chaque Case, histoire d'avoir un code plus élégants. Je
ne sais pas trp comment imbriquer tout cela . Les lignes concernées dans le
code ci-dessous sont celles suivies d'un astérisque.

Merci pour votre aide !

Meg.

Private Sub CommandButton1_Click()
Dim MonImpression As Integer

Select Case MonImpression
Case OptionButton1
Application.ScreenUpdating = True*
With Worksheets("feuil1")*
.Visible = xlSheetVisible: .PrintOut: .Visible =
xlSheetHidden*
End With*
'Sheets("Feuil1").PrintOut Copies:=1, Collate:=True
Case OptionButton2
Sheets("Feuil2").PrintOut Copies:=1, Collate:=True
Case OptionButton3
Sheets("Feuil3").PrintOut Copies:=1, Collate:=True
Case OptionButton4
Sheets("Feuil4").PrintOut Copies:=1, Collate:=True
Case OptionButton5
Sheets("Feuil5").PrintOut Copies:=1, Collate:=True
Case Else
Sheets("Feuil6").PrintOut Copies:=1, Collate:=True
End Select

End Sub

10 réponses

Avatar
Daniel
Bonjour.
Essaie :

Application.ScreenUpdating = True
With Sheets("feuil1")
If OptionButton1 Then
.Visible = xlSheetVisible
.PrintOut
.Visible = xlSheetHidden
Else
For i = 2 To 6
If UserForm1.Controls("optionbutton" & i) Then ctr = i
Next i
Sheets("Feuil" & i).PrintOut Copies:=1, Collate:=True
End If
End With

Cordialement.
Daniel
End Sub
"Meg" a écrit dans le message de news:

Bonjour,

J'ai le code d'un petit userform que je voudrais optimiser. Alors voilà,
j'ai un With - End With à l'ntérieur du Select Case, mais je voudrais ne
pas avoir à le répéter à chaque Case, histoire d'avoir un code plus
élégants. Je ne sais pas trp comment imbriquer tout cela . Les lignes
concernées dans le code ci-dessous sont celles suivies d'un astérisque.

Merci pour votre aide !

Meg.

Private Sub CommandButton1_Click()
Dim MonImpression As Integer

Select Case MonImpression
Case OptionButton1
Application.ScreenUpdating = True*
With Worksheets("feuil1")*
.Visible = xlSheetVisible: .PrintOut: .Visible =
xlSheetHidden*
End With*
'Sheets("Feuil1").PrintOut Copies:=1, Collate:=True
Case OptionButton2
Sheets("Feuil2").PrintOut Copies:=1, Collate:=True
Case OptionButton3
Sheets("Feuil3").PrintOut Copies:=1, Collate:=True
Case OptionButton4
Sheets("Feuil4").PrintOut Copies:=1, Collate:=True
Case OptionButton5
Sheets("Feuil5").PrintOut Copies:=1, Collate:=True
Case Else
Sheets("Feuil6").PrintOut Copies:=1, Collate:=True
End Select

End Sub



Avatar
Meg
Salut Daniel,

D'abord, je tiens à te remercier pour ton aide...

J'ai une erreur dans le code ci-dessous. Excel me dit que l'indice
n'appartient pas à la sélection.
Si je mets For i = 2 to 5, je n'ai plus l'erreur, mais il imprime toujours
la dernière feuille, sauf pour la première.
J'ai essayé plusieurs variantes de ton code, mais sans succès :-(
Il ne faut pas oublier que les feuilles 1 à 6 sont masquées.

As-tu une idée pour m'aider ?

Merci encore !

Meg.


"Daniel" a écrit dans le message de news:
%
Bonjour.
Essaie :

Application.ScreenUpdating = True
With Sheets("feuil1")
If OptionButton1 Then
.Visible = xlSheetVisible
.PrintOut
.Visible = xlSheetHidden
Else
For i = 2 To 6
If UserForm1.Controls("optionbutton" & i) Then ctr = i
Next i
Sheets("Feuil" & i).PrintOut Copies:=1, Collate:=True
End If
End With

Cordialement.
Daniel
End Sub
"Meg" a écrit dans le message de news:

Bonjour,

J'ai le code d'un petit userform que je voudrais optimiser. Alors voilà,
j'ai un With - End With à l'ntérieur du Select Case, mais je voudrais ne
pas avoir à le répéter à chaque Case, histoire d'avoir un code plus
élégants. Je ne sais pas trp comment imbriquer tout cela . Les lignes
concernées dans le code ci-dessous sont celles suivies d'un astérisque.

Merci pour votre aide !

Meg.

Private Sub CommandButton1_Click()
Dim MonImpression As Integer

Select Case MonImpression
Case OptionButton1
Application.ScreenUpdating = True*
With Worksheets("feuil1")*
.Visible = xlSheetVisible: .PrintOut: .Visible =
xlSheetHidden*
End With*
'Sheets("Feuil1").PrintOut Copies:=1, Collate:=True
Case OptionButton2
Sheets("Feuil2").PrintOut Copies:=1, Collate:=True
Case OptionButton3
Sheets("Feuil3").PrintOut Copies:=1, Collate:=True
Case OptionButton4
Sheets("Feuil4").PrintOut Copies:=1, Collate:=True
Case OptionButton5
Sheets("Feuil5").PrintOut Copies:=1, Collate:=True
Case Else
Sheets("Feuil6").PrintOut Copies:=1, Collate:=True
End Select

End Sub







Avatar
Daniel
Bonsoir.
Oups.
Sheets("Feuil" & ctr).PrintOut Copies:=1, Collate:=True
Daniel
"Meg" a écrit dans le message de news:

Salut Daniel,

D'abord, je tiens à te remercier pour ton aide...

J'ai une erreur dans le code ci-dessous. Excel me dit que l'indice
n'appartient pas à la sélection.
Si je mets For i = 2 to 5, je n'ai plus l'erreur, mais il imprime toujours
la dernière feuille, sauf pour la première.
J'ai essayé plusieurs variantes de ton code, mais sans succès :-(
Il ne faut pas oublier que les feuilles 1 à 6 sont masquées.

As-tu une idée pour m'aider ?

Merci encore !

Meg.


"Daniel" a écrit dans le message de news:
%
Bonjour.
Essaie :

Application.ScreenUpdating = True
With Sheets("feuil1")
If OptionButton1 Then
.Visible = xlSheetVisible
.PrintOut
.Visible = xlSheetHidden
Else
For i = 2 To 6
If UserForm1.Controls("optionbutton" & i) Then ctr = i
Next i
Sheets("Feuil" & i).PrintOut Copies:=1, Collate:=True
End If
End With

Cordialement.
Daniel
End Sub
"Meg" a écrit dans le message de news:

Bonjour,

J'ai le code d'un petit userform que je voudrais optimiser. Alors voilà,
j'ai un With - End With à l'ntérieur du Select Case, mais je voudrais ne
pas avoir à le répéter à chaque Case, histoire d'avoir un code plus
élégants. Je ne sais pas trp comment imbriquer tout cela . Les lignes
concernées dans le code ci-dessous sont celles suivies d'un astérisque.

Merci pour votre aide !

Meg.

Private Sub CommandButton1_Click()
Dim MonImpression As Integer

Select Case MonImpression
Case OptionButton1
Application.ScreenUpdating = True*
With Worksheets("feuil1")*
.Visible = xlSheetVisible: .PrintOut: .Visible =
xlSheetHidden*
End With*
'Sheets("Feuil1").PrintOut Copies:=1, Collate:=True
Case OptionButton2
Sheets("Feuil2").PrintOut Copies:=1, Collate:=True
Case OptionButton3
Sheets("Feuil3").PrintOut Copies:=1, Collate:=True
Case OptionButton4
Sheets("Feuil4").PrintOut Copies:=1, Collate:=True
Case OptionButton5
Sheets("Feuil5").PrintOut Copies:=1, Collate:=True
Case Else
Sheets("Feuil6").PrintOut Copies:=1, Collate:=True
End Select

End Sub











Avatar
jps
hum
si ctr = i, n'est-ce pas la même chose que d'écrire ainsi, daniel?
jps (un peu endormi malgré tout)

"Daniel" a écrit dans le message de news:

Bonsoir.
Oups.
Sheets("Feuil" & ctr).PrintOut Copies:=1, Collate:=True
Daniel
"Meg" a écrit dans le message de news:

Salut Daniel,

D'abord, je tiens à te remercier pour ton aide...

J'ai une erreur dans le code ci-dessous. Excel me dit que l'indice
n'appartient pas à la sélection.
Si je mets For i = 2 to 5, je n'ai plus l'erreur, mais il imprime
toujours la dernière feuille, sauf pour la première.
J'ai essayé plusieurs variantes de ton code, mais sans succès :-(
Il ne faut pas oublier que les feuilles 1 à 6 sont masquées.

As-tu une idée pour m'aider ?

Merci encore !

Meg.


"Daniel" a écrit dans le message de news:
%
Bonjour.
Essaie :

Application.ScreenUpdating = True
With Sheets("feuil1")
If OptionButton1 Then
.Visible = xlSheetVisible
.PrintOut
.Visible = xlSheetHidden
Else
For i = 2 To 6
If UserForm1.Controls("optionbutton" & i) Then ctr = i
Next i
Sheets("Feuil" & i).PrintOut Copies:=1, Collate:=True
End If
End With

Cordialement.
Daniel
End Sub
"Meg" a écrit dans le message de news:

Bonjour,

J'ai le code d'un petit userform que je voudrais optimiser. Alors
voilà, j'ai un With - End With à l'ntérieur du Select Case, mais je
voudrais ne pas avoir à le répéter à chaque Case, histoire d'avoir un
code plus élégants. Je ne sais pas trp comment imbriquer tout cela .
Les lignes concernées dans le code ci-dessous sont celles suivies d'un
astérisque.

Merci pour votre aide !

Meg.

Private Sub CommandButton1_Click()
Dim MonImpression As Integer

Select Case MonImpression
Case OptionButton1
Application.ScreenUpdating = True*
With Worksheets("feuil1")*
.Visible = xlSheetVisible: .PrintOut: .Visible =
xlSheetHidden*
End With*
'Sheets("Feuil1").PrintOut Copies:=1, Collate:=True
Case OptionButton2
Sheets("Feuil2").PrintOut Copies:=1, Collate:=True
Case OptionButton3
Sheets("Feuil3").PrintOut Copies:=1, Collate:=True
Case OptionButton4
Sheets("Feuil4").PrintOut Copies:=1, Collate:=True
Case OptionButton5
Sheets("Feuil5").PrintOut Copies:=1, Collate:=True
Case Else
Sheets("Feuil6").PrintOut Copies:=1, Collate:=True
End Select

End Sub















Avatar
Meg
Bonsoir,

En effet, le problème persiste.... :-(((

Merci pour votre aide !

Meg.


"jps" a écrit dans le message de news:

hum
si ctr = i, n'est-ce pas la même chose que d'écrire ainsi, daniel?
jps (un peu endormi malgré tout)

"Daniel" a écrit dans le message de news:

Bonsoir.
Oups.
Sheets("Feuil" & ctr).PrintOut Copies:=1, Collate:=True
Daniel
"Meg" a écrit dans le message de news:

Salut Daniel,

D'abord, je tiens à te remercier pour ton aide...

J'ai une erreur dans le code ci-dessous. Excel me dit que l'indice
n'appartient pas à la sélection.
Si je mets For i = 2 to 5, je n'ai plus l'erreur, mais il imprime
toujours la dernière feuille, sauf pour la première.
J'ai essayé plusieurs variantes de ton code, mais sans succès :-(
Il ne faut pas oublier que les feuilles 1 à 6 sont masquées.

As-tu une idée pour m'aider ?

Merci encore !

Meg.


"Daniel" a écrit dans le message de news:
%
Bonjour.
Essaie :

Application.ScreenUpdating = True
With Sheets("feuil1")
If OptionButton1 Then
.Visible = xlSheetVisible
.PrintOut
.Visible = xlSheetHidden
Else
For i = 2 To 6
If UserForm1.Controls("optionbutton" & i) Then ctr = i
Next i
Sheets("Feuil" & i).PrintOut Copies:=1, Collate:=True
End If
End With

Cordialement.
Daniel
End Sub
"Meg" a écrit dans le message de news:

Bonjour,

J'ai le code d'un petit userform que je voudrais optimiser. Alors
voilà, j'ai un With - End With à l'ntérieur du Select Case, mais je
voudrais ne pas avoir à le répéter à chaque Case, histoire d'avoir un
code plus élégants. Je ne sais pas trp comment imbriquer tout cela .
Les lignes concernées dans le code ci-dessous sont celles suivies d'un
astérisque.

Merci pour votre aide !

Meg.

Private Sub CommandButton1_Click()
Dim MonImpression As Integer

Select Case MonImpression
Case OptionButton1
Application.ScreenUpdating = True*
With Worksheets("feuil1")*
.Visible = xlSheetVisible: .PrintOut: .Visible =
xlSheetHidden*
End With*
'Sheets("Feuil1").PrintOut Copies:=1, Collate:=True
Case OptionButton2
Sheets("Feuil2").PrintOut Copies:=1, Collate:=True
Case OptionButton3
Sheets("Feuil3").PrintOut Copies:=1, Collate:=True
Case OptionButton4
Sheets("Feuil4").PrintOut Copies:=1, Collate:=True
Case OptionButton5
Sheets("Feuil5").PrintOut Copies:=1, Collate:=True
Case Else
Sheets("Feuil6").PrintOut Copies:=1, Collate:=True
End Select

End Sub



















Avatar
Daniel
Bonjour.
Non, à la fin de la boucle, i = 6 dans tous les cas. Ctr a la valeur de i
quand l'optionbutton est sélectionné.
Si l'optionbutton2.value = True, ctr=2 en fin de boucle.
Ou j'ai raté quelque chose.
Daniel
"jps" a écrit dans le message de news:

hum
si ctr = i, n'est-ce pas la même chose que d'écrire ainsi, daniel?
jps (un peu endormi malgré tout)

"Daniel" a écrit dans le message de news:

Bonsoir.
Oups.
Sheets("Feuil" & ctr).PrintOut Copies:=1, Collate:=True
Daniel
"Meg" a écrit dans le message de news:

Salut Daniel,

D'abord, je tiens à te remercier pour ton aide...

J'ai une erreur dans le code ci-dessous. Excel me dit que l'indice
n'appartient pas à la sélection.
Si je mets For i = 2 to 5, je n'ai plus l'erreur, mais il imprime
toujours la dernière feuille, sauf pour la première.
J'ai essayé plusieurs variantes de ton code, mais sans succès :-(
Il ne faut pas oublier que les feuilles 1 à 6 sont masquées.

As-tu une idée pour m'aider ?

Merci encore !

Meg.


"Daniel" a écrit dans le message de news:
%
Bonjour.
Essaie :

Application.ScreenUpdating = True
With Sheets("feuil1")
If OptionButton1 Then
.Visible = xlSheetVisible
.PrintOut
.Visible = xlSheetHidden
Else
For i = 2 To 6
If UserForm1.Controls("optionbutton" & i) Then ctr = i
Next i
Sheets("Feuil" & i).PrintOut Copies:=1, Collate:=True
End If
End With

Cordialement.
Daniel
End Sub
"Meg" a écrit dans le message de news:

Bonjour,

J'ai le code d'un petit userform que je voudrais optimiser. Alors
voilà, j'ai un With - End With à l'ntérieur du Select Case, mais je
voudrais ne pas avoir à le répéter à chaque Case, histoire d'avoir un
code plus élégants. Je ne sais pas trp comment imbriquer tout cela .
Les lignes concernées dans le code ci-dessous sont celles suivies d'un
astérisque.

Merci pour votre aide !

Meg.

Private Sub CommandButton1_Click()
Dim MonImpression As Integer

Select Case MonImpression
Case OptionButton1
Application.ScreenUpdating = True*
With Worksheets("feuil1")*
.Visible = xlSheetVisible: .PrintOut: .Visible =
xlSheetHidden*
End With*
'Sheets("Feuil1").PrintOut Copies:=1, Collate:=True
Case OptionButton2
Sheets("Feuil2").PrintOut Copies:=1, Collate:=True
Case OptionButton3
Sheets("Feuil3").PrintOut Copies:=1, Collate:=True
Case OptionButton4
Sheets("Feuil4").PrintOut Copies:=1, Collate:=True
Case OptionButton5
Sheets("Feuil5").PrintOut Copies:=1, Collate:=True
Case Else
Sheets("Feuil6").PrintOut Copies:=1, Collate:=True
End Select

End Sub



















Avatar
Daniel
Bonjour.
Quelqu'un peut-il prendre le relais. Je suis bloqué sur ce coup, et absent
popur la journée.
Merci.
Daniel
"Meg" a écrit dans le message de news:

Bonsoir,

En effet, le problème persiste.... :-(((

Merci pour votre aide !

Meg.


"jps" a écrit dans le message de news:

hum
si ctr = i, n'est-ce pas la même chose que d'écrire ainsi, daniel?
jps (un peu endormi malgré tout)

"Daniel" a écrit dans le message de news:

Bonsoir.
Oups.
Sheets("Feuil" & ctr).PrintOut Copies:=1, Collate:=True
Daniel
"Meg" a écrit dans le message de news:

Salut Daniel,

D'abord, je tiens à te remercier pour ton aide...

J'ai une erreur dans le code ci-dessous. Excel me dit que l'indice
n'appartient pas à la sélection.
Si je mets For i = 2 to 5, je n'ai plus l'erreur, mais il imprime
toujours la dernière feuille, sauf pour la première.
J'ai essayé plusieurs variantes de ton code, mais sans succès :-(
Il ne faut pas oublier que les feuilles 1 à 6 sont masquées.

As-tu une idée pour m'aider ?

Merci encore !

Meg.


"Daniel" a écrit dans le message de news:
%
Bonjour.
Essaie :

Application.ScreenUpdating = True
With Sheets("feuil1")
If OptionButton1 Then
.Visible = xlSheetVisible
.PrintOut
.Visible = xlSheetHidden
Else
For i = 2 To 6
If UserForm1.Controls("optionbutton" & i) Then ctr = i
Next i
Sheets("Feuil" & i).PrintOut Copies:=1, Collate:=True
End If
End With

Cordialement.
Daniel
End Sub
"Meg" a écrit dans le message de news:

Bonjour,

J'ai le code d'un petit userform que je voudrais optimiser. Alors
voilà, j'ai un With - End With à l'ntérieur du Select Case, mais je
voudrais ne pas avoir à le répéter à chaque Case, histoire d'avoir un
code plus élégants. Je ne sais pas trp comment imbriquer tout cela .
Les lignes concernées dans le code ci-dessous sont celles suivies
d'un astérisque.

Merci pour votre aide !

Meg.

Private Sub CommandButton1_Click()
Dim MonImpression As Integer

Select Case MonImpression
Case OptionButton1
Application.ScreenUpdating = True*
With Worksheets("feuil1")*
.Visible = xlSheetVisible: .PrintOut: .Visible =
xlSheetHidden*
End With*
'Sheets("Feuil1").PrintOut Copies:=1, Collate:=True
Case OptionButton2
Sheets("Feuil2").PrintOut Copies:=1, Collate:=True
Case OptionButton3
Sheets("Feuil3").PrintOut Copies:=1, Collate:=True
Case OptionButton4
Sheets("Feuil4").PrintOut Copies:=1, Collate:=True
Case OptionButton5
Sheets("Feuil5").PrintOut Copies:=1, Collate:=True
Case Else
Sheets("Feuil6").PrintOut Copies:=1, Collate:=True
End Select

End Sub























Avatar
jps
sûrement pas moi, daniel, qui déjà n'avais rien compris à la valeur de
ctr....
il faut sauver le soldat Meg
debout les braves!
jps

"Daniel" a écrit dans le message de news:
%
Bonjour.
Quelqu'un peut-il prendre le relais. Je suis bloqué sur ce coup, et absent
popur la journée.
Merci.
Daniel
"Meg" a écrit dans le message de news:

Bonsoir,

En effet, le problème persiste.... :-(((

Merci pour votre aide !

Meg.


"jps" a écrit dans le message de news:

hum
si ctr = i, n'est-ce pas la même chose que d'écrire ainsi, daniel?
jps (un peu endormi malgré tout)

"Daniel" a écrit dans le message de news:

Bonsoir.
Oups.
Sheets("Feuil" & ctr).PrintOut Copies:=1, Collate:=True
Daniel
"Meg" a écrit dans le message de news:

Salut Daniel,

D'abord, je tiens à te remercier pour ton aide...

J'ai une erreur dans le code ci-dessous. Excel me dit que l'indice
n'appartient pas à la sélection.
Si je mets For i = 2 to 5, je n'ai plus l'erreur, mais il imprime
toujours la dernière feuille, sauf pour la première.
J'ai essayé plusieurs variantes de ton code, mais sans succès :-(
Il ne faut pas oublier que les feuilles 1 à 6 sont masquées.

As-tu une idée pour m'aider ?

Merci encore !

Meg.


"Daniel" a écrit dans le message de news:
%
Bonjour.
Essaie :

Application.ScreenUpdating = True
With Sheets("feuil1")
If OptionButton1 Then
.Visible = xlSheetVisible
.PrintOut
.Visible = xlSheetHidden
Else
For i = 2 To 6
If UserForm1.Controls("optionbutton" & i) Then ctr = i
Next i
Sheets("Feuil" & i).PrintOut Copies:=1, Collate:=True
End If
End With

Cordialement.
Daniel
End Sub
"Meg" a écrit dans le message de news:

Bonjour,

J'ai le code d'un petit userform que je voudrais optimiser. Alors
voilà, j'ai un With - End With à l'ntérieur du Select Case, mais je
voudrais ne pas avoir à le répéter à chaque Case, histoire d'avoir
un code plus élégants. Je ne sais pas trp comment imbriquer tout
cela . Les lignes concernées dans le code ci-dessous sont celles
suivies d'un astérisque.

Merci pour votre aide !

Meg.

Private Sub CommandButton1_Click()
Dim MonImpression As Integer

Select Case MonImpression
Case OptionButton1
Application.ScreenUpdating = True*
With Worksheets("feuil1")*
.Visible = xlSheetVisible: .PrintOut: .Visible =
xlSheetHidden*
End With*
'Sheets("Feuil1").PrintOut Copies:=1, Collate:=True
Case OptionButton2
Sheets("Feuil2").PrintOut Copies:=1, Collate:=True
Case OptionButton3
Sheets("Feuil3").PrintOut Copies:=1, Collate:=True
Case OptionButton4
Sheets("Feuil4").PrintOut Copies:=1, Collate:=True
Case OptionButton5
Sheets("Feuil5").PrintOut Copies:=1, Collate:=True
Case Else
Sheets("Feuil6").PrintOut Copies:=1, Collate:=True
End Select

End Sub



























Avatar
Daniel
Regarde le classeur à l'adresse :

http://cjoint.com/?iDjWrU1Lbt
Le code du bouton du userform est :
Private Sub CommandButton1_Click()
For i = 1 To 6
If UserForm1.Controls("optionbutton" & i) Then ctr = i
Next i
With Sheets("Feuil" & ctr)
.Visible = xlSheetVisible
MsgBox "Feuil" & ctr
.PrintOut Copies:=1, Collate:=True
.Visible = xlSheetHidden
End With
Me.Hide
End Sub

Daniel
"Meg" a écrit dans le message de news:

Bonsoir,

En effet, le problème persiste.... :-(((

Merci pour votre aide !

Meg.


"jps" a écrit dans le message de news:

hum
si ctr = i, n'est-ce pas la même chose que d'écrire ainsi, daniel?
jps (un peu endormi malgré tout)

"Daniel" a écrit dans le message de news:

Bonsoir.
Oups.
Sheets("Feuil" & ctr).PrintOut Copies:=1, Collate:=True
Daniel
"Meg" a écrit dans le message de news:

Salut Daniel,

D'abord, je tiens à te remercier pour ton aide...

J'ai une erreur dans le code ci-dessous. Excel me dit que l'indice
n'appartient pas à la sélection.
Si je mets For i = 2 to 5, je n'ai plus l'erreur, mais il imprime
toujours la dernière feuille, sauf pour la première.
J'ai essayé plusieurs variantes de ton code, mais sans succès :-(
Il ne faut pas oublier que les feuilles 1 à 6 sont masquées.

As-tu une idée pour m'aider ?

Merci encore !

Meg.


"Daniel" a écrit dans le message de news:
%
Bonjour.
Essaie :

Application.ScreenUpdating = True
With Sheets("feuil1")
If OptionButton1 Then
.Visible = xlSheetVisible
.PrintOut
.Visible = xlSheetHidden
Else
For i = 2 To 6
If UserForm1.Controls("optionbutton" & i) Then ctr = i
Next i
Sheets("Feuil" & i).PrintOut Copies:=1, Collate:=True
End If
End With

Cordialement.
Daniel
End Sub
"Meg" a écrit dans le message de news:

Bonjour,

J'ai le code d'un petit userform que je voudrais optimiser. Alors
voilà, j'ai un With - End With à l'ntérieur du Select Case, mais je
voudrais ne pas avoir à le répéter à chaque Case, histoire d'avoir un
code plus élégants. Je ne sais pas trp comment imbriquer tout cela .
Les lignes concernées dans le code ci-dessous sont celles suivies
d'un astérisque.

Merci pour votre aide !

Meg.

Private Sub CommandButton1_Click()
Dim MonImpression As Integer

Select Case MonImpression
Case OptionButton1
Application.ScreenUpdating = True*
With Worksheets("feuil1")*
.Visible = xlSheetVisible: .PrintOut: .Visible =
xlSheetHidden*
End With*
'Sheets("Feuil1").PrintOut Copies:=1, Collate:=True
Case OptionButton2
Sheets("Feuil2").PrintOut Copies:=1, Collate:=True
Case OptionButton3
Sheets("Feuil3").PrintOut Copies:=1, Collate:=True
Case OptionButton4
Sheets("Feuil4").PrintOut Copies:=1, Collate:=True
Case OptionButton5
Sheets("Feuil5").PrintOut Copies:=1, Collate:=True
Case Else
Sheets("Feuil6").PrintOut Copies:=1, Collate:=True
End Select

End Sub























Avatar
Meg
Bonjour Daniel,

J'ai suivi le lien que tu as donné et j'ai essayé le code. Le code
fonctionne très bien. J'imagine que ça devait être la première partie du
code (La condition If - Then) qui posait problème.

Peu importe, le problème est résolu.

Merci !

Meg.

"Daniel" a écrit dans le message de news:

Bonjour.
Non, à la fin de la boucle, i = 6 dans tous les cas. Ctr a la valeur de i
quand l'optionbutton est sélectionné.
Si l'optionbutton2.value = True, ctr=2 en fin de boucle.
Ou j'ai raté quelque chose.
Daniel
"jps" a écrit dans le message de news:

hum
si ctr = i, n'est-ce pas la même chose que d'écrire ainsi, daniel?
jps (un peu endormi malgré tout)

"Daniel" a écrit dans le message de news:

Bonsoir.
Oups.
Sheets("Feuil" & ctr).PrintOut Copies:=1, Collate:=True
Daniel
"Meg" a écrit dans le message de news:

Salut Daniel,

D'abord, je tiens à te remercier pour ton aide...

J'ai une erreur dans le code ci-dessous. Excel me dit que l'indice
n'appartient pas à la sélection.
Si je mets For i = 2 to 5, je n'ai plus l'erreur, mais il imprime
toujours la dernière feuille, sauf pour la première.
J'ai essayé plusieurs variantes de ton code, mais sans succès :-(
Il ne faut pas oublier que les feuilles 1 à 6 sont masquées.

As-tu une idée pour m'aider ?

Merci encore !

Meg.


"Daniel" a écrit dans le message de news:
%
Bonjour.
Essaie :

Application.ScreenUpdating = True
With Sheets("feuil1")
If OptionButton1 Then
.Visible = xlSheetVisible
.PrintOut
.Visible = xlSheetHidden
Else
For i = 2 To 6
If UserForm1.Controls("optionbutton" & i) Then ctr = i
Next i
Sheets("Feuil" & i).PrintOut Copies:=1, Collate:=True
End If
End With

Cordialement.
Daniel
End Sub
"Meg" a écrit dans le message de news:

Bonjour,

J'ai le code d'un petit userform que je voudrais optimiser. Alors
voilà, j'ai un With - End With à l'ntérieur du Select Case, mais je
voudrais ne pas avoir à le répéter à chaque Case, histoire d'avoir un
code plus élégants. Je ne sais pas trp comment imbriquer tout cela .
Les lignes concernées dans le code ci-dessous sont celles suivies
d'un astérisque.

Merci pour votre aide !

Meg.

Private Sub CommandButton1_Click()
Dim MonImpression As Integer

Select Case MonImpression
Case OptionButton1
Application.ScreenUpdating = True*
With Worksheets("feuil1")*
.Visible = xlSheetVisible: .PrintOut: .Visible =
xlSheetHidden*
End With*
'Sheets("Feuil1").PrintOut Copies:=1, Collate:=True
Case OptionButton2
Sheets("Feuil2").PrintOut Copies:=1, Collate:=True
Case OptionButton3
Sheets("Feuil3").PrintOut Copies:=1, Collate:=True
Case OptionButton4
Sheets("Feuil4").PrintOut Copies:=1, Collate:=True
Case OptionButton5
Sheets("Feuil5").PrintOut Copies:=1, Collate:=True
Case Else
Sheets("Feuil6").PrintOut Copies:=1, Collate:=True
End Select

End Sub