Problème VBA, génération de codes barre
picti90
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour cher codeurs !!
Alors voilà, je remet les pieds dans le VBA pour aider un ami sur un programme dont il a besoin au boulot.
Donc en gros l'idée, c'est de créer un code barre en fonction d'un code machine qu'on a demandé au préalable à l'utilisateur. Ce code machine est intégrer dans le code barre avec comme code type : #M000000052# Ici 52 c'est le code machine qu'on aura demandé. Il doit toujours avoir 10 caractères entre les dièses.
Donc bon, j'ai créé un programme et voila j'ai un soucis, c'est pour le nombre de zéros à mettre. J'ai utilisé la fonction select case, mais comme vous pouvez le voir si vous essayez le programme, quand on rentre un code machine, le programme affiche toujours : #M52#, bref, il ne voit pas que le chiffre est < à 100 et donc qu'il comporte 2 chiffres et donc qu'il devrait me mettre 7 zéros.
Je ne comprend vraiment pas ou est l'erreur. Par ailleurs pardonnez moi si le programme est un peu archaique mais comme dis plus haut, je n'avais plus touché VBA depuis longtemps ^^'
Bref, voilà le code :
Sub code()
Dim codemachine As Variant
Dim reponse As String
codemachine = InputBox("Entrez le code de la machine svp") 'On demande le code machine
'En fonction du nombre de chiffres dans le code machine entré par l'utilisateur, on va l'incrémenter dans un code de génération code barre machine avec un certain nombre de zéros
Select Case codemachine
Case 0 < codemachine < 10
MsgBox ("Le code de génération code barre machine est #M0000000" & codemachine & "#")
Case codemachine < 100
MsgBox ("Le code de génération code barre machine est #M000000" & codemachine & "#")
Case codemachine < 1000
MsgBox ("Le code de génération code barre machine est #M00000" & codemachine & "#")
Case codemachine < 10000
MsgBox ("Le code de génération code barre machine est #M0000" & codemachine & "#")
Case codemachine < 100000
MsgBox ("Le code de génération code barre machine est #M000" & codemachine & "#")
Case codemachine < 1000000
MsgBox ("Le code de génération code barre machine est #M00" & codemachine & "#")
Case codemachine < 10000000
MsgBox ("Le code de génération code barre machine est #M0" & codemachine & "#")
Case Else
MsgBox ("Le code de génération code barre machine est #M" & codemachine & "#")
End Select
'On demande ici si il y a encore un code à créer
reponse = MsgBox("Y a t'il encore un code à générer ?", vbYesNo)
'On va relancer la procédure tant que la réponse sera oui, sinon le programme s'arrête
While reponse = vbYes
codemachine = InputBox("Entrez le code de la machine svp")
Select Case codemachine
Case 0 < codemachine < 10
'On créer un code barre
MsgBox ("Le code de génération code barre machine est #M0000000" & codemachine & "#")
Case codemachine < 100
MsgBox ("Le code de génération code barre machine est #M000000" & codemachine & "#")
Case codemachine < 1000
MsgBox ("Le code de génération code barre machine est #M00000" & codemachine & "#")
Case codemachine < 10000
MsgBox ("Le code de génération code barre machine est #M0000" & codemachine & "#")
Case codemachine < 100000
MsgBox ("Le code de génération code barre machine est #M000" & codemachine & "#")
Case codemachine < 1000000
MsgBox ("Le code de génération code barre machine est #M00" & codemachine & "#")
Case codemachine < 10000000
MsgBox ("Le code de génération code barre machine est #M0" & codemachine & "#")
Case Else
MsgBox ("Le code de génération code barre machine est #M" & codemachine & "#")
End Select
'Ligne de génération du code machine
reponse = MsgBox("Y a t'il encore un code à générer ?", vbYesNo)
Wend
End Sub
Je vous remercie d'avance pour votre aide, et désolé si le message est un long =P
Alors voilà, je remet les pieds dans le VBA pour aider un ami sur un programme dont il a besoin au boulot.
Donc en gros l'idée, c'est de créer un code barre en fonction d'un code machine qu'on a demandé au préalable à l'utilisateur. Ce code machine est intégrer dans le code barre avec comme code type : #M000000052# Ici 52 c'est le code machine qu'on aura demandé. Il doit toujours avoir 10 caractères entre les dièses.
Donc bon, j'ai créé un programme et voila j'ai un soucis, c'est pour le nombre de zéros à mettre. J'ai utilisé la fonction select case, mais comme vous pouvez le voir si vous essayez le programme, quand on rentre un code machine, le programme affiche toujours : #M52#, bref, il ne voit pas que le chiffre est < à 100 et donc qu'il comporte 2 chiffres et donc qu'il devrait me mettre 7 zéros.
Je ne comprend vraiment pas ou est l'erreur. Par ailleurs pardonnez moi si le programme est un peu archaique mais comme dis plus haut, je n'avais plus touché VBA depuis longtemps ^^'
Bref, voilà le code :
Sub code()
Dim codemachine As Variant
Dim reponse As String
codemachine = InputBox("Entrez le code de la machine svp") 'On demande le code machine
'En fonction du nombre de chiffres dans le code machine entré par l'utilisateur, on va l'incrémenter dans un code de génération code barre machine avec un certain nombre de zéros
Select Case codemachine
Case 0 < codemachine < 10
MsgBox ("Le code de génération code barre machine est #M0000000" & codemachine & "#")
Case codemachine < 100
MsgBox ("Le code de génération code barre machine est #M000000" & codemachine & "#")
Case codemachine < 1000
MsgBox ("Le code de génération code barre machine est #M00000" & codemachine & "#")
Case codemachine < 10000
MsgBox ("Le code de génération code barre machine est #M0000" & codemachine & "#")
Case codemachine < 100000
MsgBox ("Le code de génération code barre machine est #M000" & codemachine & "#")
Case codemachine < 1000000
MsgBox ("Le code de génération code barre machine est #M00" & codemachine & "#")
Case codemachine < 10000000
MsgBox ("Le code de génération code barre machine est #M0" & codemachine & "#")
Case Else
MsgBox ("Le code de génération code barre machine est #M" & codemachine & "#")
End Select
'On demande ici si il y a encore un code à créer
reponse = MsgBox("Y a t'il encore un code à générer ?", vbYesNo)
'On va relancer la procédure tant que la réponse sera oui, sinon le programme s'arrête
While reponse = vbYes
codemachine = InputBox("Entrez le code de la machine svp")
Select Case codemachine
Case 0 < codemachine < 10
'On créer un code barre
MsgBox ("Le code de génération code barre machine est #M0000000" & codemachine & "#")
Case codemachine < 100
MsgBox ("Le code de génération code barre machine est #M000000" & codemachine & "#")
Case codemachine < 1000
MsgBox ("Le code de génération code barre machine est #M00000" & codemachine & "#")
Case codemachine < 10000
MsgBox ("Le code de génération code barre machine est #M0000" & codemachine & "#")
Case codemachine < 100000
MsgBox ("Le code de génération code barre machine est #M000" & codemachine & "#")
Case codemachine < 1000000
MsgBox ("Le code de génération code barre machine est #M00" & codemachine & "#")
Case codemachine < 10000000
MsgBox ("Le code de génération code barre machine est #M0" & codemachine & "#")
Case Else
MsgBox ("Le code de génération code barre machine est #M" & codemachine & "#")
End Select
'Ligne de génération du code machine
reponse = MsgBox("Y a t'il encore un code à générer ?", vbYesNo)
Wend
End Sub
Je vous remercie d'avance pour votre aide, et désolé si le message est un long =P
A voir également:
- Problème VBA, génération de codes barre
- Les codes ascii - Guide
- Windows 11 barre des taches a gauche - Guide
- Barre de défilement - Guide
- Barré whatsapp - Guide
- Barre verticale mac - Forum MacOS
3 réponses
Bonjour,
Bonne suite
Sub code() '#M000000052# Ici 52 Dim codemachine As Variant, Zero Dim reponse As String Const entete = "#M" Const Fin = "#" 'On va relancer la procédure tant que la réponse sera oui, sinon le programme s'arrête Do 'Entree du code machine Incodemachine = InputBox("Entrez le code de la machine svp") 'definition du nombre de zero Zero = String(9 - Len(Incodemachine), "0") 'Ligne de génération du code machine codemachine = entete & Zero & Incodemachine & Fin MsgBox ("Le code de génération code barre machine est " & codemachine) 'On demande ici si il y a encore un code à créer reponse = MsgBox("Y a t'il encore un code à générer ?", vbYesNo) Loop While reponse = vbYes End Sub
Bonne suite
Bonjour tout le monde,
Pour l'exemple, on peut aussi se servir du formatage.
Dans le 2nd paramètre de .Text mettre le format d'affichage désiré, ici 10 chiffres fixes.
Dans le code de f894009 remplacer :
par :
eric
Pour l'exemple, on peut aussi se servir du formatage.
Dans le 2nd paramètre de .Text mettre le format d'affichage désiré, ici 10 chiffres fixes.
Dans le code de f894009 remplacer :
'Entree du code machine Incodemachine = InputBox("Entrez le code de la machine svp") 'definition du nombre de zero Zero = String(9 - Len(Incodemachine), "0") 'Ligne de génération du code machine codemachine = entete & Zero & Incodemachine & Fin
par :
'Entree du code machine inCodemachine = InputBox("Entrez le code de la machine svp") 'Ligne de génération du code machine Codemachine = entete & Zero & Application.Text(inCodemachine, "0000000000") & Fin
eric