Vérification de bonne saisie de numéro de série

Bonjour à tous,

Je cherche à établir un code qui permettrait de valider mes relevés de numéros de séries sur des équipements.

L’idée est de réduire l’erreur humaine (faute de frappe sur le fichier excel ; relevé d’un mauvais numéro par l’opérateur etc etc…)

La difficulté est que chaque équipement a son propre format.

Exemples : (C = Chiffre / L = Lettre)

Equipement REF0123456789 – Format #Série attendu : CCC-LL – #Série relevé : 123-A5 => Erreur qui s’affiche (ou la case en rouge)

Equipement REF9876543210 – Format #Série attendu : CCCCCCCCL - #Série relevé 1234567BA => Erreur qui s’affiche

J’essaye de trouver quelque chose de relativement simple d’utilisation depuis hier mais jusque-là mes recherches ne sont pas très fructueuses.

Merci d’avance à tous ceux qui pourront m’aider !

Salut Moredhel,

si un code peut repérer les éventuelles fautes de frappe... il peut alors forcément calculer lui-même ce n° de série et donc t'éviter cette étape!

A toi de nous détailler ce décodage!

A+

Bonjour le forum, Bonjour curulis.

J'ai continué à faire mes essais et recherches sans résultat.

Pour te répondre curulis,

Le numéro de série ne peut pas être calculé. Je souhaiterais faire en sorte que le format de numéro de série soit respecté. Les cas que j'ai évoqué étaient des erreurs Chiffre/Lettre.

Exemples : (C = Chiffre / L = Lettre)

Equipement REF0123456789 – Format #Série attendu : CCC-LL – #Série relevé : 123-A5 => Erreur qui s’affiche (ou la case en rouge)

Equipement REF9876543210 – Format #Série attendu : CCCCCCCCL - #Série relevé 1234567BA => Erreur qui s’affiche

Equipement REF5556667770 - Format #Série attendu : CCCCCC - #Série relevé 1234AB => Erreur qui s'affiche car on attend 6 chiffres.

Salut moredhel,

si la macro n'a pas de balises auxquelles se référer pour déterminer quelle syntaxe doit être appliquée, il va être difficile de contrôler l'encodage de l'opérateur!

Equipement REF0123456789 – Format #Série attendu : CCC-LL – #Série relevé : 123-A5 => Erreur qui s’affiche (ou la case en rouge)

Equipement REF9876543210 – Format #Série attendu : CCCCCCCCL - #Série relevé 1234567BA => Erreur qui s’affiche

Equipement REF5556667770 - Format #Série attendu : CCCCCC - #Série relevé 1234AB => Erreur qui s'affiche car on attend 6 chiffres.

  • si j'encode 125HJ, comment puis-je être sûr qu'il s'agit de 125-HJ ou d'un début catastrophique de 12345678J ?
  • si j'encode 123456H, comment puis-je décider qu'il s'agit de 12345678A ou de 123456 ?

A moins d'accepter que la macro ne t'envoie une série, peut-être impressionnante, de messages d'alerte!

Je regarde ce soir!

A+

Salut,

Je cherche à valider un format

La référence est fixe, ainsi que le format associé

Le point de contrôle est donc sur le format saisi du numéro de série

Bonjour,

Tester la conformité à un modèle est faisable, à condition de savoir quel est le modèle à appliquer dans chaque cas...

Bonjour MFerrand,

Comme indiqué, dans tous les cas le "modèle" du format est connu (Un format de numéro de série peut être associé à chaque référence de pièce)

Je me doute bien que ça doit être possible avec un logiciel aussi puissant qu'Excel, si je viens ici c'est que je ne sais justement pas comment faire

Il faut déjà lister les modèles et savoir à quoi ils sont associés.

Les formats sont aussi divers et variés qu'il y a de référence de pièces.

C'est pour cela que j'ai listé quelques exemples, que je remet ci-dessous :

Equipement REF0123456789 – Format #Série attendu : CCC-LL

Equipement REF9876543210 – Format #Série attendu : CCCCCCCCL

Equipement REF5556667770 - Format #Série attendu : CCCCCC

