IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Création Code (identifiant) alpha numérique VBA excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    comemrcial
    Inscrit en
    Février 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : comemrcial

    Informations forums :
    Inscription : Février 2017
    Messages : 1
    Par défaut Création Code (identifiant) alpha numérique VBA excel
    Bonjour à tous,

    J'ai commencé il y a peu de temps l'initiation à la programmation VBA et je bloque sur la manière de générer un code client alpha-numérique pour chaque nouvel enregistrement d'une base de données à l'aide d'un formulaire.

    tout d'abord, les colonnes de ma base de données qui seront utiles pour le code client :
    colonne A2 : code client (qui sera générer automatiquement via le formulaire)
    colonne B2 : raison sociale (Ex: Microsoft)
    colonne I : département (Ex: 52)

    Le code client que je souhaiterai avoir sera composé de la première lettre du nom de la raison sociale (colonne B), suivi du numéro de département (colonne I) et ensuite d'un numéro d'incrémentation commençant par 0001. ce qui donnerai pour l'exemple ci-dessus : M52-0001

    Lors d'un nouvel enregistrement, par exemple raison sociale Apple et numéro de département 95, nous obtiendrions A95-0002 et ainsi de suite.

    En faisant des recherches, j'ai trouvé une formule que j'ai insérée dans la cellule code client mais il me manque l'incrémentation. et le but n'étant pas d'avoir une formule dans la cellule mais le code client généré par VBA via le formulaire.

    =GAUCHE(B2;1)&[DEPARTEMENT]&"-"

    Il faudrait intégrer cela au code vba et y ajouter l'incrémentation...

    et la je sèche depuis plusieurs jours malgré les recherches sur le net.

    D'avance je vous remercie pour vos réponses

    Cyril

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    tu peux regarder en utilisant les fonctions NB() ou NBVAL() sur ta colonne d'identifiant.

    Tu lui applique le format 0000 de telle sorte a avoir ton 0009 par exemple

    Lors de l'ajout de ton nouvel identifiant, tu prends la valeur de la cellule que tu colle au combo 1er lettre/dept.

    Une fois l'identifiant ajoute dans la colonne, le compteur se mettra a jour.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour,

    J'ajoute un complément à la réponse de Jean-Philippe André.

    Si tu optes pour cette méthode tu devras faire attention a ne jamais supprimer de client car tu pourrais créer des codes identiques.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    pour éviter l’écueil signalé par antonysansh tu peux avoir le plus grand index avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MAX(--DROITE(A2:A6;4))
    formule matricielle
    à traduire en anglais pour vba
    eric

Discussions similaires

  1. création automatique de collections dans VBA Excel
    Par amenis2304 dans le forum Général VBA
    Réponses: 1
    Dernier message: 29/11/2015, 04h47
  2. Sécurisation sources/code d'accès appli VBA Excel
    Par Pat_TOTO dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/09/2006, 17h39
  3. [VBA Excel] conversion d'une chaine en numérique
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/12/2005, 17h56
  4. [VBA Excel Word]Adapter un code Excel a Word
    Par Baxter67 dans le forum VBA Word
    Réponses: 4
    Dernier message: 08/08/2005, 23h43
  5. [VBA Excel] Comment écrire un code dans le ThisWorkBook ?
    Par WebPac dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/05/2005, 15h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo