Bouton imprimé avec bouton Option VBA EXCEL

Résolu
Graphick Messages postés 118 Statut Membre -  
lermite222 Messages postés 9042 Statut Contributeur -
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
Configuration: Windows XP
Internet Explorer 7.0

8 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  3. wilfried_42 Messages postés 912 Statut Contributeur 245
     
    bonjour

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

    Worksheet("feuil3").Range("A1").Value
    0
  4. Graphick Messages postés 118 Statut Membre 9
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  7. Graphick Messages postés 118 Statut Membre 9
     
    Lermite 222

    Ca fonctionne que sur 2007

    Il y a t'il quelque chose de semblable dans 2003????
    0
  8. Graphick Messages postés 118 Statut Membre 9
     
    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
  9. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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