Salut Moredhel,

Bonjour MFerrand,

je crois que nous ne sommes pas sur la même longueur d'onde!

Tes références 'Equipement' sont, apparemment, toutes IDENTIQUES et ne permettront à aucune macro de s'appuyer sur elles pour déterminer si l'opérateur est à côté de la plaque ou non!

Sauf, si tu acceptes que la macro te demande à tout bout de champ si tu n'es pas en train de te tromper dès que le format devient ambigu et pourrait correspondre à 1 ou 2 types de n° de série.

Je continue en ayant encore relu ton post précédent...

...formats sont aussi divers et variés...

...quelques exemples...

Donc, si je comprends bien, tous les modèles possibles n'y sont pas!

Comment on fait, nous, pour te donner l'alerte avec tant d'inconnues???

Ça va aller!

A+

Bonsoir, Salut Curulis

Prenons ton modèle : CCC-LL => "###-[A-Z][A-Z]"

Voilà sa transcription en modèle de chaîne (pattern) : tu compares ton numéro de série à ce modèle en utilisant Like.

If NumSérie Like pattern Then "OK"

Cordialement.

Bonsoir MFerrand,

bête question d'un coupeur de cheveux en 4 :

Partant du principe énoncé par notre hôte, ...formats sont aussi divers et variés..., si le pattern proposé correspond à une étape obligée d'un n° de série vers un autre format définitif (voire qui passe par d'autres patterns similaires), la macro va approuver à tout-va?

Pour peu que tu tombes sur un opérateur conciliant avec la machine, ça va être un beau jus!

Belle journée, chez toi?

A+

Si le format correspond, ça ne veut pas dire que le numéro de série est bon !

Bonjour à vous 2 !

Tout d'abord, merci pour le temps passé sur mon sujet.

Effectivement; les formats sont "aussi divers et variés", qu'il y a de références équipements.

Par contre, une même référence sera toujours associée au même format !

Y a-t-il une formule dans le tableur qui ferait la même fonction que la fonction "Like" en macro ??

Bonjour,

Pas de fonction Excel, ni d'opérateur d'aillleurs, équivalente : d'abord les caractères génériques, pour les fonctions qui les acceptent se limitent à * et ?, et tout au plus ces fonctions recherchent un sous-texte mais ne font pas vraiment de comparaison à un modèle.

Like est un opérateur texte (comme &) mais qui n'a pas d'équivalent dans Excel.

Rien ne t'empêche cependant de bâtir un fonction personnalisée qui l'utilisera...

Note aussi que les modèles utilisés avec Like peuvent être plus sophistiqués que l'exemple que j'ai donné :

# est utilisé pour désigner un chiffre, mais on peut restreindre : [12] indique qu'à cet emplacement on ne peut trouver que 1 ou 2, [2-4] que les chiffres de 2 à 4 (soit 2, 3, ou 4) ... [une indication entre crochets concerne les variations d'un seul et même caractère à l'emplacement ou on la positionne dans le modèle]

[A-Z] indique lettre majuscule de A à Z, pareil on peut être plus précis...

[CPX] uniquement les lettres C, P ou X à cet emplacement

[A-HJ-NP-Z] ici toutes les lettres majuscules sauf I ou O

On peut également, plutôt que d'indiquer les caractères autorisés sur un emplacement, indiquer ceux qui ne le sont pas (ce qui peut parfois être plus commode...

Tu peux donc par exemple bâtir une fonction, utilisable sur ta feuille, à laquelle tu fournis comme arguments la chaîne à comparer et un identifiant du modèle à utiliser pour la comparaison, et qui renverra VRAI ou FAUX.

Function NUMCONFORME(num As String, mdl As Integer)
    Dim model
    Application.Volatile
    model = Array("", "modèle1", "modèle2", "modèle3", ...)
    If mdl >10 Or mdl < 1 Then NUMCONFORM = CVErr(xlErrNA): Exit Function
    NUMCONFORME = num Like model(mdl)
End Function

Ebauche de ce que tu peux faire...

Cordialement.

Rechercher des sujets similaires à "verification bonne saisie numero serie"