VBA : Imprimer sauf si les lignes sont masquées
Fermé
fannoche35
Messages postés
11
Date d'inscription
jeudi 2 novembre 2017
Statut
Membre
Dernière intervention
12 mars 2018
-
Modifié le 13 mars 2018 à 16:17
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 13 mars 2018 à 16:15
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 13 mars 2018 à 16:15
A voir également:
- VBA : Imprimer sauf si les lignes sont masquées
- Mkdir vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Autofill vba ✓ - Forum Excel
- L'indice n'appartient pas à la sélection vba ✓ - Forum Programmation
2 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
22 nov. 2017 à 17:09
22 nov. 2017 à 17:09
Bonjour,
comme ceci en début de Sub:
comme ceci en début de Sub:
If CheckBox10.Value = False Then Exit Sub
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
1 mars 2018 à 11:59
1 mars 2018 à 11:59
De plus avec mon Sub Imprime, je n'arrive pas à imprimer les page dans un seul document pdf, cela me fiat plusieurs documents séparés. y a t-il une solution pour ça ?
Voir ceci, tu auras la réponse à ta question:
http://www.mdf-xlpages.com/modules/newbb/viewtopic.php?post_id=7055
Ensuite il suffit d'adapter cette ligne en fonction des CheckBox cochées
Voilà
Voir ceci, tu auras la réponse à ta question:
http://www.mdf-xlpages.com/modules/newbb/viewtopic.php?post_id=7055
Ensuite il suffit d'adapter cette ligne en fonction des CheckBox cochées
Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
Voilà
Jauster
Messages postés
126
Date d'inscription
jeudi 7 décembre 2017
Statut
Membre
Dernière intervention
31 août 2018
40
Modifié le 1 mars 2018 à 12:14
Modifié le 1 mars 2018 à 12:14
Hello,
Je débute depuis peu en VBA, et pour m'amuser et m'améliorer j'ai souhaité raccourcir le code de fannoche35, sans succès. Aurais-tu une piste ou une idée de pourquoi ca ne marche pas ? Surement à cause de ces page(i) que j'ai mal déclaré...
PS : sans prendre en compte les checkboxes
Je débute depuis peu en VBA, et pour m'amuser et m'améliorer j'ai souhaité raccourcir le code de fannoche35, sans succès. Aurais-tu une piste ou une idée de pourquoi ca ne marche pas ? Surement à cause de ces page(i) que j'ai mal déclaré...
PS : sans prendre en compte les checkboxes
Sub Imprime() Dim page1 As String, page2 As String, page3 As String, page4 As String page1 = "A1:AX69" page2 = "A70:CM95" page3 = "A96:AX166" page4 = "A167:AX237" For i = 1 To 4 With ActiveSheet.PageSetup If i = 2 Then Set c = xlLandscape Else: c = xlPortrait End If .PrintArea = "page" & i 'définition de la zone d'impression .Orientation = c 'mise au format portrait .CenterHorizontally = True 'centrage horizontal de la feuille End With Next i 'ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True 'impression End Sub
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
1 mars 2018 à 13:54
1 mars 2018 à 13:54
Voir ceci pour les tableaux:
https://silkyroad.developpez.com/vba/tableaux/#LVI
@+
https://silkyroad.developpez.com/vba/tableaux/#LVI
Sub Imprime() Dim NomTableau As Variant Dim i As Integer NomTableau = Array("A1:AX69", "A70:CM95", "A96:AX166", "A167:AX237") For i = LBound(NomTableau) To UBound(NomTableau) MsgBox NomTableau(i) With ActiveSheet.PageSetup .PrintArea = NomTableau(i) 'définition de la zone d'impression End With Next i End Sub
@+
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
Modifié le 2 mars 2018 à 12:47
Modifié le 2 mars 2018 à 12:47
fannoche35,
voici le principe pour ne pas faire une usine à gaz:
Tu mets dans chaque Feuille la sélection correspondante qui se déclenchera avec l’événement Activate de la Feuille comme ceci:
voir l'evenement Feuille ici:
https://silkyroad.developpez.com/VBA/FeuilleDeCalcul/#LII-A-1
Ensuite la caption de chaque CheckBox sera mis au nom de la Feuille correspondante
On fera une boucle sur la collection des checkBox que l'on affichera dans une listbox
https://silkyroad.developpez.com/VBA/ControlesUserForm/#LI-B
Il faudra aussi une ListBox pour afficher les Feuilles sélectionnées.
Voilà le code pour 3 feuilles à toi de l'adapter pour toutes tes feuilles:
Voici un exemple à télécharger
https://www.cjoint.com/c/HCckXMKk4QQ
Bon courage
@+ Le Pivert
voici le principe pour ne pas faire une usine à gaz:
Tu mets dans chaque Feuille la sélection correspondante qui se déclenchera avec l’événement Activate de la Feuille comme ceci:
Option Explicit Private Sub Worksheet_Activate() Range("A1:AX69").Select 'définition de la plage de cellules constituant la 1ère page ActiveSheet.PageSetup.PrintArea = "$A$1:$AX$68" 'définition de la zone d'impression ActiveSheet.PageSetup.Orientation = xlPortrait 'mise au format portrait ActiveSheet.PageSetup.CenterHorizontally = True 'centrage horizontal de la feuille End Sub
voir l'evenement Feuille ici:
https://silkyroad.developpez.com/VBA/FeuilleDeCalcul/#LII-A-1
Ensuite la caption de chaque CheckBox sera mis au nom de la Feuille correspondante
On fera une boucle sur la collection des checkBox que l'on affichera dans une listbox
https://silkyroad.developpez.com/VBA/ControlesUserForm/#LI-B
Il faudra aussi une ListBox pour afficher les Feuilles sélectionnées.
Voilà le code pour 3 feuilles à toi de l'adapter pour toutes tes feuilles:
Option Explicit 'http://www.mdf-xlpages.com/modules/newbb/viewtopic.php?post_id=7055 'http://silkyroad.developpez.com/VBA/ControlesUserForm/#LI-B 'http://silkyroad.developpez.com/VBA/FeuilleDeCalcul/#LII-A-1 Private Sub CommandButton1_Click() Dim Ctrl As Control Dim sRep As String Dim sFilename As String Dim nom As String Dim nombre As Integer 'nombre de feuille ListBox1.Clear 'Boucle sur la collection de contrôles mettre la Caption des checkBox au nom des feuilles For Each Ctrl In Me.Controls If TypeOf Ctrl Is MSForms.CheckBox Then If Ctrl.Object.Value = True Then ListBox1.AddItem (Ctrl.Caption) End If End If Next Ctrl nombre = ListBox1.ListCount 'nombre de feuille Select Case nombre Case Is = 1 Sheets(Array(ListBox1.List(0))).Select nom = "_1" Case Is = 2 Sheets(Array(ListBox1.List(0), ListBox1.List(1))).Select nom = "_2" Case Is = 3 Sheets(Array(ListBox1.List(0), ListBox1.List(1), ListBox1.List(2))).Select nom = "_3" End Select sRep = ThisWorkbook.Path & "\" 'chemin du dossier sFilename = Replace(ThisWorkbook.Name, ".xlsm", "") 'nom seul sans extension sFilename = sFilename & nom & ".pdf" ActiveSheet.ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:=sRep & sFilename, _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=True MsgBox "Enregistrer dans le même dossier que ce classeur au nom du classeur et du nombre de feuilles" End Sub
Voici un exemple à télécharger
https://www.cjoint.com/c/HCckXMKk4QQ
Bon courage
@+ Le Pivert
fannoche35
Messages postés
11
Date d'inscription
jeudi 2 novembre 2017
Statut
Membre
Dernière intervention
12 mars 2018
8 mars 2018 à 14:26
8 mars 2018 à 14:26
Bonjour cs_Le Pivert,
Je nage...
Moi qui débute en autoformation c'est très compliqué ! Je vais travailler dessus.
Merci pour ton aide.
(ps: le lien de l'exemple à télécharger, n'est pas ou plus actif)
Bonne journée
Je nage...
Moi qui débute en autoformation c'est très compliqué ! Je vais travailler dessus.
Merci pour ton aide.
(ps: le lien de l'exemple à télécharger, n'est pas ou plus actif)
Bonne journée
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
8 mars 2018 à 14:36
8 mars 2018 à 14:36
Moi qui débute en autoformation c'est très compliqué ! Je vais travailler dessus.
Ce que tu demandes n'est pas compliqué, mais c'est une usine à gaz à paramétrer pour chaque cas de figure!
(ps: le lien de l'exemple à télécharger, n'est pas ou plus actif
il est valable 4 jours
https://www.cjoint.com/c/HCinG0bQBSQ
Voilà
Ce que tu demandes n'est pas compliqué, mais c'est une usine à gaz à paramétrer pour chaque cas de figure!
(ps: le lien de l'exemple à télécharger, n'est pas ou plus actif
il est valable 4 jours
https://www.cjoint.com/c/HCinG0bQBSQ
Voilà
1 mars 2018 à 10:17
Désolée pour le temps de réponse...
Merci pour ton aide cs_Le Pivert
Je n'ai pas qu'une check box mais plusieurs :
Je voudrais que la page 1 et 2 s'impriment toujours
que la page 3 s'imprime si checkbox1 cochée
que la page 4 s'imprime si checkbox 1 ou 3 ou 21 cochées
que la page 5 et 6 s'imprime si la checkbox 6 est cochée
que la page 7 s'imprime si la checkbox 2 est cochée
que la page 8 s'imprime si la checkbox 24 est cochée
que la page 9 s'imprime si la checkbox 23 est cochée
que la page 10 s'imprime si la checkbox 3 est cochée
que la page 11 s'imprime si la checkbox 21 est cochée
que la page 12 et 13 s'imprime si la checkbox 5 est cochée
etc...
De plus avec mon Sub Imprime, je n'arrive pas à imprimer les page dans un seul document pdf, cela me fiat plusieurs documents séparés. y a t-il une solution pour ça ?
Merci d'avance