Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Voila j’ai un classeur avec 2 feuilles la première nommée « Listes » et la seconde nommée « presence ».
Sur la feuille « Listes » dans la colonne « C » j’ai une liste de noms, nommée « noms_prenoms », (je précise que les lignes vides sont importantes et que je ne peux les supprimer), du type :
Nom 1
Nom 2
Nom 3
Nom 5
Nom 7
Nom 10
Sur la feuille « presence » un tableau avec dans la cellule « a11 » un menu déroulant comportant la listes nommée « noms_prenoms ». En fonction du nom de cette liste que j’affiche le tableau est programmé pour afficher ou non certaines données.
Je souhaite imprimer en rafale le tableau de la feuille « presence » pour chacun des noms de la liste nommé « noms_prenoms ».
Et j’y suis parvenu avec cette macro 😉:
Sub Rafale
'
' Impression en rafale de toute les feuilles comportant un nom
' Macro enregistrée le 30/08/2011 par Sarah
'
Dim Lig As Long, Listes As String
For Lig = 13 To 43
Listes = Sheets("Listes").Range("C" & Lig).Value
With Sheets("presence")
.Range("A11").Value = Listes
.PrintOut
End With
Next Lig
End Sub
Cette macro marche très bien 😉. Mais elle imprime aussi du coup le tableau quand la ligne de ma liste « noms_prenoms » est vide dans la cellule « a11 » 🙁.
Or pour des soucis d’écologie et d’économie je souhaiterai ne pas imprimer un tableau vide. Et là je bloque je ne trouve pas la solution …….. 🙁
J’espère avoir été claire dans mes explications, mais si toute fois vous souhaitiez avoir des précisions n’hésitez pas 😱.
Merci d’avance à toutes les personnes qui essayeront de m’aider.
Re : Cherche solution pour macro " imprimer en rafale tableau si ligne de liste non v
Bonjour Sarmat et bienvenue sur le forum,
Tu n'as qu'à ajouter la condition suivante avant ta commande .Printout :
Code:
If .Range("A11") = "" then .PrintOut
Tu pourrais aussi profiter du fait que tu as une liste nommée et ainsi balayer l'ensemble des cellules de cette liste. Ainsi, tu n'as pas à ajuster les lignes si ta liste change.
Code:
Sub Rafale()
'
' Impression en rafale de toute les feuilles comportant un nom
' Macro enregistrée le 30/08/2011 par Sarah
'
Dim C As Range
For Each C In [noms_prenoms]
If C.Value <> "" Then
Sheets("Presence").Range("A11") = C
Sheets("Presence").PrintOut
End If
Next
End Sub
Re : Cherche solution pour macro " imprimer en rafale tableau si ligne de liste non v
Oups, faute de frappe.
Au lieu de
Code:
If .Range("A11") = "" then .PrintOut
ça aurait dû être
Code:
If .Range("A11") <> "" then .PrintOut
Ta macro deviendrait :
Code:
Sub Rafale
'
' Impression en rafale de toute les feuilles comportant un nom
' Macro enregistrée le 30/08/2011 par Sarah
'
Dim Lig As Long, Listes As String
For Lig = 13 To 43
Listes = Sheets("Listes").Range("C" & Lig).Value
With Sheets("presence")
.Range("A11").Value = Listes
If .Range("A11") <> "" then .PrintOut
End With
Next Lig
End Sub
Re : Cherche solution pour macro " imprimer en rafale tableau si ligne de liste non v
Bonjour,
Je reviens ici car j'ai un autre soucis (et oui encore un!!!).
Je voulais en fonction de la valeur d'une cellule de ma feuille "presence" qu'une image apparaisse, sinon une autre image appaitra à sa place.
Avec ce code j'y suis arrivée à l'ecran. Mais lorsque je lance l'impression en rafale il n'en tiens pas compte et imprime toujours la meme image quelle que soit la valeur dans la cellule.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("I15") = "CReg" Then
Shapes("Picture 82").Visible = True
Shapes("Picture 83").Visible = False
Else
Shapes("Picture 82").Visible = False
Shapes("Picture 83").Visible = True
End If
End Sub
En resumé il faudrait avant d'imprimer chacune des feuilles, il l'affiche à l'ecran l'imprime, affiche la suivante, l'imprime, etc, etc.
Re : Cherche solution pour macro " imprimer en rafale tableau si ligne de liste non v
Bonjour,
Je souhaite faire a priori la même opération, mais je ne sais pas trop modifier le code pour l'adapter à mon cas...
Pour expliquer mon fichier :
J'ai une feuille sur laquelle j'ai un tableau et des courbes qui sont modifiées en fonction du contenu d'une cellule (F1)
Cette cellule est variable via un menu déroulant, qui pointe sur une liste enregistrée (NOM_SST) dans le gestionnaire de noms.
L'idée est donc d'imprimer cette feuille pour l'ensemble des valeurs de la liste (soit environ une centaine...)
J'imagine qu'il faut sensiblement modifier le code ci-dessus mais jusqu'à quel point ?
Si je ne me trompe pas, il faut que je mette le nom de ma liste qqpart mais je maîtrise vraiment mal VB... Si quelqu'un peut m'éclairer...
Merci !
Code:
Sub Rafale
'
' Impression en rafale de toutes les feuilles comportant un nom
'
Dim Lig As Long, Listes As String
For Lig = 13 To 43
Listes = Sheets("Listes").Range("C" & Lig).Value
With Sheets("presence")
.Range("F1").Value = Listes
If .Range("F1") <> "" then .PrintOut
End With
Next Lig
End Sub
Re : Cherche solution pour macro " imprimer en rafale tableau si ligne de liste non v
Bon en fait en bidouillant un peu plus longtemps le code alternatif de Grand Chaman Excel, j'ai réussi !! 😎
Par contre, question subsidiaire, est-ce qu'il est possible d'imprimer l'ensemble des feuilles dans un unique fichier PDF ? 😕
Je m'explique : si je lance la macro avec impression PDF, ça m'imprime autant de documents que d'entrées dans ma liste NOM_SST, donc un peu galère... Je voudrais n'avoir qu'un seul fichier avec autant de pages que d'entrées dans ma liste. Est-ce réalisable ?
En complément, j'voudrais rajouter un userform pour demander confirmation avant de lancer l'impression (genre si on clique par erreur, ça lance pas les 100 pages d'impression avant confirmation...). Créer le userform avec les 2 boutons, jusque là, ça va, par contre, pour le codage, j'imagine qu'il faut l'intégrer à ma macro, et lui dire que si on clique sur oui, on fait la suite, si on clique sur non, on sort de la macro. Mais concrètement euh... Comment je fais ça ? 🙄
Merci beaucoup ! 🙂
Pour info, le code validé :
Code:
Sub Rafale()
'
' Impression en rafale de toutes les feuilles comportant un nom
'
Dim C As Range
For Each C In [NOM_SST]
If C.Value <> "" Then
Sheets("Mensuel").Range("F1") = C
Sheets("Mensuel").PrintOut
End If
Next
End Sub
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD