Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

laptitebene

XLDnaute Nouveau
Bonsoir à tous et à toutes,

Après plusieurs semaines de recherches infructueuses sur le net, je me lance à m'inscrire sur ce forum afin de poser clairement ma question.

J'ai créé récemment ma petite entreprise et les logiciels proposés pour la gestion et la comptabilité ne me conviennent pas.

Etant novice en VBA, je cherche beaucoup.

J'ai établi un modèle de devis sous excel (version 2003), ai trouvé diverses formules VBA afin d'attribuer un numéro mais je ne parviens pas à l'automatiser sur un nouveau document à l'ouverture du modèle initial après enregistrement et fermeture du précédent (exemple : demain ouvrir le devis 1 et deux jours après ouvrir mon modèle directement en 2 sans rechercher le dernier numéro attribué).

Je voudrai insérer une macro workbook open (il me semble que c'est le plus judicieux) avec un numéro un peu complexe : DC/001/2012 (le numéro 001 devient le 002 et ainsi de suite).

J'espère avoir été relativement claire, n'étant pas très douée pour les explications écrites.

Au besoin, demandez-moi des précisions.

Merci beaucoup d'avance de vos réponses

Béné
 
Dernière édition:

Eric 45

XLDnaute Occasionnel
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Bonsoir à tous
Bonsoir Béné


Si j'ai bien compris, adapte ceci :
Option Explicit

Sub nom_fichier() ' exemple de fichier : DC-001-2012

Dim lefichier As String
Dim mavar As Integer
Dim monfichier As String
Dim numfichier As String

mavar = 0

lefichier = Dir("DC-*.xls")
Do Until lefichier = ""
If Mid(lefichier, 4, 3) > mavar Then mavar = Mid(lefichier, 4, 3)
lefichier = Dir
Loop

Select Case Len(CStr(mavar))
Case 1: numfichier = "00" & mavar + 1
Case 2: numfichier = "0" & mavar + 1
Case 3: numfichier = mavar + 1
End Select

monfichier = "DC-" & numfichier & "-2012.xls"
MsgBox monfichier
End Sub
Bien entendu, il faut que tous les fichiers soient dans le même répertoire.
Tu ne peux pas avoir + de 999 fichiers.
Attention, tu ne dois pas avoir le droit d'avoir des "/" dans les noms de fichiers.

Eric
 

laptitebene

XLDnaute Nouveau
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Bonjour à tout le monde,

Merci beaucoup Eric de m'avoir répondu aussi rapidement.

J'ai copié la formule dans mon fichier excel et elle ne fonctionne pas :-(.

Je vous joins le fichier je pense que ce sera beaucoup plus parlant (il est au format .xls je n'ai pas pu joindre le modèle d'origine).

Par rapport aux enregistrements, il est bien entendu que tous les devis seront dans le même dossier, est-ce cela que vous avez voulu me dire ?

Juste une petite question supplémentaire. Est-il possible de basculer automatiquement du devis créé à mon fichier facture par un simple bouton (que j'aurai créé au préalable) en reprenant les coordonnées du client et les prestations?

Merci encore de vos réponses et de l'attention que vous portez à mes questions.

Béné
 
Dernière édition:

Eric 45

XLDnaute Occasionnel
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Bonjour à tous
Bonjour Béné

Je t'ai envoyé un MP, lis le rapidement.

Pour ton pb, voici le code :

Code:
Option Explicit

Private Sub Workbook_Open()
Dim lefichier As String
Dim mavar As Integer
Dim monfichier As String
Dim numfichier As String

mavar = 0

lefichier = Dir("DC-*.xls")
Do Until lefichier = ""
If Mid(lefichier, 4, 3) > mavar Then mavar = Mid(lefichier, 4, 3)
lefichier = Dir
Loop

Select Case Len(CStr(mavar))
Case 1: numfichier = "00" & mavar + 1
Case 2: numfichier = "0" & mavar + 1
Case 3: numfichier = mavar + 1
End Select

Range("A3").NumberFormat = "@"     'format texte
Range("A3") = numfichier
End Sub
J'ai mis la cellule "A3" en texte, pour avoir "004", à toi d'adapter.
Pour la 2ème question, oui c'est possible, il faudrait plus de renseignements.

Eric
 

laptitebene

XLDnaute Nouveau
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Merci beaucoup pour tout. J'ai modifié mon précédent message comme tu m'as indiqué. Merci encore.

Je dois pas procéder correctement, quand j'enregistre mon premier devis et que je rouvre mon modèle, il est toujours à 001 (et je n'ai plus DC et 2012) désolée d'insister.

J'avais trouvé la macro suivante sur le net mais j'avais le même problème d'incrémentation :

Private Sub Workbook_Open()
With Sheets("Facture")
If .Range("A3") = "" Then
.Range("A3") = "FC/001/" & Year(Date)
Else
.Range("A3") = Format(Val(Left(.Range("A3"), 3)) + 1, "FC/000") & Mid(.Range("A3"), 4, 20)
End If
End With
End Sub


Pour ma transformation devis/facture, quelles sont les précisions que je pourrai t'apporter (mes deux fichiers sont basés sous exactement le même format)?

Merci beaucoup du temps que tu me consacres.
 

Eric 45

XLDnaute Occasionnel
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Re

Je ne vois pas pourquoi cela ne fonctionne pas chez toi.
Je joins un fichier.

Pour la 2ème question, peux-tu déposer un fichier "facture" sans données perso, car je ne comprends pas, dsl.

Eric
 

Fichiers joints

laptitebene

XLDnaute Nouveau
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

:confused:
non décidément ca ne me change pas mes numéros au fur et à mesure que j'ouvre mon modèle.
Comme tu m'as dit, je mets tous les fichiers tirés de ce modèle dans le même dossier.
J'ai fait une incrémentation sous word pour une autre utilité à la différence que quand j'ouvre un nouveau document de mon modèle word, ca me demande si je veux enregistrer les modifications sous le modèle également pour que ça puisse après passer de 1 à 2 automatiquement et ainsi de suite.

Serait-ce un défaut d'enregistrement de la base excel ?

Je te joins mon document facture (sans données :D)

Merci beaucoup
 

Fichiers joints

Eric 45

XLDnaute Occasionnel
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Re

Une nouvelle proposition :

Tu déclares en haut :
Code:
Dim chemin as String
et tu ajoutes :
Code:
' après mavar=0 : 
 chemin = ThisWorkbook.Path
et tu modifies la ligne suivante en :
Code:
lefichier = Dir(chemin & "\DC-*.xls")
Pour la facture, si j'ai compris : tu veux ouvrir le fichier "facture" et copier la plage A9:G23 du devis sur la facture par un bouton sur le fichier devis ??????
Code:
Sub ouvre_facture_copie()
Dim chemin As String
Range("A9:G23").Copy
chemin = ThisWorkbook.Path
Workbooks.Open Filename:=chemin & "\facture test.xls"
Range("A9").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
Range("A9").Select
End Sub
Eric
 

laptitebene

XLDnaute Nouveau
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Holà

Je crois que pour la facture je vais laisser tomber parce qu'en même temps je voudrai que ca m'incrémente les numéros par rapport aux précédentes enregistrées.

Pour la macro numéro, n'y a-t-il pas une option ou un paramètre à cocher (ou à décocher) qui bloquerai à 1 ?
J'ai modifié comme indiqué et cela ne fonctionne toujours pas, vraiment désolée d'insister.

Béné
 

Bruce68

XLDnaute Impliqué
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Bonsoir Laptitebene et le forum

Je te joint un fichier tout pret à adapter sans faire appel a un formulaire provenant d'ailleurs.
 

Fichiers joints

Eric 45

XLDnaute Occasionnel
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Re

Une petite question : quel est le niveau de sécurité des macros : faible, moyen, élevé ou très élevé ?

Eric
 

laptitebene

XLDnaute Nouveau
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Bonjour à tous,

Merci Bruce pour le fichier, je suis en train de le potasser et de voir pour le mettre au goût du mien.

Je vous dirai ça quand ce sera activé.

Pour répondre à ta question Eric, les macros sont au niveau moyen, puisque j'ai vu sur le net qu'il ne fallait pas les mettre en faible compte tenu qu'elles sont susceptibles de véhiculer des virus.

Je suis en train d'examiner le fichier que m'a transmis Bruce mais il semble que le numéro attribué soit noté à la main.

Merci en tout cas et si tu penses à quelque chose d'autre...

Béné
 

laptitebene

XLDnaute Nouveau
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Re

Je suis en train d'étudier le fichier de Bruce, c'est très très bien fait, je pense m'en inspirer pour la plupart de mes données.

Je viens de voir que le numéro s'incrémente automatiquement à partir du moment où on choisit "facture" ou "devis".

Je vais faire la même chose sur mon modèle que j'ai déjà complètement fini (en espérant y parvenir).

S'il y avait des questions, je n'hésiterai pas à faire appel à vous.

Merci encore pour le temps que vous m'avez consacré et l'attention que vous m'avez portée.

J'espère à bientôt.

Béné
 

laptitebene

XLDnaute Nouveau
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Re bonsoir,

J'ai complètement modifié le document qui m'a été transmis par Bruce dont je le remercie vivement, c'est une bien meilleure idée que ce que j'avais envisagée au début.

Cependant, ayant moins de ligne sur mon formulaire (première feuille), j'ai modifié la macro en ce sens et j'ai une erreur qui se présente à savoir :

erreur d'exécution 1004
la méthode "range" de l'objet "_global" a échoué

puis il m'ouvre vba et me surligne en jaune la mention

Arr() = Range (RefL)

Si vous avez un petit tuyau pour me débloquer, c'est la seule chose qui ne fonctionne pas correctement.

Merci beaucoup et bonne soirée

Béné
 

Bruce68

XLDnaute Impliqué
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Bonsoir laptitebene et le forum

Peux tu me renvoyer ton fichier car si tu as modifié le nombre de ligne du formulaire il y a quelques modifs à faire dans la macro
 

laptitebene

XLDnaute Nouveau
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Bonjour tout le monde
Bonjour Bruce,

Merci de ta réponse

Je joins le fichier dont s'agit, normalement j'ai tout mis en place il ne me manque plus que ce petit détail (et pas des moindres).

Aussi, je voudrai savoir s'il est possible d'intégrer des listes déroulantes dans le formulaire de création client par exemple dans le champ "type" pour pouvoir choisir artisan, commerçant, particulier ....

Question de curiosité, que signifie les deux cases J2 dans récup devis et récup facture, qui sont d'ailleurs différentes sur les 2.

Merci beaucoup du temps que vous me consacrez et que vous me faites gagner, vos conseils sont précieux.

Béné
 

Fichiers joints

laptitebene

XLDnaute Nouveau
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Re

Juste une dernière toute petite question pour optimiser mon fichier.

Est-il possible quand je créé un client d'automatiser l'incrémentation du numéro de client sur mon formulaire ?

Merci beaucoup pour toutes les réponses que tu m'apportes.

Béné
 

Bruce68

XLDnaute Impliqué
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

bonjour petitebene et le forum

comme tu as changé le formulaire tous les adressages ne sont plus valables dans la macro de sauvegarde.
il faudrait savoir ce que tu vas enregistrer dans liste de factures ou de devis (c'est identique) les cellules et les lignes.
Toutes les Lignes du formulaire avaient un Nom= Lig_1 Lig_2 etc ....
En attenda
 

Bruce68

XLDnaute Impliqué
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

bonjour petitebene et le forum

comme tu as changé le formulaire tous les adressages ne sont plus valables dans la macro de sauvegarde.
il faudrait savoir ce que tu vas enregistrer dans liste de factures ou de devis (c'est identique) les cellules et les lignes.
Toutes les Lignes du formulaire avaient un Nom= Lig_1 Lig_2 etc ....
 

laptitebene

XLDnaute Nouveau
Re : Automatiser l'incrémentation d'un fichier devis à partir d'un modèle .xlt

Re bonjour,

J'ai renommé toutes les lignes de 1 à 15 mais maintenant c'est une autre formule qui coince :

NFacture = Mid(Cells(6, 2), 4, 3) - 1

Sur celle-ci, j'avais juste modifié le numéro de cellule (6, 2) parce que mon numéro n'est pas au même endroit que ton modèle mais à priori il doit y avoir encore des bugs.

C'est bien compliqué excel :eek:

Merci de ton aide

Béné
 

Discussions similaires


Haut Bas