Supprimer un caractère

Résolu
cs_SharQ Messages postés 5 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 4 mai 2007 - 2 mai 2007 à 17:24
cs_SharQ Messages postés 5 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 4 mai 2007 - 3 mai 2007 à 10:49
Bonjour,

je cherche une solution pour supprimer le dernier caractère entré à l'aide d'un lecteur de code barre dans un une zone de texte.
Ceci est pour un logiciel de gestion de parc créé sous access 2000 en VBA. La valeur entré dans la zone de texte est utilisé pour rechercher dans la base l'élément correspondant.

Private Sub NoCuincyCherche_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 13 Then ' On a appuyé sur 'Entrée'
        ' Enregistre les modifications
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
       
        ' Ouvre la fiche
        If Not IsNull(NoCuincyCherche) Then
            TrouveNoCuincy NoCuincyCherche
        End If
    End If
End Sub

En tapant le numéro à 4 chiffres, tout fonctionne. J'ai édité des code barre de façon a avoir le numéro correspondant à l'élément. Mais pour que le code a barre soit correct, il lui faut en fin de chaine une clé de controle. Le problème est qu'à la lecture du code barre, la clé de contrôle apparait dans la zone de texte et par conséquent, le logiciel ne trouve pas l'enregistrement.

Comment puis-je ignorer le dernier chiffre de cette chaine?

Je vous remercie

5 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
2 mai 2007 à 17:49
En l'intéressant, par exemple à la fonction Len et à la fonction Left (les 2 dans ton aide en ligne avec exemple).
Left te permet d'avoir un nombre de caractères en partant de la gauce et Len te permet d'extraire la longueur d'une chaîne en caractères.
Le tout est d'une simplicité plutôt enfantine...
3
cs_SharQ Messages postés 5 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 4 mai 2007
3 mai 2007 à 10:49
Merci Casy mais mon problème était de ne pas prendre en compte le dernier chiffre du code à barre. Ce n'est pas une rustine dans le code car je lui demande simplement d'ignorer le dernier caractère. Le reste du code est inchangé. Et je ne peux pas changer la dénomination des enregistrements car ils correspondent à un style homogène dans toutes les usines de mon groupe.

Merci à vous deux de m'avoir aidé et orienté.

Voici le code final qui regle mon problème

Private Sub NoCuincyCodeBarre_KeyDown(KeyCode As Integer, Shift As Integer)
   
        ' On a appuyé sur 'Entrée'
        If KeyCode = 13 Then
        ' Enregistre les modifications
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
        ' Ignore le dernier caractère (clé de contrôle du code barre EAN)
        Dim AnyString
        AnyString = NoCuincyCodeBarre
        NoCuincyCodeBarre = Left(AnyString, 11)
        ' lance le processus de recherche de l'enregistrement en fonction du numéro entré
        If Not IsNull(NoCuincyCodeBarre) Then
        TrouveNoCuincy NoCuincyCodeBarre
        End If
    End If
End Sub
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
2 mai 2007 à 17:59
La subtilité aurait été de choisir un format de code barre n'incluant pas de clé de controle, ou sinon d'inclure la clé dans le numéro saisie dans la base.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_SharQ Messages postés 5 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 4 mai 2007
3 mai 2007 à 09:34
Merci JMF, je vais essayer cette idée de ce pas. Je tiens informé de la résolution.

Et oui Casy, je m'en suis rendu compte trop tard et j'aimerais éviter de repasser sur la moitiè de mon inventaire (environ 175 élements) en rééditant mes codes barres. Même si c'est, je pense, la solution la plus "propre".
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
3 mai 2007 à 09:46
Il te reste peut-etre la possibilité de modifier la base. Il vaut peut-etre mieux modifier 350 enregsitrements que rééditer 175 étiquettes
ou mettre une rustine dans le code.

Si en plus tu peux connaitre la methode de calcul de la clé, tu peut te faire un petit bout de code qui va mettre à jour la base en caculant la clé de chaque référence.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Rejoignez-nous