Suivi des facturations sous Excel

Bonjour,

J’ai réussi à créer une facture qui m’enregistre la facture dans un dossier en fonction de l’année, ainsi qu’un sous-dossier portant le nom du client.

Je souhaiterai réaliser un suivi mensuel de mes facturations, en créant par exemple un fichier Excel avec un onglet récapitulatif de l’année (nommé 2007 pour cette année), ainsi que 12 onglets pour le suivi mensuel (nommés Janvier à Décembre ou 1 à 12). Je souhaiterai que dans chaque onglet soit automatiquement enregistré ma facture (le montant HT, nom du client et date de la facture) et avoir ainsi un total des factures pour chaque mois.

Cela a l’air plutôt compliqué, alors si vous voulez des précisions, n’hésitez pas.

Je veux faire cela sous Excel, en évitant si possible une BD Access, car j’ai dû mal à passer sous Access.

Merci d’avance.
Edité le 21/11/2007 à 08:49

Si ton problème n’est toujours pas résolu, alors je te propose déjà un morceau de code pour créer ce fichier EXCEL.
Il s’appellera Recapxxx.xls avec xxx étant l’année de la facture à enregistrer dans le classeur de suivi.
Par exemple ça donnera : Recap2007.xls pour cette année.


If Dir(Chemin2 & Format(Range("Date"), "yyyy") & "\Recap" & Format(Range("Date"), "yyyy") & ".xls", 0) = "" Then
    If Dir(Chemin1 & Format(Range("Date"), "yyyy") & "\Recap" & Format(Range("Date"), "yyyy") & ".xls", 0) = "" Then
        Workbooks.Add
        Sheets.Add before:=Sheets(1)
        Sheets(1).Name = Year(Now)
    
        For i = 2 To Sheets.Count
            Sheets(i).Visible = False
        Next i
    
        For i = 1 To 12
            Sheets.Add after:=Sheets(i)
            Sheets(i + 1).Name = Right("0" & i, 2)
        Next i
        ActiveWorkbook.SaveAs Chemin1 & Format(Range("Date"), "yyyy") & "\Recap" & Format(Range("Date"), "yyyy") & ".xls"
        ActiveWorkbook.SaveAs Chemin2 & Format(Range("Date"), "yyyy") & "\Recap" & Format(Range("Date"), "yyyy") & ".xls"
    Else
        Workbooks.Open Filename:=Chemin1 & Format(Range("Date"), "yyyy") & "\Recap" & Format(Range("Date"), "yyyy") & ".xls"
    End If
Else
    Workbooks.Open Filename:=Chemin2 & Format(Range("Date"), "yyyy") & "\Recap" & Format(Range("Date"), "yyyy") & ".xls"
End If

Ce code est à insérer tout à la fin de la macro nommée “Enregistrement”.

Fonctionnement :
Si le fichier de récap de l’année désirée existe dans le dossier de la-dite année, alors il est ouvert.
En revanche, s’il n’existe pas à cet endroit, alors il est cherché dans le dossier de bacukp de ladite année.
S’il existe à cet endroit, alors il est ouvert et s’il n’existe pas, alors un nouveau classeur est créé, les onglets sont créés et nommés, puis le fichier est sauvegardé aussitôt sous le nom Recapxxx.xls dans les deux dossiers (normal et backup).

Il faudra créer un bout de code (c’est en fait le gros morceau, mais ça devrait se faire ;)) pour écrire les données voulues aux endroits voulus dans le fichier.

Il faudra ensuite sauvegarder le fichier dans les deux dossiers (normal et backup).

Dis-moi si ça te convient ou non comme début et si tu veux une suite ou si ton problème est déjà résolu.
Edité le 15/07/2007 à 04:41

Ca a l’air pas mal du tout, mais j’obtiens quelques erreurs à déboguer avec ce code pour le moment.

Par exemple, sur la première ligne

