XL 2013 Copier des plages variables en pdf

Luc MOUNY

XLDnaute Junior
Bonsoir à tous,
J'ai posé ma casquette de président d'associations (2), pour celle de syndic bénévole d'une petite copropriété savoyarde : Et oui ! il faut bien s'occuper...

J'ai fait un programme qui me permet la gestion globale et quasi automatique de la copropriété, les convocations aux A G, la rédaction des PV, l'envoi des appels de fonds, l'envoi des quittances et tout ce que la loi nous impose.

Mon programme est truffé de macros, une petite centaine dont 24, rien que pour l'édition des exercices et prévisionnels qui accompagnent les convocations.

Ma question : serait-il possible de remplacer ces 24 macros par une seule, ce qui allègerait considérablement mon programme.

Je joins un classeur test avec quelques macros, pour imager mon propos.

Si ce n'était pas possible, ce ne serait pas grave en soi, car les macros annuelles fonctionnent parfaitement, mais j'avoue que l'allègement des macros serait bénéfique au fonctionnement de l'ensemble.

Je vous remercie par avance

Luc
 

Pièces jointes

  • Classeur_Test_LM.xlsm
    47.9 KB · Affichages: 21

danielco

XLDnaute Accro
Bonjour,

Essaie :

VB:
Sub Previsionnel_AG()
'
'

'
Dim Rep As Integer, An As Variant, Ligne As Long
    
    Rep = MsgBox("Vous allez enregistrer les Budgets n-1, n, n+1, n+2. Voulez-vous continuez ?", vbYesNo + vbQuestion, "Luc MOUNY")
    If Rep = vbYes Then
      An = InputBox("Entrez l'année à traiter")
      If An = "" Then Exit Sub
      If Not IsNumeric(An) Then
        MsgBox "Saisie incorrecte"
        Exit Sub
      End If
      Sheets("Budgets").Select
'      ActiveWindow.SmallScroll Down:=0
      An = CInt(An)
      Ligne = Application.Match(An, [I:I], 0)
      Union(Range("A" & Ligne & ":O" & Ligne + 121), Range("A" & Ligne + 132 & ":O" & Ligne + 142), _
        Range("A" & Ligne + 198 & ":O" & Ligne + 208)).Select
      Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
          "G:\Les Pinsons\Syndic\Prévisionnels AG 2019.pdf", Quality:=xlQualityMinimum, _
          IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
          False
              Else
          ' ici le traitement si réponse négative
          ' ...
    End If
End Sub

Sous réserve que le nombre de lignes soit fixe quelle que soit l'année.

Cordialement.

Daniel
 

Luc MOUNY

XLDnaute Junior
Bonjour,

Essaie :

VB:
Sub Previsionnel_AG()
'
'

'
Dim Rep As Integer, An As Variant, Ligne As Long
   
    Rep = MsgBox("Vous allez enregistrer les Budgets n-1, n, n+1, n+2. Voulez-vous continuez ?", vbYesNo + vbQuestion, "Luc MOUNY")
    If Rep = vbYes Then
      An = InputBox("Entrez l'année à traiter")
      If An = "" Then Exit Sub
      If Not IsNumeric(An) Then
        MsgBox "Saisie incorrecte"
        Exit Sub
      End If
      Sheets("Budgets").Select
'      ActiveWindow.SmallScroll Down:=0
      An = CInt(An)
      Ligne = Application.Match(An, [I:I], 0)
      Union(Range("A" & Ligne & ":O" & Ligne + 121), Range("A" & Ligne + 132 & ":O" & Ligne + 142), _
        Range("A" & Ligne + 198 & ":O" & Ligne + 208)).Select
      Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
          "G:\Les Pinsons\Syndic\Prévisionnels AG 2019.pdf", Quality:=xlQualityMinimum, _
          IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
          False
              Else
          ' ici le traitement si réponse négative
          ' ...
    End If
End Sub

Sous réserve que le nombre de lignes soit fixe quelle que soit l'année.

Cordialement.

Daniel

Bonjour danielco,

Bonjour le forum,

Un grand merci, la macro fonctionne bien, c'est ce que j'espérais, puisque la loi m'oblige à produire en accompagnement des convocations, Exemple : pour une AG de 2020, le budget 2019, celui qui doit être validé en 2020 et les prévisionnels de 2021 et 2022.

