Suivi des facturations sous Excel

Oui, je commence à m’embrouiller.
Donc, format de facture : aaaamm
Nom de chiffres à incrémenter derrière : 000 (999 factures suffiront largement)
Edité le 21/09/2007 à 09:48

Pas de problème, c’est exactement comme celà que j’avais interprété ton post précédent. :slight_smile:

Gcc : je n’ai pas compris ta formule, mais elle me semble extrèmement complexe vu le résultat à obtenir ! :ouch:
Edité le 21/09/2007 à 12:45

Non, pas très compliqué, et en plus à n’utiliser que si tu veux tout faire en une ligne.
Pour la comprendre, il faut la prendre à l’envers, de l’intérieur vers l’extérieur.

Range(“J5”) = Format(1 - Right(R, 2) * (Left(R, 6) = Range(“I5”)), “00000”)
Right(R, 2) représente le numéro d’ordre de la dernière facture enregistrée dans le récapitulatif

Range(“J5”) = Format(1 - Right(R, 2) * (Left(R, 6) = Range(“I5”)), “00000”)
(Left(R, 6) = Range(“I5”) compare les dates (plus exactement leur représentation au format aaaamm de la facture en cours (I5) et de la dernière facture enregistrée (il suffit de prendre les 6 caractères à gauche dans le numéro d’enregistrement)
C’est une formule du type a=b, qui retourne donc VRAI ou FAUX
Mais en VBA, VRAI =-1, et FAUX=0

Range(“J5”) = Format(1 - Right(R, 2) * (Left(R, 6) = Range(“I5”)), “00000”)
Right(R, 2) * (Left(R, 6) = Range(“I5”) va donc nous retourner 0 si inégalité, l’opposé du numéro d’ordre sinon

Range(“J5”) = Format(1 - Right(R, 2) * (Left(R, 6) = Range(“I5”)), “00000”)
En ajoutant 1, on obtient bien dans les cas la nouvelle valeur souhaitée (le plus se transforme en moins à cause de la valeur négative précédente)

Ensuite, il ne reste plus qu’à transformer en une chaine au format souhaité par format(X, “0000”) ou “000” aux dernières nouvelles.

Bien sûr, les puristes te diront qu’il aurait fallu mettre int(Right(R,2)) parce qu’on ne multiplie pas des nombres et des chaines de caractères. Mais je pense que ca marche comme ca.
Je te dis tout ca de mémoire, parce que je ne l’ai pas testé.
C’est juste une réminiscence d’une méthode que j’employais couramment dans une vie antérieure.