Numerotation automatique avec remise à zero par année.
Résolu
agri63
-
agri63 Messages postés 6 Statut Membre -
agri63 Messages postés 6 Statut Membre -
Bonjour,
Me revoilà, je suis agriculteur; J' ai fait une trame pour réaliser mes factures.
Gràce à internet, j 'ai réussi à mettre en place une macro pour l' impression en PDF.
Le soucis c 'est le numéro de facture... Il me faut qu' il soit automatique avant chaque impression et une remise à zéro chaque année civile...
Le format que je souhaite utiliser est 16001, 16002...., 17001,17002..., 18001,18002...
16 correspond à 2016, 17 à 2017, etc...
Merci par avance de votre aide...
Me revoilà, je suis agriculteur; J' ai fait une trame pour réaliser mes factures.
Gràce à internet, j 'ai réussi à mettre en place une macro pour l' impression en PDF.
Le soucis c 'est le numéro de facture... Il me faut qu' il soit automatique avant chaque impression et une remise à zéro chaque année civile...
Le format que je souhaite utiliser est 16001, 16002...., 17001,17002..., 18001,18002...
16 correspond à 2016, 17 à 2017, etc...
Merci par avance de votre aide...
6 réponses
-
Bonjour,
Il faut que tu définisses un emplacement pour ce numéro de facture (exemple : cellule A1)
Ensuite, tu saisis le numéro initial (exemple : 16001).
Et pour incrémenter le numéro de facture :Sub Test() Dim Année As Integer Année = Format(Date, "yy") If Année = Left(Range("A1").Value, 2) Then Range("A1") = Année & Format(CInt(Right(Range("A1").Value, 3)) + 1, "000") Else Range("A1") = Année & "001" End If End Sub
A+-
-
A chaque changement d'année, le numéro d'ordre est réinitialisé à 001.
Pour verrouiller la cellule, il faut protéger la feuille.
Voici un lien avec quelques exemples et explications :
http://boisgontierjacques.free.fr/pages_site/protection.htm
A+ -
Bonjour agri63,
Sur ta feuille où il y a le N°, tu dois faire ceci pour toutes les cellules où tu dois
saisir des données : clic droit dessus, choisis dans le menu contextuel :
« Format de cellule » => fenêtre du même nom ; choisis le dernier onglet :
« Protection » et décoche la 1ère case : ☐ Verrouillée
Bien sûr, pour une plage de cellules contigües, sélectionnes cette plage entière ;
tu peux même utiliser < Ctrl > pour sélectionner des cellules non adjacentes.
Notes que par défaut, toutes les cellules de la feuille sont : ☑ Verrouillée
ce pour quoi tu n'as besoin de t'occuper que des cellules à déverrouiller,
donc celles où tu saisis des données.
Quand tu auras terminé ce travail préparatoire, il te restera une seule chose
à faire pour que ça soit effectivement pris en compte : protéger la feuille de
calcul ; pour cela : onglet Révision, groupe Modifications (le dernier à droite),
cliques sur « Protéger la feuille » ; pour une protection simple, c'est inutile
de mettre un mot de passe ; sinon mets-en un (qui sera bien sûr à confirmer,
et attention : lettres majuscules différentes des lettres minuscules ! à noter
de préférence si tu risques de l'oublier, car sinon tu seras coincé ! et à
cacher et à mettre en lieu sûr : dans le coffre de ta banque si tu veux. 😉).
Dans la fenêtre, ne fais rien d'autre et valide par OK.
Fait : toutes les cellules verrouillées de ta feuille sont protégées contre un
écrasement accidentel, et tu peux saisir uniquement dans les cellules
déverrouillées (ce qui était bien le but recherché).
Le « Protéger la feuille » de l'onglet Révision est devenu « Ôter la protection
de la feuille ». Si tu cliques dessus, ça le fait tout de suite si tu n'avais pas mis
de mot de passe, sinon, ça te le demande, et il va de soi que la feuille sera
déprotégée seulement si tu saisis le bon mot de passe (d'où l'intérêt évident
de ne pas l'avoir oublié !).
Pour ta 1ère question, je te laisse voir ça avec Gyrus (que je salue).
Cordialement. 😊
-
Merci, j' ai quand même un problème, Je voulais verrouiller la cellule du n° numéro de facture, parce que avec la macro de Gyrus , qui fonctionne a merveille, je lui dit encore merci, mais rien ne m' empêche de changer le numéro initial ... accidentellement ou pas.
Or en verrouillant la cellule la macro ne peut plus créditer de 1 le numéro précédent...
Alors comment faire??? il faut que je te dise que j' ai intégré cette macro dans le même bouton que l' export en PDF. Cela me permet de retoucher la facture jusque l' export. et j 'ai 'une manipe pour crédit le nouveau numéro et export. -
Bonjour agri63,
Je te propose ce code VBA (qui est une adaptation du code de Gyrus) :
Option Explicit Sub Test() Dim Année As Integer: Année = Format(Date, "yy"): ActiveSheet.Unprotect If Année = Left$([A1], 2) Then [A1] = Année & Format(CInt(Right$([A1], 3)) + 1, "000") Else [A1] = Année & "001" End If ActiveSheet.Protect End Sub
Donc si tu verrouilles ta cellule A1 et que tu protèges la feuille, ça marchera
bien quand même, et à condition que ta feuille soit la feuille active : tu dois
être dessus avant de lancer la macro.
Sinon, si ta cellule A1 est sur Feuil3 (par exemple) utilises ce code VBA :
Option Explicit Sub Test() Dim Année As Integer: Année = Format(Date, "yy") With Worksheets("Feuil3") .Unprotect If Année = Left$(.[A1], 2) Then .[A1] = Année & Format(CInt(Right$(.[A1], 3)) + 1, "000") Else .[A1] = Année & "001" End If .Protect End With End Sub
Merci de me dire si ça a marché ou non.
Cordialement. 😊
-
-
Bonjour,
Essaie avec :'export en pdf info1 = Sheets("facture").Range("F9") info2 = Sheets("facture").Range("H4") nom = info1 & "-" & info2 & "-" ThisWorkbook.Save ThisWorkbook.SaveAs (nom & ".xls") ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "J:\IBRYAGRI\Facture\" & nom & ".pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, _ From:=1, To:=1, OpenAfterPublish:=True
A+ -
En prenant pour exemple un prix unitaire de 25€, la formule en F18 sera =25*SI($G$2="Avoir";-1;1)
A+ -
Merci beaucoup à tout les deux.
Est-ce-que je peux profiter de vos connaissance encore un peu.
J' ai une macro pour enregistrer mais facture en PDF.
Cela fonctionnement bien.Mais mon problème n 'enregistre pas sur mon disque " j ", mais sur le " C " dans le dossier utilisateur, Mes document.
Voici la macro :
'export en pdf
info1 = Sheets("facture").Range("F9") info2 = Sheets("facture").Range("H4") nom = info1 & "-" & info2 & "-" & ".xls" ThisWorkbook.Save ThisWorkbook.SaveAs (nom) ThisWorkbook.Activate ChDir "J:\IBRYAGRI\Facture" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Quality:= _ xlQualityStandard, includeDocProperties:=True, IgnorePrintAreas:=False, _ From:=1, To:=1, openAfterPublish:=True
Merci Pour vos lumières -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Ok sa fonctionne je suis très content. Merci Gyrus
Une petite dernière, juste pour la route...
Si dans une cellule par exemple "G2" j'écris "Avoir" à place de "facture".
Connais tu une formule pour que ma colonne "prix unitaire" exemple de F18 à F28 passe en négatif automatiquement?
Encore merci -
Merci la pour la formule, j' ai intégré ma recherche verticale et "erreur si" pour revenir à une cellule blanche, si il y a pas article sur les lignes.
Sa fonctionnement très bien
Un Très grand merci Gyrus
Bonne journée