Oui, effectivement, le nombre de ligne est identique, d'une année sur l'autre.

Je relève un détail, Je dois entrer dans l'InputBox, l'année qui précède l'AG. J'aurai préféré entrer l'année de l'AG.

Il me reste à la tester sur mon programme grandeur nature.

Donc comme toujours, les réponses sur excel-Download sont pertinentes.

Merci de vous être penché sur ma demande.
Luc
 

patricktoulon

XLDnaute Barbatruc
bonjour
ce System devra etre mis a jour dans la feuille2 constamment
ca n'est pas une bonne méthode et plutôt lourde
pour quoi ne pas faire une feuille par année qui commencerait paar le clos de l'année précédente
et a defaut d'utiliser des tableaux structurés nommer tes plage tableaux
pour reg to pdf ca serait simple


chemin="c:\mondossier\"
nom de la plage.select
nom=selection.name
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
chemin & nom &".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False

le tout piloté par un seul inputbox référençant les plages nommées

ce que tu fait dans feuille2 mais dans les names

laisse moi 20 minute pour te faire un exemple
 

Luc MOUNY

XLDnaute Junior
Je teste sur mon fichier, J'ai une anomalie sur 2020 et 2021, et peut-être 2022, ensuite jusqu'à 2040 ça a l'air de coller pile poil, j'essaie de comprendre, je reviendrai à l'occasion.
Merci
Luc

Bonsoir,
Je teste sur mon fichier, J'ai une anomalie sur 2020 et 2021, et peut-être 2022, ensuite jusqu'à 2040 ça a l'air de coller pile poil, j'essaie de comprendre, je reviendrai à l'occasion.
Merci
Luc
bonjour
ce System devra etre mis a jour dans la feuille2 constamment
ca n'est pas une bonne méthode et plutôt lourde
pour quoi ne pas faire une feuille par année qui commencerait paar le clos de l'année précédente
et a defaut d'utiliser des tableaux structurés nommer tes plage tableaux
pour reg to pdf ca serait simple


chemin="c:\mondossier\"
nom de la plage.select
nom=selection.name
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
chemin & nom &".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False

le tout piloté par un seul inputbox référençant les plages nommées

ce que tu fait dans feuille2 mais dans les names

laisse moi 20 minute pour te faire un exemple

Bonsoir à tous les deux,

Tout d'abord danielco,

Après pas mal de tests, il s'avère qu'il y ait un petit problème que je n'arrive pas à résoudre, pour l'AG de 2019, j'ai bien l' exercice 2018, et 2019 les prévisionnels 2020 et 2021, mais les pages sont tronquées, idem pour l'AG 2020. J'ai vérifié le nombre de lignes, je ne vois pas d'écart.

Pour les exercices suivants, si j'entre 2020, j'ai 2020 2021 et 2022, il manque 2019 et ainsi de suite jusqu'à 2040.

Je chercherai dans le courant de la semaine, et reviendrai si nécessaire.

Pour patricktoulon,

Merci pour votre contribution, mais mon programme est quasiment automatisé, comme dit plus haut, une centaine de macros, toutes les éditions sont programmées et personnalisées jusque 2040, néanmoins, j'attends avec intérêt votre proposition. Si celle-ci peut faciliter la tâche, je suis intéressé.

Merci à vous deux
à bientôt sur le forum, j'espère
 

Luc MOUNY

XLDnaute Junior
Bonsoir,



Bonsoir à tous les deux,

Tout d'abord danielco,

Après pas mal de tests, il s'avère qu'il y ait un petit problème que je n'arrive pas à résoudre, pour l'AG de 2019, j'ai bien l' exercice 2018, et 2019 les prévisionnels 2020 et 2021, mais les pages sont tronquées, idem pour l'AG 2020. J'ai vérifié le nombre de lignes, je ne vois pas d'écart.

Pour les exercices suivants, si j'entre 2020, j'ai 2020 2021 et 2022, il manque 2019 et ainsi de suite jusqu'à 2040.

Je chercherai dans le courant de la semaine, et reviendrai si nécessaire.

Pour patricktoulon,

Merci pour votre contribution, mais mon programme est quasiment automatisé, comme dit plus haut, une centaine de macros, toutes les éditions sont programmées et personnalisées jusque 2040, néanmoins, j'attends avec intérêt votre proposition. Si celle-ci peut faciliter la tâche, je suis intéressé.

