Incrémentation numéro facture(je sais encore...mais bon) [Résolu]

Signaler
Messages postés
13
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
4 septembre 2020
-
Messages postés
12276
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 septembre 2020
-
Bonjour,
je voudrais pouvoir incrémenter en appuyant sur un bouton un numéro de facture.
j'ai une liste de numéro de facture en colonne A d'un fichier.
Ces factures commencent soit par la lettre F, soit par lettre A.
je voudrais créer un bouton qui incrémente sur une cellule définie les factures qui commencent par la lettre F. Et un autre bouton qui incrémente la même cellule les factures (avoir) qui commencent par la lettre A.
en gros j'ai ma colonne A qui contient les valeurs suivantes:
F0001
F0002
A0001
F0003
F0010
A0004

je voudrais quand je clique sur le bouton "Numéro facture" avoir la valeur F0011 qui s'affiche dans une cellule D6 (par exemple) et si je clique sur le bouton "numéro avoir" avoir la valeur A0004 qui s'affiche dans la même cellule D6.

Merci de votre aide

9 réponses

Messages postés
12276
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 septembre 2020
694
bonjour, est-ce toujours en D6?
pourrais-tu expliquer quelle logique fait qu'il faut obtenir F0011 et A0004?
les factures sont-elles triées dans la colonne A, ou est-ce un hasard dans ton exemple?
Messages postés
13
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
4 septembre 2020

Bonjour,
Oui le résultat se trouvera toujours enD6.
F0011 correspond au résultat trouvé, en déclenchant la macro numérotation facture, puisque le plus grand dernier numéro de facture était F0010.
Idem pour les avoirs si j'active la macro numérotation avoir.
Et enfin non les numéros ne sont pas forcements triés.
Merci ton interet
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 071
Bonjour,
Au passage vous récupérer le dernier n° de facture, soit ‘F0010 et A0003’ que vous mettez en ‘D6 ? et vous appliquez ceci pour incrémentée en ‘D6 :
Sheets("ma feuille").Range("D6").Value = Left(Range("D6"), 1) + Format(CInt(Right(Range("D6"), Len(Range("D6")) - 1)) + 1, "0000")

Salutations
Le Pingou

Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 071
Bonjour,
Et pourtant ce code fonctionne parfaitement.
Alors mettre une copie de votre code....Merci

Salutations.
Le Pingou
Messages postés
13
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
4 septembre 2020

Bonjour,
étant vraiment novice en code je n'ai rien à copier malheureusement...mais peut être pourriez vous faire quekque chose avec cette explication??
Sélectionner la plus grande des valeurs se situant en colonne A et commençant par la lettre F et l'incrémenter de 1 et positionner le résultat dans la cellule D6.
merci
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 071
Bonjour,
Je vous le fait volontiers, mettre votre fichier exemple sur https://www.cjoint.com/ et poster le lien reçu.
Messages postés
13
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
4 septembre 2020

https://www.cjoint.com/c/JEwlQxeqdXA
avec mes remerciements
Messages postés
12185
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
21 septembre 2020
2 478
Bonjour,

Code à insérer dans un Module (sous VBE Insertion/Module) :
Option Explicit

Const NF As String = "Feuil1" '********* A ADAPTER LE NOM DE LA FEUILLE CONTENANT LES N° DE FACTURES ET AVOIRS

Public Function NumeroFacture() As String
Dim num As Integer
    num = CInt(RechercheDernier("F")) + 1
    NumeroFacture = "F" & Right("0000" & num, 4)
End Function
Public Function NumeroAvoir() As String
Dim num As Integer
    num = CInt(RechercheDernier("A")) + 1
    NumeroAvoir = "A" & Right("0000" & num, 4)
End Function
Function RechercheDernier(Quoi As String) As String
Dim R As Range
    Set R = Sheets(NF).Columns(1).Cells.Find(Quoi, After:=Sheets(NF).Range("A" & Rows.Count), LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
    If Not R Is Nothing Then
        RechercheDernier = Right(R.Value, 4)
    Else
        RechercheDernier = "0001"
    End If
End Function


A utiliser directement dans la cellule D6, comme ceci :
=NumeroFacture()
ou
=NumeroAvoir()

On peut également associer les deux...
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 071
Merci pijaku,
je vais le lui mettre dans son fichier exemple.
Bonne journée.
Salutations.
Le Pingou
Messages postés
12276
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 septembre 2020
694
Je pense qu'il faut rechercher le plus grand, pas le dernier.
Messages postés
12185
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
21 septembre 2020
2 478
Bonjour,

Le Pingou : de rien, si ça peut aider.
yg_be : Ben oui. Après s'il a envie de tout mélanger au lieu d'enregistrer ses numéros de factures dans l'ordre, forcément ça va déconner.
Mais bon, mieux vaut ranger, ordonner les données non?...
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 071
Merci yg_be,
Je vais en tenir compte dans ma proposition.
Messages postés
13
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
4 septembre 2020

bonjour, merci pour la réponse
mais en effet yg_be à raison c bien le grand et non pas le dernier.

Merci de votre aide
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 071
Bonjour,
Voici ma petite contribution, bonne découverte.
Le lien : https://www.cjoint.com/c/JEwqTmw4ZP0
Merci du retour.
Messages postés
13
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
4 septembre 2020
>
Messages postés
12276
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 septembre 2020

Ok pour mes prochains post j'emploierais les bonnes balises (merci pour l'info au passage)

Au changement d'année je repars du premier Numéro!
F0001/2020
F0002/2020
F0003/2020
....
F0100/2020

ET en 2021

F0001/2021
F0002/2021

Merci de ton aide
Messages postés
12276
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 septembre 2020
694 >
Messages postés
13
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
4 septembre 2020

oups, veux-tu automatiquement recommencer à 1 quand l'année change?
Messages postés
13
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
4 septembre 2020
>
Messages postés
12276
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 septembre 2020

recommencer à 1 serait idéal oui, merci
Messages postés
12276
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 septembre 2020
694 >
Messages postés
12276
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 septembre 2020

suggestion:
Sub plusgdvaltexte(FA As Variant)
Dim pg As Long, c As Range, nu As Variant
pg = 0
With Sheets("Numéro facture")
For Each c In .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
    If Left(c, 1) = FA Then
        nu = Mid(c.Value, 2, 3)
        If pg < nu Then pg = nu
    End If
    Next c
End With
Range("D6") = FA & Format(pg + 1, "000") & "/" & CStr(Year(Now))
End Sub
Messages postés
13
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
4 septembre 2020
>
Messages postés
12276
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 septembre 2020

Tu es un chef, merci pour tout, la réactivité et l'efficacité.
Messages postés
13
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
4 septembre 2020

Merci beaucoup,
c'est loin d'être une petite contribution pour moi c top!!
Ca à l'air de fonctionner du tonnerre
merci encore
à la prochaine MONSIEUR le Pingou
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 071
Merci et sans oublier pijku et yg_be.
pensez à mettre le poste en RESOLU...
Salutations.
Le Pingou
Messages postés
12276
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 septembre 2020
694
ceci va recommencer à 1 chaque année:
Sub plusgdvaltexte(FA As Variant)
Dim pg As Long, c As Range, nu As Variant, yr As Integer
pg = 0
yr = Year(Now())
With Sheets("Numéro facture")
    For Each c In .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
        If Left(c, 1) = FA And CInt(Right(c, 4)) = yr Then
            nu = Mid(c.Value, 2, 4)
            If pg < nu Then pg = nu
        End If
    Next c
End With
Range("D6") = FA & Format(pg + 1, "0000") & "/" & CStr(yr)
End Sub