Création
d'entreprise
Posez votre question Signaler

Bouton imprimé avec bouton Option VBA EXCEL [Résolu]

Graphick 115Messages postés 16 septembre 2008Date d'inscription - Dernière réponse le 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
Lire la suite 

Bouton imprimé avec bouton Option VBA EXCEL »

8 réponses
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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+
Ajouter un commentaire
Réponse
+0
moins plus
bonjour

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

Worksheet("feuil3").Range("A1").Value
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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+
Ajouter un commentaire
Réponse
+0
moins plus
Lermite 222

Ca fonctionne que sur 2007

Il y a t'il quelque chose de semblable dans 2003????
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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+
Ajouter un commentaire
Ce document intitulé « Bouton imprimé avec bouton Option VBA EXCEL » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?