Merci à vous deux
à bientôt sur le forum, j'espère


Re bonsoir danielco,

J'ai testé et re testé, J'ai toujours le même problème que je n'arrive pas à résoudre, Si j'entre 2019, j'ai bien 2018, 2019 2020 et 2021, mais il manque une ligne à Banque. Même chose pour 2020. Ici, j'ai n-1, n, n+1 et n+2

Bizarre; mais à partir de 2021, je perds l'année précédent l'AG, 2020, par contre, j'ai 2021, 2022, 2023 et (2024 qui est en trop),
il semble qu'il y ait eu glissement à partir de 2021, et c'est la même chose jusqu'à 2040. A partir de 2021, j'ai n, n+1, n+2, n+3. Par contre ici, j'ai bien les lignes complètes

Je joins un nouveau classeur test, qui a exactement le même problème que mon programme complet, ainsi que les tests pdf 2020 et 2021

A bientôt j'espère et merci d'avance.
Luc
 

Pièces jointes

  • Classeur test2 LM.xlsm
    72.3 KB · Affichages: 3
  • Prévisionnels AG 2020.pdf
    202 KB · Affichages: 1
  • Prévisionnels AG 2021.pdf
    202.4 KB · Affichages: 1

patricktoulon

XLDnaute Barbatruc
re
voila
un exemple
regarder les names
lancer la sub test_tableau_to_pdf
demo3.gif
 

Pièces jointes

  • Classeur_Test_LM.xlsm
    55.4 KB · Affichages: 7

Luc MOUNY

XLDnaute Junior
re
voila
un exemple
regarder les names
lancer la sub test_tableau_to_pdf
Regarde la pièce jointe 1046307
Bonjour patricktoulon,

Merci pour votre participation,

J'ai un message d'erreur au lancement, copies jointes.

Mon propos, c'est d'avoir dans le même pdf, les tableaux de l'année de l'AG : n-1, n, n+1 et n +2.

Il semble que votre macro imprime en pdf séparément les différents tableaux. Vu le nombre de pièces à fournir en accompagnement des convocations, c'est plus pratique, et cause de moins de sources d'oubli.

De plus votre macro semble imprimer toujours le même tableau ? quelque soit le n° entré dans l'InputBox. Est-ce le résultat de l'erreur au lancement ?

erreur2.JPG
erreur2.JPG
erreur2.JPG
 

Luc MOUNY

XLDnaute Junior
Si tu veux, je peux faire -1 sur l'année.

Daniel
Bonjour danielco,

Je reviens vers toi,pris par d'autres occupations, j'avais un peu (même beaucoup) laissé de coté mon problème. J'ai trouvé d'où venait l'erreur, j'avais des formules cachées, dans le colonne I:I, qui perturbaient la bonne marche de la macro. maintenant elle est fonctionnelle en totalité., Je cherche toujours la solution, car quand j'entre l'année de l'assemblée, j'aurai souhaité avoir l'année précédente, celle qui doit être votée lors de l'assemblé. Si tu pouvais m'aiguiller ? ce serait top.
Merci d'avance
Luc
 

patricktoulon

XLDnaute Barbatruc
re
un exemple simple qui enregistre 3 plages dans un pdf de 3 pages
VB:
Sub test()
Range("C3:E6,B11:D18,G10:I14").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\polux\Desktop\form1 et form 2.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
End Sub
 

Luc MOUNY

XLDnaute Junior
re
un exemple simple qui enregistre 3 plages dans un pdf de 3 pages
VB:
Sub test()
Range("C3:E6,B11:D18,G10:I14").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\polux\Desktop\form1 et form 2.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
End Sub

Merci particktoulon,

Mon problème est résolu à 99 %, la macro que m'a proposé danielco, est fonctionnelle, je l'ai testé jusqu'à 2045, mon seul souci, c'est que dans l'InputBox, il me faut rentrer l'année qui précède l'Assemblée générale, au lieu de l'année de l'A G. J'ai résolu en mettant un message d'alerte, dans l'InputBox, qui me le rappelle. Cette macro unique me remplace effectivement 26 macros annuelles. J'ai modifié la macro, pour que la sauvegarde en pdf se fasse avec en plus du nom, l'année en cours.

Merci à vous deux de vous être intéressés à mon problème.

Bonnes fêtes de fin d'année à vous deux et à tout ceux qui me liront.

Luc