Création automatique de quittances de loyer annuel

Signaler
-
Messages postés
12907
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2021
-
Bonjour à tous,
J'ai un fichier excel qui me sert à faire des quittance de loyer et je doit crée le document a chaque fois, le convertir en PDF et l’"enregistrer sous" pour chaque mois.
J'aimerais savoir si il est possible de créé une macro permettant de générer à partir de la quittance de janvier, toutes les quittances de l'année en PDF et dans un dossier précis?
Merci a vous

10 réponses

Messages postés
12907
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2021
2 106
Oui bien sûr

Tu poste ton fichier sur mon-partage.fr, tu copies le lien créé et tu reviens le coller ici
Par contre si le problème vient du chemin du fichier je ne peux rien faire car je ne suis pas sur ton ordi
Qu'est ce qui ne fonctionne pas ?
As tu un message d'erreur et si oui lequel ?

Messages postés
12907
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2021
2 106
Bonjour

1) Créer la feuille nommée Janvier avec l'année dans une cellule précise (D3 dans mon exemple), le Nom du locataire dans une autre (D6 dans l'exemple) et le prénom dans une dernière (D7 dans l'exemple)
Remplir la feuille avec toutes les autres infos utiles

2) Macro à mettre dans un module de l'éditeur VBA

Sub création()

'*** Effacement de feuilles existantes
If Sheets.Count > 1 Then ' si plus  d'une feuille on les effacetoutes sauf la 1ere
Application.DisplayAlerts = False 'désactive message de confirmation suppression
For n = Sheets.Count To 2 Step -1 ' boucle sur les feuilles et efface
Sheets(n).Delete
Next
Application.DisplayAlerts = True ' réactive message confirmation
End If

'*** création d'un dossier au nom du locataire
nomloc = Range("D6") ' récupère nom du locataire en cellule D6 A MODIFIER pour adapter
prenomloc = Range("D7")  ' récupère prenom du locataire en cellule D6 A MODIFIER pour adapter
nomdossier = nomloc & " " & prenomloc '  crée nom du dossier à créer en concaténant les 2
'chemin du dossier A MODIFIER pour adapter
chemindossier = "D:\1aout2017\Quittances\" & nomdossier 
'* vérification si le dossier existe déjà ou non
If Len(Dir(chemindossier, vbDirectory)) > 0 Then
      dossierexiste = True
   Else
      dossierexiste = False
End If

