Cherche solution pour macro " imprimer en rafale tableau si ligne de liste non vide"

Sarmat31

XLDnaute Nouveau
Bonjour :),
Je précise que je débute en VBA.

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 :eek:.

Merci d’avance à toutes les personnes qui essayeront de m’aider.
 

Grand Chaman Excel

XLDnaute Impliqué
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

A+
 

Sarmat31

XLDnaute Nouveau
Re : Cherche solution pour macro " imprimer en rafale tableau si ligne de liste non v

Merci Grand Chaman Excel,

J'avais deja essayé cette solution , mais ça ne fonctionne pas :(.
If .Range("A11") = "" then .PrintOut

Ca m'affiche le tableau avec le dernier nom de la liste "noms_prenoms" (celui de la ligne 43) dans mon tableau mais ça n'imprime même pas :(.
 

Grand Chaman Excel

XLDnaute Impliqué
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

A+
 

Sarmat31

XLDnaute Nouveau
Re : Cherche solution pour macro " imprimer en rafale tableau si ligne de liste non v

Super Merci beaucoup la ça marche ;), j'avais du moi aussi faire la meme erreur:D.

Encore merci et continuez comme ça les pro d'excel, on a besoin de vous merci, merci merci :cool:.
 

Sarmat31

XLDnaute Nouveau
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.

Quelqu'un a-t-il une solution??
Merci d'avance.
 

Marie-CoinCoin

XLDnaute Nouveau
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

Edt : si besoin je peux faire un fichier test ! :)
 

Marie-CoinCoin

XLDnaute Nouveau
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 !! :cool:

Par contre, question subsidiaire, est-ce qu'il est possible d'imprimer l'ensemble des feuilles dans un unique fichier PDF ? :confused:
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 ? :rolleyes:

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
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 206
dernier inscrit
diambote