Incrémentation numéro facture(je sais encore...mais bon)

Résolu/Fermé
gui64600 Messages postés 23 Date d'inscription jeudi 21 mai 2020 Statut Membre Dernière intervention 26 août 2021 - 21 mai 2020 à 22:00
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 - 2 oct. 2020 à 20:12
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
A voir également:

9 réponses

yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025 Ambassadeur 1 568
Modifié le 21 mai 2020 à 22:51
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?
0
gui64600 Messages postés 23 Date d'inscription jeudi 21 mai 2020 Statut Membre Dernière intervention 26 août 2021
22 mai 2020 à 11:56
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
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
21 mai 2020 à 23:01
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

0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
Modifié le 22 mai 2020 à 12:34
Bonjour,
Et pourtant ce code fonctionne parfaitement.
Alors mettre une copie de votre code....Merci

0
gui64600 Messages postés 23 Date d'inscription jeudi 21 mai 2020 Statut Membre Dernière intervention 26 août 2021
22 mai 2020 à 12:39
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
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
22 mai 2020 à 12:42
Bonjour,
Je vous le fait volontiers, mettre votre fichier exemple sur https://www.cjoint.com/ et poster le lien reçu.
0
gui64600 Messages postés 23 Date d'inscription jeudi 21 mai 2020 Statut Membre Dernière intervention 26 août 2021
22 mai 2020 à 13:51
https://www.cjoint.com/c/JEwlQxeqdXA
avec mes remerciements
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 754
22 mai 2020 à 13:58
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...
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
22 mai 2020 à 15:42
Merci pijaku,
je vais le lui mettre dans son fichier exemple.
Bonne journée.
Salutations.
Le Pingou
0
yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025 1 568
22 mai 2020 à 16:21
Je pense qu'il faut rechercher le plus grand, pas le dernier.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 754
25 mai 2020 à 09:27
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?...
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
22 mai 2020 à 18:16
Merci yg_be,
Je vais en tenir compte dans ma proposition.
0
gui64600 Messages postés 23 Date d'inscription jeudi 21 mai 2020 Statut Membre Dernière intervention 26 août 2021
22 mai 2020 à 18:43
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
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
22 mai 2020 à 18:46
Bonjour,
Voici ma petite contribution, bonne découverte.
Le lien : https://www.cjoint.com/c/JEwqTmw4ZP0
Merci du retour.
0
gui64600 Messages postés 23 Date d'inscription jeudi 21 mai 2020 Statut Membre Dernière intervention 26 août 2021
4 sept. 2020 à 11:01
Bonjour,

Il ya quelques temps déjà vous m'aviez aider en me fournissant le code suivant qui est parfait.
Aujourd'hui j'ai besoin de la même chose avec en plus l'année en cours à la suite de la numérota, c'est là que le bas blesse, l'incrémentation ne fonctionne plus

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 = Right(c, Len(c) - 1)
If pg < nu Then pg = nu
End If
Next c
End With
Range("D6") = FA & Format(pg + 1, "000")
End Sub


Aujourd'hui j'ai besoin de la même chose avec en plus l'année en cours à la suite de la numérotation, c'est là que le bas blesse, l'incrémentation ne fonctionne plus, voilà le code modifié que j' ai réalisé mais évidemment ça ne suffit pas.


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 = Right(c, Len(c) - 1)
If pg < nu Then pg = nu
End If
Next c
End With
Range("D6") = FA & Format(pg + 1, "000") & "/" & Format(Date, "yyyy") 'numéro plus / et l'année
End Sub

Merci de ton aide
0
yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025 1 568 > gui64600 Messages postés 23 Date d'inscription jeudi 21 mai 2020 Statut Membre Dernière intervention 26 août 2021
4 sept. 2020 à 12:02
peux-tu utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

il serait utile que tu nous montres des exemples.
0
gui64600 Messages postés 23 Date d'inscription jeudi 21 mai 2020 Statut Membre Dernière intervention 26 août 2021 > gui64600 Messages postés 23 Date d'inscription jeudi 21 mai 2020 Statut Membre Dernière intervention 26 août 2021
4 sept. 2020 à 12:21
Merci de ton intérêt.
A ce jour je n'avais besoins que de la numérotation suivante qui fonctionne très bien avec le code fourni :
F0001
F0002
F0003
ETC

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 = Right(c, Len(c) - 1)
If pg < nu Then pg = nu
End If
Next c
End With
Range("D6") = FA & Format(pg + 1, "000")
End Sub



Maintenant je voudrais ajouter l'année à cette numérotation pour obtenir le résultat suivant :
F0001/2020
F0002/2020
F0003/2020
ETC
0
yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025 1 568 > gui64600 Messages postés 23 Date d'inscription jeudi 21 mai 2020 Statut Membre Dernière intervention 26 août 2021
4 sept. 2020 à 12:36
merci de spécifier "basic" dans les balises quand tu partages du VBA.
peux-tu montrer un exemple au moment où l'année change?
0
gui64600 Messages postés 23 Date d'inscription jeudi 21 mai 2020 Statut Membre Dernière intervention 26 août 2021 > yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025
4 sept. 2020 à 12:42
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
0
gui64600 Messages postés 23 Date d'inscription jeudi 21 mai 2020 Statut Membre Dernière intervention 26 août 2021
22 mai 2020 à 18:55
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
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
22 mai 2020 à 23:00
Merci et sans oublier pijku et yg_be.
pensez à mettre le poste en RESOLU...
Salutations.
Le Pingou
0
yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025 Ambassadeur 1 568
4 sept. 2020 à 13:03
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
0