If dossierexiste = False Then MkDir (chemindossier & "\") ' création du dossier s'il n'existe pas

 chemin = chemindossier & "\" ' chemin avec nom du dossier créé au nom du locataire

'***  création des 11 autres feuilles mensuelles par copie de celle de janvier puis enregistrement de la feuille en PDF
For n = 1 To 11 ' boucle 11 fois
'** création
Sheets("Janvier").Select
    Sheets("Janvier").Copy After:=Sheets(Sheets.Count) ' copie janvier
    ' choix du mois à inscrire dans la feuille
    mois = Application.WorksheetFunction.Choose(n, "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
     With Sheets("Janvier (2)")
     .Activate ' activation de la feuille créée
     .Range("C3") = mois ' change le mois en C3
     .Name = mois 'renomme la feuille avec le nom du mois
  '** pdf
    
     cheminfeuille = chemin & ActiveSheet.Name & .Range("D3") & ".pdf" ' chemin complet en ajoutant le mois et l'année située en D3 (A MODIFIER pour adapter)et l'extension pdf
     'exportation feuille en pdf
    .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        cheminfeuille, Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False ' pas d'ouverture du pdf après export
     End With
  '*** création du pdf pour janvier selon le même principe
     With Sheets("Janvier")
     .Activate
     cheminfeuille = chemin & ActiveSheet.Name & .Range("D3") & ".pdf"
     .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        cheminfichier, Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
     End With
Next

If dossierexiste = False Then mes = " Dossier " & nomdossier & " et 12 PDF créés" Else mes = "12 PDF créés dans le dossier " & nomdossier
MsgBox mes

    
End Sub


Modifier le chemin pour la création du sous-dossier au nom du locataire et l'enregistrement des PDF pour l'adapter à ton cas

3) Une fois la feuille janvier remplie et la macro en place lancer la macro (Développeur - Macros - création_ Executer

La macro commence par effacer toutes feuilles qui existeraient après la 1ere (celle de janvier) ceci afin de permettre de recréer autant de quittances mensuelles que de locataires en ayant seulement à modifier la feuille Janvier

La macro vérifie ensuite si un dossier au nom et prénom du locataire existe déjà ou non à l'endroit indiqué, s'il n'existe pas elle le créé (tu pourras ainsi mettre plusieurs années dans le même dossier)

Enfin la macro copie 11 fois Janvier en changeant le mois et enregistre chaque feuille en PDF dans le dossier locataire puis enregistre janvier en pdf (les feuilles sont enregistrées sous le nom mois + année)

A adapter selon tes besoins

Cdlmnt
Via


merci Via55,
j'ai comme demandé copier et modifier la macro mais ça ne fonctionne pas !
serait il possible de t'envoyer le fichier pour que tu regarde ?
si oui comment faire ?
merci encore
Via55,
Avant tout je te remercie de te pencher sur mon pb.
je pb est peux etre sur le chemin, mais je n'en suis vraiment pas sur car la macro est bien trop complexe pour moi et je ne connais pas toutes les fonctions que tu utilise.
l'erreur est sur la ligne :If dossierexiste = False Then MkDir (chemindossier & "\") ' création du dossier s'il n'existe pas

Je met le lien si tu veux bien regarder
https://mon-partage.fr/f/IeKSGvLO/
merci et bonne soirée
Messages postés
12907
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2021
2 106
Il manque un \dans le chemindossier
"C:\Users\wilfried\Desktop\Quittance de loyer" & nomdossier

"C:\Users\wilfried\Desktop\Quittance de loyer\" & nomdossier

Bonne soirée aussi
j'ai ajouter le \.
Le dossier c'est créé et après toujours le "bug" sur la même commande (MkDir (chemindossier & "\") ' création du dossier s'il n'existe pas)

j'ai donc testé de mettre un o entre les "" (...........&"o") pour voir et un deuxieme fichier été créé avec un O a la fin du nom :).Mais maintenant je suis bloqué ( :.5ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
cheminfeuille, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False ' pas d'ouverture du pdf après export


Si je remet un \ a la place du O je rebloque a ( MkDir......)

Et je ne sais pas si c'est normal mais chaque fichier créé ne peux être supprimé.

Cela fonctionne parfaitement chez toi ?

Merci
Messages postés
12907
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2021
2 106
Oui cela fonctionne bien chez moi
J'ai testé bien sûr avant de poster la macro

Tu as des adresses que tu n'as pas modifié dans la macro (prenom du locataire par ex)
si tu n'as besoin du prenom s'il est dans la même cellule que le nom tu supprimes la ligne prenomloc et le & prenom loc après

dans les lignes avec
cheminfeuille = chemin & ActiveSheet.Name & .Range("D3") & ".pdf"
D3 est la cellule du mois, toi il est en J5

La première feuille qui est copié devait être celle de Janvier et toi ici tu l'as appelé Quittance

Pas besoin de liste déroulante pour le mois, Dans cette feuille Janvier il doit être inscrit janvier et pour les 11 feuilles créées par la macro c’est la macro qui mets le mois dans la cellule de là feuille et qui renomme la feuille

Fais les rectifications et on verra si ça vient de là


bonjour via55,
Je pense avoir fais les modification comme tu me l'a demandé
Maintenant:
-Création du répertoire avec le nom du locataire --> ok
-Création de la feuille "février" --> ok

après bug a :.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
cheminfeuille, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False ' pas d'ouverture du pdf après export


Ne faudrait il pas avoir un logiciel pour enregistrer en PDF que je n'ai pas ?
A chaque fois qu'un fichier est créé, apres il m'est impossible de le supprimé (il n'existe plus dans c:/utilisateur/............. vérifiez son emplacement actuel et réessayez) cela est il normale ?

Je remet le lien du fichier modifié si tu veux y jeter un œil: https://mon-partage.fr/f/2QcWxJdO/

Merci a toi et bonne journée
Messages postés
12907
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2021
2 106
Bonjour

Désolé je ne vois pas ce qui cause le bug
j'ai testé ton fichier en changeant uniquement le chemin pour l'adapter à mon ordi et tout fonctionne chez moi, j'ai bien le sous dossier créé et les 12 PDFdedans

Essaie de faire directement à partir d'une feuille Enregistrer sous en choisissant PDF au lieu de Classeur Excel dans la liste déroulante pour voir si l’enregistrement en PDF fonctionne bien

Cela provient peut-être de version d'Excel ou de ta configuration (si tu es sous Mac par exemple, les Mac posent parfois des problèmes)

Si c'est le cas reviens poser la question sous une forme style Je n'arrive pas à enregistrer en PDF en indiquant ta version d'Excel et ta configuration, tu trouveras quelqu'un de plus calé que moi pour résoudre la question

Cdlmnt
Via
Salut Via55,
Lorsque je fais enregistré sous, je n'ai pas la possibilité d'enregistrer en PDF.
Ça vient surment de là.
Quelle version de office utilise tu?
Moi c'est office professionnel plus 2007.
9
Messages postés
12907
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2021
2 106
Re

J'ai Excel 2007 également
voici un fichier excel avec l'image de ma fenêtre Enregistrer sous
https://mon-partage.fr/f/sHzbvYlK/

C'est bon maintenant....je peux enregistrer sous PDF au même titre que toi :-)
Peux tu m'envoyer ton fichier qui fonctionne que je fasse un test sur mon PC ?
Merci a toi et bon WE
Messages postés
12907
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2021
2 106
C'est le dernier fichier que tu m'as envoyé, je n'y ai rien changé sauf le chemin