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

VBA Discussion :

case sur tout ou partie d'une chaine [Trucs & Astuces]


Sujet :

VBA

  1. #1
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2007
    Messages : 79
    Points : 52
    Points
    52
    Par défaut case sur tout ou partie d'une chaine
    Bonjour,

    Je travaille avec les codes NAF (3 chiffres + 1 lettre) que j'ai besoin de trier par secteur d'activité.

    Je voudrais faire quelquechose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select case code_naf
        case 01*                ' pour prendre tous ceux qui débutent par 01
            ........
        case 0520A to 0522B
            .............
         else case
    end select
    Le problème c'est que 01* ou "01*" ne passent pas.

    Emmanuel

  2. #2
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2007
    Messages : 79
    Points : 52
    Points
    52
    Par défaut
    Une solution consiste à faire des "case" imbriqués en commençant par tester la chaine sur les 2 premiers caractères (left(var,2)), puis sur les 3 premiers (left(var,3)), puis sur la chaine entière (var).

    Mais si quelqu'un a plus simple, je suis preneur.

    Emmanuel

  3. #3
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    TU as essayé avec quelque chose du genre?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Case "01000" To "01ZZZ"
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Une autre solution :

    tricher un peu avec le select case :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim code_naf As String
    code_naf = "0523Z"
    Select Case True
        Case code_naf Like "01*": MsgBox "Cas 1"
        Case code_naf >= "0520A" And code_naf <= "0522B": MsgBox "Cas 2"
        Case Else: MsgBox "Cas 3"
    End Select

  5. #5
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Citation Envoyé par Tofalu Voir le message
    Une autre solution :

    tricher un peu avec le select case :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim code_naf As String
    code_naf = "0523Z"
    Select Case True
        Case code_naf Like "01*": MsgBox "Cas 1"
        Case code_naf >= "0520A" And code_naf <= "0522B": MsgBox "Cas 2"
        Case Else: MsgBox "Cas 3"
    End Select
    Sympa l'astuce
    Mais dans ce cas, autant faire des if ...elseif ... non ?
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Ben tu evites les imbrications, la maintenance et la lisibilité sont facilitées

  7. #7
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2007
    Messages : 79
    Points : 52
    Points
    52
    Par défaut
    C'est tout à fait ce qu'il me fallait, merci.

    Emmanuel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Select case sur une partie d'une chaine de caractere
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/01/2012, 15h16
  2. Comparaison sur partie d'une chaine de caractère
    Par petit-ours dans le forum SAS Base
    Réponses: 2
    Dernier message: 13/07/2010, 11h24
  3. Requete sur une partie d'une chaine
    Par jmarey dans le forum Requêtes
    Réponses: 4
    Dernier message: 30/06/2009, 09h32
  4. Réponses: 4
    Dernier message: 20/11/2008, 15h16
  5. Grouper sur une partie d'une chaine de caractère
    Par radzar dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/05/2008, 12h14

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