Lettre et chiffre + 1

Résolu/Fermé
MgM - 8 juin 2010 à 15:30
venatcher Messages postés 11 Date d'inscription mercredi 12 mai 2010 Statut Membre Dernière intervention 11 juillet 2011 - 8 juin 2010 à 16:26
Bonjour,

Je suis débutant en VBA et je dois automatiser une facture pour un stage.

Le numéro de facture est "F080" soit lettre/chiffre/chiffre/chiffre et il faut qu'il augmente de 1 à chaque fois que je lance la macro d'impression...
J'ai d'abord pensé à supprimer le F dans la cellule pour le remettre aprés, mais il y a toujours la question du 080 qui risque de s'afficher 80 à moins de le mettre en lettre... dans lequel cas je ne peut pas faire +1 directement...


Merci d'avance et également merci à tous ceux qui postent des questions ou des réponses,

MgM

4 réponses

ChrisCompote Messages postés 73 Date d'inscription mardi 8 juin 2010 Statut Membre Dernière intervention 19 juin 2010 8
8 juin 2010 à 15:40
Bonjour,

Je suis plus spécialiste PHP mais voici l'idée :

numero_facture = 'F080';
Tu fais un substring du caractère 0 jusqu'au 1er (soit le F)
Tu fais un substring du caractère 1 jusqu'à la fin. (ça enleve le F)

Tu converti en int (tu perds le 1er 0)

Tu fais +1
Si le résultat est < 100
Tu ajoutes '0' devant le résultat (ça devient une chaine de caractère)
Tu remonte ta chaine en mettant le contenu du premier substring puis ton résultat.

En php ça donnerait
function incrementNumeroFacture($numero_facture)
{
$lettre = substr($numero_facture,0,1);
$sNumero = substr($numero_facture,1);
$nNumero = (int)$sNumero;
$nNumero++;
if($nNumero < 100)
$sNumero = '0'.$nNumero;
else
$sNumero = (string)$nNumero;
$numero_facture = $lettre.$sNumero;
return $numerofacture;
}

Voilà, l'algo reste le même, transcrit le VBA
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 8/06/2010 à 15:43
Bonjour,
Dans le doute je dirais...
Le N° intrinséque de la facture devrait être 80
Supposons le N° de facture en Range("D3")
Supposons l'affichage dans la facture à la cellule Range("E3")
    Range("E3") = Format(Range("D3"), "F000")

Sinon tu explique...
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
0
Merci beaucoup, j'ai transcrit du php et ca marche au top.


:D merci beaucoup Chris Compote
0
ChrisCompote Messages postés 73 Date d'inscription mardi 8 juin 2010 Statut Membre Dernière intervention 19 juin 2010 8
8 juin 2010 à 16:13
de rien ;-)
0
venatcher Messages postés 11 Date d'inscription mercredi 12 mai 2010 Statut Membre Dernière intervention 11 juillet 2011
8 juin 2010 à 16:26
Ce que tu peux faire c'est effectivement isoler la première lettre, incrémenter ton fichier donc par exemple 80 -> 81 et après tu fais un traitement :

si tonChiffre > 99 alors taLettre+tonChiffre
sinon si tonChiffre <= 99 && >=10 alors taLettre+0+tonChiffre
sinon taLettre+00+tonChiffre

Ce qui
pour F et 8 te donnera F008
pour G et 80 te donnera G080
pour H et 180 te donnera H180

Ceci est bien sur une aide algorithmique étant donné que je ne connais pas assez ton projet, si tu as d'autre question, n'hésite pas :)

Cordialement
0