Bouton imprimé avec bouton Option VBA EXCEL

Résolu/Fermé
Graphick Messages postés 109 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 12 mars 2022 - 7 nov. 2008 à 15:16
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 8 nov. 2008 à 09:56
Salut à tous,

Voila mon problème, Jai une 20 de bouton options avec un bouton tout en bas qui valide et imprime, si je selectionne
5 bouton option et je valide = imprime les 5 pages relié au bouton option.

Donc voila sur quoi je me suis basé mais ca ne fonctionne pas

Private Sub CommandButton1_Click()
If OptionButton1.Value = True Then
Selection.PrintOut Copies:=Worksheet("feuil2").Value, Collate:=True
End If
Private Sub CommandButton1_Click()
If OptionButton2.Value = True Then
Selection.PrintOut Copies:=Worksheet("feuil3").Value, Collate:=True
End Sub

Donc résultat ERREUR DE COMPILATION SUB OU FONCTION NON DÉFINI

Y a t'il quelqu,un assez aimable pour me dire ou est le problème car la suis un peu perdu.
Bon faut dire que je suis pas expert en VBA meme que je débute mais bon quand même.......

Merci
A voir également:

8 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
7 nov. 2008 à 15:29
C'est normal vous faîtes référence avec le même bouton à deux procédures différentes.

pour traiter un cas comme celui-là

il est possible d'utiliser la collection controls et une boucle for each
à voir dans l'aide d'excel il y a quelchose d'écrit
et c'est bien pour débuter

on peut aussi utiliser


une boucle select case en vérifiant la valeur true ou false de toutes les options.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
7 nov. 2008 à 15:46
bonjour,
If OptionButton2.Value = True Then 
    Sheets("feuil3").PrintOut
End Sub 

Il faut que les paramètres d'impression soient déjà réglés dans les feuilles et la plage d'impression aussi.
A+
0
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 243
7 nov. 2008 à 15:51
bonjour

Worksheet("feuil3").Value ????? il maque quelque chose : Range("A1")

Worksheet("feuil3").Range("A1").Value
0
Graphick Messages postés 109 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 12 mars 2022 9
7 nov. 2008 à 15:54
Merci ca fonctionne

Je crois que mon probleme est que je cherche vraiment trop loin et je cherche dans le complexe quand cest si simple

Encore merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
7 nov. 2008 à 17:37
Si tu met ce code dans l'événement clic du bouton tout est complet.
Tu doit bien sûr adapter les noms des feuilles aux noms des chechBox
Private Sub CommandButton1_Click()
Dim obj As OLEObject
    For Each obj In ActiveSheet.OLEObjects
        If TypeOf obj.Object Is MSForms.CheckBox Then
            If obj.Object.Value Then
                Select Case Val(Right(obj.Name, 1))
                Case 1: Sheets("Feuil1").PrintOut
                Case 2: Sheets("Feuil2").PrintOut
                Case 3: Sheets("Feuil3").PrintOut
                Case 4: Sheets("Feuil4").PrintOut
                Case 5: Sheets("Feuil5").PrintOut
                End Select
            End If
        End If
    Next obj
End Sub

Fonctionne sur < 2007 et sur 2007
NB: Il y a possibilité de supprimer le Select Case en travaillant sur les index des feuilles mais il faut bien sûr adapter les noms des checkBox au N° des indexs feuilles
A+
0
Graphick Messages postés 109 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 12 mars 2022 9
7 nov. 2008 à 19:12
Lermite 222

Ca fonctionne que sur 2007

Il y a t'il quelque chose de semblable dans 2003????
0
Graphick Messages postés 109 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 12 mars 2022 9
7 nov. 2008 à 20:38
Bon voila ce code fonctionne parfois

Private Sub CommandButton1_Click()
If CheckBox1.Value = True Then
Worksheets("Feuil2").PrintOut
If CheckBox2.Value = True Then
Worksheets("feuil3").PrintOut
End If
End If
End Sub

Je reussi toujours à imprimer le premier check box mais les autres que parfois ????

Pourquoi
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
8 nov. 2008 à 09:56
Effectivement, j'ai fait une légère erreur, pas tester les printOut, rectification...
Dans un module générale ex: Module1. tu colle la Sub ci-dessous
Public Sub ImprimTout()
Dim obj As OLEObject
    For Each obj In ActiveSheet.OLEObjects
        If TypeOf obj.Object Is MSForms.CheckBox Then
            If obj.Object.Value Then
                Select Case Val(Right(obj.Name, 1))
                Case 1: Sheets("Feuil1").PrintOut
                Case 2: Sheets("Feuil2").PrintOut
                Case 3: Sheets("Feuil3").PrintOut
                Case 4: Sheets("Feuil4").PrintOut
                Case 5: Sheets("Feuil5").PrintOut
                End Select
            End If
        End If
    Next obj
End Sub

Et dans l'événement du bouton Clic..
Private Sub CommandButton1_Click() 
    ImprimeTout
End Sub

Il faut que les noms des CheckBox soit fait comme cela..
CkeckBox1 : Caption Imprime feuille 1
CheckBox2: Caption Imprime Feuille 2
etc..
Les noms doivent OBLIGATOIREMENT se terminer par 1,2,3,4 et 5
Si t'en sort pas met ton classeur sur Cjoint.com et mettre le lien dans un poste suivant.
Concernant l'erreur que tu a dans ton code ...
1°) rectification.
Private Sub CommandButton1_Click()
    If CheckBox1.Value = True Then
        Worksheets("Feuil2").PrintOut
    End If    
    If CheckBox2.Value = True Then
        Worksheets("feuil3").PrintOut
    End If
End Sub

2°) Ca n'ira pas, l'appel à différente feuille à partir d'un module de feuille pose souvent des problèmes.
Tu dit..
A+
0