If Dir(Chemin2 & Format(Range("Date"), "yyyy") & ""Recap"

Pas besoin de deux fois le " avant Recap, idem sur les lignes suivantes.
La macro créé bien ensuite un classeur avec l’onglet Recap et douze onglets, mais ça plante à cet endroit là. Il n’enregistre pas le fichier.

Pour l’instant, je n’ai pas réussi à avancer, j’ai juste fait le “squelette” du fichier Recap, que tu peux voir ici

La solution que tu proposes semble correspondre à ce que je veux.

Effecitvement, ça ne peut fonctionner avec deux fois les guillemets.
Bizarre, ils n’étaient pas doublé dans mon code dans EXCEL et le code fonctionnait chez moi.

[edit]
Je crois bien que j’ai compris le problème des doubles guillemets : c’est ce nouveau forum qui est moisi !!
Normalement ce qui est entre les balises code et /code n’est pas interprété par le forum, mais simplement retranscrit.
Il n’en est rien avec ce forum. Il a tout de même interprété le “back-slash” !!!
En fait, ce n’est pas " " R e c a p " qu’il faut lire, mais " \ R e c a p "
J’avoue que je n’avais pas relu le code une fois le copier/coller fait dans le forum. :frowning:
[/edit]
Edité le 15/07/2007 à 13:45

La ligne N° 6 qui est cachée est-elle indispensable ?

Non, la ligne 6 n’est pas indispensable. Par contre, j’ai retapé le code avec le “back-slash”, ça déconne toujours.

Tu as bien fait un copier/coller du code (au lieu de tout retaper) et remplacé la deuxième guillement consécutive par un back-slash ?

Quel message d’erreur as-tu ?

Sinon, suite à la réception de ton fichier Recap.xls, j’ai pensé à un truc : on peut faire plus simple.
En cas de non existence du fichier récapitulatif de l’année désirée, au lieu de créer un fichier de toute pièce comme je le faisais, on peut tout simplement ouvrir un fichier par défaut comme ton fichier Recap.xls.
L’idéal étant tout de même d’utiliser dans ce cas un fichier Recap.xlt afin d’être certain de ne jamais le modifier ni l’écraser.
Edité le 15/07/2007 à 16:06

Erreur sur cette partie, sur la dernière ligne :

For i = 1 To 12
 Sheets.Add after:=Sheets(i)
 Sheets(i + 1).Name = Right("0" & i, 2)
 Next i
 ActiveWorkbook.SaveAs Chemin1 & Format(Range("Date"), "yyyy") & "\Recap" & Format(Range("Date"), "yyyy") & ".xls"

Regarde la valeur de la variable Chemin1 au moment de l’erreur.
Mais si tu as bien mis le code à la fin de la macro “Enregistrement”, elle devrait avoir la bonne valeur.

Là aussi il y a une guillemet à la place d’un back-slach, mais ça doit encore être le forum qui merdoit. :frowning:
Edité le 15/07/2007 à 19:07

Oui, j’ai bien mis le back-slash. J’ai bien mis aussi ton code à la fin de ma macro.

As-tu regardé la valeur de la variable Chemin1 au moment de l’erreur ?

Comment je fais pour voir la valeur de cette variable ?

Quand tu as l’erreur, tu cliques sur “Debug” et tu posistionnes (sans cliquer) le curseur de la souris sur la variable dont tu veux connaitre la valeur.
Edité le 15/07/2007 à 20:23

La valeur Chemin1 est bien la bonne.

Ca y est, je crois que je viens de piger !

Le problème c’est la zone “Date” qui n’existe pas dans ce classeur…
Mais c’est très facile à corriger, simplement avec une variable.
Edité le 15/07/2007 à 23:31

Comment ?

J’ai modifié la macro “Enregistrement” pour ça, je te l’envoie ce soir (pas le temps maintenant, désolé).

Pas de soucis…y’a pas le feu, ma boîte ne démarre qu’en Septembre.

Je n’ai pas pu bosser dessus aujourd’hui :frowning: et j’ai encore unepetite modif à apporter.
Je te l’envois sans faute demain.

Tu lis tes MP ? :wink:

Bon, après un sacré coup de main de Jacky67, on a avancé.

Ceci me permet donc d’avoir chaque facture qui s’intègre dans un récapitulatif mensuel et annuel.

Vu que je suis une société de services à la personne, je vais faire une demande d’agrément afin que les particuliers déduisent 50% des prestations de leurs impôts.
Pour cela, je devrais fournir à chaque client, avant le 31 Janvier N le total des prestations de N-1 avec un détail de toutes les prestations effectuées (objet de la prestation, date et montant).

Si possible, j’aimerai bien avoir cela sous Excel quasiment automatisé.
Elle est pour le moment sous word mais je la ferai rapidement sous Excel.Mon gros problème, ça va être le tri des données. Je me doute que de faire le tout avec une BDD Access serait sans doute plus simple, mais je n’y pige rien dans Access…

Merci.
Edité le 21/11/2007 à 08:50