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.
ci dessous ces 3 macros

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 Sub

Pour 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 Sub

Pour 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 Sub

Ce 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

Rechercher des sujets similaires à "fusionner trois macros"