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 :

Comment eviter de faire un Select Case avec beaucoup de valeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 161
    Par défaut Comment eviter de faire un Select Case avec beaucoup de valeur
    Bonjour

    J'ai une macro qui est un formulaire de saisie de valeur et qui crée un fichier texte avec ces valeurs.

    Je dois transformer certaines information de se formulaire dans le fichier texte c'est à dire que si la personne choisit dans la liste "Système de comptabilité" et bien dans le formulaire je vais transformer cette valeur en "SC".

    Le probleme c'est que j'ai beaucoup de valeur à "transcoder" et je voudrais eviter de faire des "Select Case" interminable. en revanche j'ai toutes les correspondance sur des feuilles Excel, avez un moyen a me proposer plus optimal ?

    Merci

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Tu peux utiliser la fonction recherchev d'excel en VBA en utilisant une variable pour passer la valeur a rechercher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim strvaleur As String
     
    strvaleur = Application.WorksheetFunction.VLookup("Système de comptabilité", Range("A1:B500"), 2, 0)

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 161
    Par défaut Select Case
    C'est justement pour ne pas à avoir a écrire toutes les valeurs que je voudrais un truc,je voudrais l'equivalent d'une jointure en sql pour eviter le code ci-dessous ( car là cest juste un echantillon j ai encore une cinquante de valeur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
     
     
    Select Case CSEmetteur
        Case "ACI = SA de comptabilité Inventaire"
             Systeme_Emetteur = "ACI"
        Case "Administration du personnel"
             Systeme_Emetteur = "ADP"
        Case "SA AXAPAC"
             Systeme_Emetteur = "AXAPAC"
        Case "SA AXIOME V1"
             Systeme_Emetteur = "AXV1"
        Case "SA AXIOME V2"
             Systeme_Emetteur = "AXV2"
        Case "SA AXIOME V4"
             Systeme_Emetteur = "AXV4"
        Case "Comptabilité des Opération d'Assurances"
             Systeme_Emetteur = "COA"
        Case "Comptabilité Inventaire"
             Systeme_Emetteur = "CPTINV"
        Case "SA Datamart UJ"
             Systeme_Emetteur = "DMTUJ"
        Case "Directions techniques"
             Systeme_Emetteur = "DT"
        Case "Equipe rentes individuelles"
             Systeme_Emetteur = "ERI"
        Case "SA Datamart FIDJI"
             Systeme_Emetteur = "FIDJI"
        Case "SA HR ACCESS"
             Systeme_Emetteur = "HR ACCESS"
        Case "SA Interfaceur, Compléteur et Générateur"
             Systeme_Emetteur = "ICG"
        Case "SA Infocentre"
             Systeme_Emetteur = "INFOC"
        Case "SA Datawarehouse et Datmart de l'Inventaire Permanent"
             Systeme_Emetteur = "IP"
        Case "SA MACAO + SARI + JCL DF"
             Systeme_Emetteur = "MACAO"
        Case "SA NOVA"
             Systeme_Emetteur = "NOVA"
        Case "SA RCV + Tronc commun"
             Systeme_Emetteur = "RCV"
        Case "SA RDU"
             Systeme_Emetteur = "RDU"
        Case "SA RPS"
             Systeme_Emetteur = "RPS"
        Case "RXD"
             Systeme_Emetteur = "RXD"
        Case ""
             Systeme_Emetteur = ""
        Case "SA Comptable"
             Systeme_Emetteur = "SCG"

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    en revanche j'ai toutes les correspondance sur des feuilles Excel, avez un moyen a me proposer plus optimal ?
    C'est pour cela que je t'ai proposé Vlookup

    tu peux remplacer le texte de recherche par ta variable et la plage par l'endroit ou est stocké ta liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strvaleur = Application.WorksheetFunction.VLookup(CSEmetteur, Range("A1:B500"), 2, 0)
    Cette méthode d'exonere du select case a rallonge

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 161
    Par défaut
    ah ok !!

    Je viens d'essayer: j'ai mis sur ma sheet1 l'ensemble des codes attendu de A1 à A23 et de B1 a B23 leur libellé correspondant

    j'ai mis dans le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Strvaleur = Application.WorksheetFunction.VLookup(CSEmetteur, Range("A1:B23"), 2, 0)
    Mais il me plante une erreur:

    Impossible de lire la propriété VLookup de la classe WorkSheetFunction

    en tout cas merci pour ta reponse rapide !

  6. #6
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,

    essaie de montrer plus qu'une ligne de ton code, car si l'erreur vient d'ailleurs, comment veux-tu que quelqu'un puisse le savoir !

  7. #7
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    quel est le type de ta variable CSEmetteur ?

Discussions similaires

  1. Faire un Select like avec une liste
    Par kassar32 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/12/2011, 13h31
  2. Select Case avec plusieurs variables
    Par sphynxounet dans le forum VB.NET
    Réponses: 10
    Dernier message: 10/08/2009, 18h16
  3. Select case avec then qui retourne une variable
    Par dinette dans le forum SQL
    Réponses: 6
    Dernier message: 06/07/2009, 11h03
  4. select case avec if
    Par *kitty* dans le forum VB 6 et antérieur
    Réponses: 24
    Dernier message: 27/11/2008, 15h59
  5. [MySQL] comment eviter de faire 2 fois la meme requete
    Par lelapinrusse dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/05/2008, 00h14

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