VBA possible pour incrémentation automatique à 4 variables ?

Bonjour,

Je suis bloqué dans la création d'une macro pour incrémenter automatiquement un numéro de document unique qui se présenterait ainsi: AA/BB-CCCC-DDDD.

La première variable AA correspond aux 2ères lettres du type de document (facture, devis, note de crédit, sélectionné via une cellule déroulante).

La 2e variable BB correspond aux 2ères lettres du pays repris dans l'adresse client.

La 3e variable CCCC doit reprendre juste l'année de la date du document (qui se met à jour automatiquement via la fonction aujourd'hui).

La 4e variable DDDD correspond au numéro final du document (0000).

Comment est-il possible de réaliser cela sachant que les compteurs documents (factures, devis, notes de crédit) ne sont pas interdépendants.

Ainsi, si je libelle une facture du style FA/GD-2021-0001, la suivante sera XX XX-2021-0002. Si j'encode par contre un devis, le premier numéro devra être 0001 et non 0003 car c'est le 1er devis et pas le 3e document !

J'espère être assez clair.

J'ai déjà essayé plusieurs macros via des tutos mais je suis perdu maintenant.

Pouvez-vous m'aider ?

Bonjour,

Un test comme nous n'avons pas de fichier joint ..

La seule contrainte est que la colonne 1 doit être classée par ordre décroissant. A la première occurrence de la combinaison, j'incrémente de 1 les 4 dernier chiffres, sinon je créé la nouvelle combinaison.

Sub SUIVANT()
Dim DER_OCCU As Variant, NEW_OCCU$
With Worksheets("Feuil1")
    Set DER_OCCU = .ListObjects("Tableau1").ListColumns(1).DataBodyRange.Find(What:=.[D2] & "-" & .[D3] & "-" & .[D4])
    If DER_OCCU Is Nothing Then
        NEW_OCCU = .[D2] & "-" & .[D3] & "-" & .[D4] & "-0001"
        Else
        NEW_OCCU = Left(DER_OCCU, 11) & Format(Right(DER_OCCU, 4) + 1, "0000")
    End If
    MsgBox NEW_OCCU
End With
End Sub
22incrementation.xlsm (16.99 Ko)

Bonne soirée

Bonsoir,

Quel pays étrange commence par Gd ?

Sinon, pour le reste de la question, j'aurais plutôt vu un compteur qu'on incrémente en fin de boucle.

Facture2
Devis1
Note de crédit

La colonne A serait la zone de liste déroulante. On prendrait la valeur en colonne 2, au format "0000" comme l'a fait ergotamine. Puis en fin de boucle, on rajoute 1, pour le document suivant.

Bonsoir Joyeux Noel,

Merci pour ton intervention.

Comme souvent, le soucis de l'absence de fichier représentatif (passage par USF, liste de validation, autre ? ...)

Je suis curieux de voir ton code, car sans connaître la combinaison pays/année, comment fais-tu pour incrémenter ? La facture et le devis sont alimentés par un NB.SI puis tu incrémentes ?

Je pensais que l'auteur souhaitait une incrémentation par combinaison, si tel n'est pas le cas, je me suis embêté pour pas grand chose !

Bonne soirée.

De ce que j'ai compris, l'incrémentation ne se fait que sur le type donc j'imagine que tu t'es effectivement pris la tête pour rien ;)

Ou alors je ne me la prends pas assez ..

Il suffit de remettre les valeurs à 0 en fin d'année.

En effet je viens de relire. Bon ben du coup c'est plus simple en effet, même pas besoin de BDD. En fait même si ça avait été le cas je n'en aurai pas eu besoin, juste loger le dernier enregistrement par type dans un cellule et l'incrémenter comme tu as dit.

Mais il nous faut un fichier type pour avoir la structure.

Je te laisse gérer :)

Hello,

Merci pour vos premiers retours.

Voici le fichier.

Il me sera plus facile de comprendre votre simulation de macro sur base de mes infos.

Merci.

Bonjour,

Ca m'apprendra à ne pas demander de fichier avant de me lancer.

Tu peux donc le faire sans macro.

Un test avec combinaison totale (donc incrémentation en fonction de type/pays/année) ou partielle (uniquement sur type).

Merci à toi JoyeuxNoel pour ton aide à avoir connecté mes 2 neurones, comment faire compliqué quand on peut faire simple ! :)

Bonne soirée.

Cool !

Merci beaucoup.

Rechercher des sujets similaires à "vba possible incrementation automatique variables"