1. #1
    Membre à l'essai
    Femme Profil pro
    bordeaux
    Inscrit en
    avril 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : bordeaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : avril 2017
    Messages : 13
    Points : 10
    Points
    10

    Par défaut problème d'extension dans une condition

    Bonjour je vous expose mon bout de code et je vous dis mon problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if j<10 and objFile.size<5000000 and LCase(objFSO.GetExtensionName(objFile.Name)) = "png" then
    En fait, j'aimerais prendre en compte plusieus extensions dans LCase(objFSO.GetExtensionName(objFile.Name)), j'ai essayé ("png";"pdf") et encore pas mal de chose mais ça ne marche pas La solution doit être simple mais je ne sais pas comment faire ..

    je précise que mon script en entier explore tous les fichiers d'un dossier et j'aimerais effectuer ma condition sur plusieurs extensions.

    Merci beaucoup pour le coup de patte !!

  2. #2
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 018
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 018
    Points : 7 885
    Points
    7 885

    Par défaut

    Salut

    Une solution comme une autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim ArrType
    ArrType = "png,pdf,txt,doc,jpg"
    TheType = LCase(objFSO.GetExtensionName(objFile.Name))
    If j < 10 And objFile.Size < 5000000 Then
        If InStr(1, ArrType, TheType, vbTextCompare) Then
            'les conditions sont remplies
            msgbox "les conditions sont remplies"
            Else
            'le type du fichier ne correspond pas
            msgbox "les conditions ne sont pas remplies"
        End If
    End If
    Dans ArrType , tu y mes tous les types qui serviront de filtre.

  3. #3
    Membre à l'essai
    Femme Profil pro
    bordeaux
    Inscrit en
    avril 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : bordeaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : avril 2017
    Messages : 13
    Points : 10
    Points
    10

    Par défaut

    Je n'ai pas réussi à faire marcher ta proposition mais je me suis inspiré des doubles conditions pour arriver à mes fins .. je note le sujet comme résolu car j'ai réglé mon problème mais ta solution m’intéresse et j'aimerais bien essayer de la faire marcher

  4. #4
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 018
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 018
    Points : 7 885
    Points
    7 885

    Par défaut

    Salut

    La variable ArrType contient tous les extensions des fichiers que l'on veut traiter.
    La variable TheType contient l'extension du fichier en cours (en minuscule).

    La fonction InStr(1, ArrType, TheType, vbTextCompare) renvoie la position de la variable TheType se trouvant dans la variable ArrType,

    si TheType a été trouvé dans ArrType, la position renvoyée est plus grande ou égal à 1, donc True (vraie)
    si TheType n'a pas été trouvé dans ArrType, la position renvoyée est égal à -1, donc False (faut)

    Pour VB, dans une condition, tous chiffres >= 1 est interprété comme un boolean pour valeur égal à True, à l'inverse, si le chiffre vaut -1, VB l’interprète comme False.
    If InStr(1, ArrType, TheType, vbTextCompare) Then peut être écrit/détaillé aussi comme cela,
    If CBool(InStr(1, ArrType, TheType, vbTextCompare)) = True Then, se qui revient au même.

    Pour un seul If ... Then englobant 3 conditions pour ton besoin, cela donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If j < 10 And objFile.Size < 5000000 And InStr(1, ArrType, LCase(objFSO.GetExtensionName(objFile.Name)), vbTextCompare) Then

  5. #5
    Membre à l'essai
    Femme Profil pro
    bordeaux
    Inscrit en
    avril 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : bordeaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : avril 2017
    Messages : 13
    Points : 10
    Points
    10

    Par défaut

    Super !! Je comprends bien mieux et j'ai réussi à faire fonctionner ! Un grand merci

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

Discussions similaires

  1. Problème dans une condition if
    Par soso78 dans le forum Débuter
    Réponses: 2
    Dernier message: 11/06/2010, 12h16
  2. Problème dans une condition
    Par amartik dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 15/02/2010, 17h22
  3. [z/OS] Problème dans une condition
    Par a_karim_fr dans le forum Cobol
    Réponses: 6
    Dernier message: 19/11/2009, 10h31
  4. problème de substring dans une condition
    Par spols dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2009, 00h16
  5. problème de guillemets dans une formule shell
    Par dim_italia dans le forum VBA Access
    Réponses: 7
    Dernier message: 18/08/2003, 12h46

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