Numerotation automatique avec remise à zero par année.

Résolu/Fermé
agri63 - Modifié par agri63 le 11/11/2016 à 08:54
agri63 Messages postés 6 Date d'inscription mercredi 2 décembre 2015 Statut Membre Dernière intervention 24 décembre 2020 - 15 nov. 2016 à 20:16
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...


A voir également:

6 réponses

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
Modifié par crapoulou le 15/11/2016 à 20:42
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+
1
agri63 Messages postés 6 Date d'inscription mercredi 2 décembre 2015 Statut Membre Dernière intervention 24 décembre 2020
11 nov. 2016 à 11:08
Merci, sa marche. et toute les année au premier 1 janvier il y a une remise à zéro?

Une autre petite question bête. Comment je peux verrouiller ma cellule, afin de ne pas changer accidentellement le N°... et donc de respecter la chronologie durant toute l' année.
Encore merci
Agri63
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523 > agri63 Messages postés 6 Date d'inscription mercredi 2 décembre 2015 Statut Membre Dernière intervention 24 décembre 2020
11 nov. 2016 à 11:23
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+
0
Utilisateur anonyme > agri63 Messages postés 6 Date d'inscription mercredi 2 décembre 2015 Statut Membre Dernière intervention 24 décembre 2020
11 nov. 2016 à 11:47
 
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.  😊
 
0
agri63 > Utilisateur anonyme
12 nov. 2016 à 13:25
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.
0
Utilisateur anonyme > agri63
Modifié par albkan le 12/11/2016 à 21:46
 
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.  😊
 
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
Modifié par crapoulou le 15/11/2016 à 20:42
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+
1
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
11 nov. 2016 à 23:28
En prenant pour exemple un prix unitaire de 25€, la formule en F18 sera =25*SI($G$2="Avoir";-1;1)

A+
1
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
0

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
0
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
0