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

Excel Discussion :

macro ou fonction ? pour générer un code à partir de 3 variables


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut macro ou fonction ? pour générer un code à partir de 3 variables
    bonjour,

    je suis novice en programmation en ligne de commande en vba(utilisateur de macro excel plutôt ), je me permets de vous solliciter pour avoir votre aide.

    Voici mon probléme :

    j'ai trois données : a) prix b) année c ) mois

    par exemple :

    Prix année mois code
    3.19 2009 11 19911

    pour générer le code , on ne garde que les centimes du prix donc 19 ( avec un masque ? pour l extraire ?)
    sur la variable année je ne gardes que le dernier chiffre donc le 9 ( opérateur de décalage ? >>4 par exemple ?

    la variable mois est conservée telle qu'elle donc 11

    le code génèré souhaité serait donc 19911

    merci de votre aide cf en piéce jointe le tableur type
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut
    formule

    Pour les formules ci dessous, j'ai présupposé que le prix est en A1, l'année en B1 et le mois en C1, adapte en fonction de la réalité

    les centimes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ARRONDI((A1-ARRONDI.INF (A1;0))*100;0)
    donc on prend le nombre avec ses centimes, moins la partie entiere. Il reste les centimes qu'on multiplie par 100

    l'année:
    on prend le premier caractere a partir de la droite


    Le mois est concservé tel quel

    Reste a regrouper
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =(ARRONDI((A1-ARRONDI.INF (A1;0))*100;0))&(DROITE(B1;1))&(C1)
    et si il te le faut en tant que nombre (la formule précédente restitue un texte, tu mets un CNUM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CNUM((ARRONDI((A1-ARRONDI.INF (A1;0))*100;0))&(DROITE(B1;1))&(C1))

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    merci d'avoir été aussi rapide
    je viens de tester la partie de cette formule bug mais le reste fonctionne
    =ARRONDI((A1-ARRONDI.INF (A1;0))*100;0)

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut
    Mmm, a vue de nez, c'est sans doute l'espace en trop

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ARRONDI((A1-ARRONDI.INF(A1;0))*100;0)
    Mon excel est en anglais, il me semble que arrondi en francais, ca s'écrit comme ca, mais vérifie peut-etre dans l'éditeur de formule que ma formulation est ok
    En anglais, j'ai testé ca et ca fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ROUND((A1-ROUNDDOWN(A1;0))*100;0)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    oups désolé !!! ça vient de chez moi ... j'avais mis 3.19 au lieu de 3,19 !!!

    encore merci pour ton aide .. et c'est vrai ta formulation était bonne merci pour m avoir fait gagner un temps précieux !!!

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut
    A vue de nez, le contenu de ta case n'est pas considérée comme un nombre mais comme une chaine de caractere

    essaue de faire CNUM(A1) a la place de A1 (ca convertit une chaine de caractere représentant un nombre en nombre)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ARRONDI((CNUM(A1)-ARRONDI.INF(CNUM(A1);0))*100;0)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    oups désolé !!! ça vient de chez moi ... j'avais mis 3.19 au lieu de 3,19 !!!

    encore merci pour ton aide .. et c'est vrai ta formulation était bonne merci pour m avoir fait gagner un temps précieux !!!

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut
    de rien

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    hello
    au cas ou, une simple concaténation ?
    =DROITE(B2;2)&DROITE(C2;1)&D2

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    660
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 660
    Points : 782
    Points
    782
    Par défaut
    Bonjour,

    Petit problème : que fait-on lorsqu'il n'y a pas de décimales dans le prix, par exemple 3.00 ?

    La formule suivante renvoie 0911
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MOD(A2;1)*100&MOD(B2;1000)&C2
    Pour obtenir 00911
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =(MOD(A2;1)*100&MOD(B2;1000)&C2)*1
    au format 00000

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    franchement je trouve les interventions tip top sur ce forum
    je reviendrai !!!!

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    660
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 660
    Points : 782
    Points
    782
    Par défaut
    Re,

    Petit bémol !

    Le MOD pour l'année ne fonctionne que jusqu'en 2009, après il renvoie deux chiffres.

    Il y a lieu de remplacer cette partie de formule par :MOD(B2;10)

Discussions similaires

  1. [XL-2013] Macro pour générer des codes barre
    Par lajim dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/03/2015, 12h49
  2. Réponses: 8
    Dernier message: 25/06/2014, 16h06
  3. Procédure pour générer un code à partir de l'ID dans mysql
    Par the watcher dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 19/04/2011, 20h13
  4. Quel outil UML (industriel) pour générer du code C# ?
    Par matsri2003 dans le forum Outils
    Réponses: 3
    Dernier message: 17/01/2005, 13h45

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