Problème VBA, génération de codes barre

Fermé
picti90 Messages postés 13 Date d'inscription samedi 9 mai 2009 Statut Membre Dernière intervention 7 juillet 2012 - 5 juin 2012 à 23:15
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 - 7 juin 2012 à 15:16
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

A voir également:

3 réponses

picti90 Messages postés 13 Date d'inscription samedi 9 mai 2009 Statut Membre Dernière intervention 7 juillet 2012
5 juin 2012 à 23:20
PS : je ne vais pas répondre avant demain soir, je ne serais pas dispo dans la journée =)
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
6 juin 2012 à 08:52
Bonjour,

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
0
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 243
7 juin 2012 à 08:50
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 :
'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
0
bonjour à tous
on aurait pu utiliser la fonction Format() :
Codemachine = "#" & Format(Incodemachine, "#M00000000#") &"#"
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
7 juin 2012 à 15:16
Bonjour a vous,

Merci des solutions alternatives au codage traditionnel.
0
picti90 Messages postés 13 Date d'inscription samedi 9 mai 2009 Statut Membre Dernière intervention 7 juillet 2012
6 juin 2012 à 19:43
Merci beaucoup !!! =') C'est vraiment plus claire comme ça !
0