Fusionner trois macros
Bonjour le forum,
J'ai trois macros dans le même fichier :
- la 1ère sert à imprimer (en même temps) en pdf mes 3 onglets séparés, les 3 fichiers ainsi générés portent le nom de l'onglet plus le mois décalé plus l'année
- la 2ème et la 3ème impriment que les lignes écrites des 2 premiers tableaux.
Pour imprimer en pdf :
Sub ImprimerPDF()
Dim NbFeuilleAsInteger
annee = Year(Now)
Select Case Month(Now)
Case 1
mois = "décembre"
annee = annee - 1
Case 2
mois = "janvier"
Case 3
mois = "février"
Case 4
mois = "mars"
Case 5
mois = "avril"
Case 6
mois = "mai"
Case 7
mois = "juin"
Case 8
mois = "juillet"
Case 9
mois = "août"
Case 10
mois = "septembre"
Case 11
mois = "octobre"
Case 12
mois = "novembre"
End Select
Application.ScreenUpdating = False
On Error Resume Next
For i = 1 To Sheets.Count
If Sheets(i).Visible = -1 Then
NbFeuille = NbFeuille + 1
Sheets(i).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Philippe Compta\Fac FL\" & Sheets(i).Name & " " & Application.Proper(mois) & " " & Right(annee, 2) & ".pdf"
End If
Next i
Sheets(1).Select
Application.ScreenUpdating = True
MsgBox ("Les " & NbFeuille & " documents PDF viennent d'être créés et sont disponnibles dans le répertoire C:\Philippe Compta\Fac FL ")
End SubPour imprimer que les lignes écrites pour le 1er onglet :
Sub ImprimeAuto()
Dim i As Long
Application.ScreenUpdating = False
For i = 1 To 418
If Application.CountA(Rows(i)) = 0 Then Rows(i).Hidden = True
Next i
Application.ScreenUpdating = True
ActiveSheet.PrintOut
Application.ScreenUpdating = False
For i = 1 To 418
If Application.CountA(Rows(i)) = 0 Then Rows(i).Hidden = False
Next i
Application.ScreenUpdating = True
End SubPour imprimer que les lignes écrites pour le 2ème onglet :
Sub ImprimeAuto1()
Dim i As Byte
Application.ScreenUpdating = False
For i = 1 To 23
If Application.CountA(Rows(i)) = 0 Then Rows(i).Hidden = True
Next i
Application.ScreenUpdating = True
ActiveSheet.PrintOut
Application.ScreenUpdating = False
For i = 1 To 23
If Application.CountA(Rows(i)) = 0 Then Rows(i).Hidden = False
Next i
Application.ScreenUpdating = True
End SubCe que j'aimerais donc c'est pouvoir réunir ces macros afin d'en faire qu'une seule et qui tiendrait compte de la longueur de chaque tableau.
ci-joint fichier
D'avance merci pour votre aide
Bonjour,
J'ai déjà répondu à cette question dans un autre forum ! Comme visiblement ma réponse ne te satisfaisait pas (ou tu n'as pas essayé ?) je t'ai fait un remix. (en pièce jointe)
Toutefois -juste pour info- je tiens à préciser que ma solution précédente en deux macros était nettement meilleure : ça ne sert à rien de regrouper en une seule grande macro, ce que deux font très bien : S'il est très facile de comprendre et de modifier ultérieurement deux petites macros, il est souvent bien plus difficile de le faire sur une grande macro complexe et rebutante...
Bon dimanche
Bonjour Galopin01,
Tout d'abord je te remercie de ta réponse, ensuite excuses moi je n'avais pas vu que cette question avait déjà été traitée.
Encore merci et bon dimanche