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

VB 6 et antérieur Discussion :

Faire un "Dir" avec plusieurs extensions


Sujet :

VB 6 et antérieur

  1. #1
    Invité(e)
    Invité(e)
    Par défaut [VB6]Faire un "Dir" avec plusieurs extensions
    Bonjour,

    Dans le cadre d'une application de gestion d'images, j'ai une fonction qui recherche les images dans un dossier particuler.
    Actuellement, seuls les jpg sont gérés donc la fonction est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    strfic = Dir(Dossier & "\*.jpg", vbNormal)
    If strfic = "" Then
     [...]
    End If
    Do While strfic <> ""
    [...]  
      strfic = Dir()
    Loop
    Je dois modifier cette fonction (entre autres) pour qu'elle ouvre également les wmf et les emf. Je n'ai pas trouvé quelle syntaxe donner à Dir, donc si vous pouviez m'éclairer. D'avance merci.
    Dernière modification par ouskel'n'or ; 15/05/2006 à 15h57.

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Tu peux (un exemple se trouve dans l'aide en ligne) ajouter toutes les extensions que tu veux, y compris avec "jokers"

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Merci, mais je n'ai pas trouvé de tel exemple dans l'aide, quelle syntaxe dois-je mettre dans la fonction ?
    J'ai essayé strfic = Dir(gstrDossier & "\*.jpg,*.emf", vbNormal)
    et strfic = Dir(gstrDossier & "\*.jpg;*.emf", vbNormal)
    mais ça ne fonctionne pas.

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Ne trouve plus, mais bon :
    utilise *.* et élimines ceux qui ne sont pas bmp, jpg, etc... dans ta boucle, tout simplement !

  5. #5
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    Bon je n'ai jamais essayé ça mais test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dir(gstrDossier & "\*.jpg" or "\*.emf"
    ou qqch dans le style.
    Enfin je n'est jamais travaillé la dessus, c'est juste une idée

  6. #6
    Invité(e)
    Invité(e)
    Par défaut
    Merci à vous deux.

    Pour
    Dir(gstrDossier & "\*.jpg" or "\*.emf"ça me renvoie un booléen, donc j'ai une erreur de type à l'excécution

    et remplacer par *.*, j'y avais pensé mais ça complique pas mal le code suivant car j'ai besoin de faire ça à pluseurs endroits. Je pense que c'est possible donc je continu de chercher.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    coucou,

    j'ai pas super bien compris, tu veux trouver toutes les images d'un dossier?
    tu connais toutes les extensions qui peuvent etre prises par les images?

    jpropose un truc sans conviction

    tu nous fait une procedure du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Public sub trouverimage(byref nom as string)
     
    strfic = Dir(Dossier & nom, vbNormal)
    If strfic = "" Then
    [...]
    End If
    Do While strfic <> ""
    [...] 
    strfic = Dir()
    Loop
     
    end sub
    et hop tu l'appele avec en parametre "\*.jpg" puis tous ceux que tu veux. Non?

  8. #8
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    c'est clair, j'y avait pas pensé. mettre en parametre le format avec la procédure que tu as deja fait me parait pas mal du tout

  9. #9
    Invité(e)
    Invité(e)
    Par défaut
    Effectivement ça peut marcher. Mais encore une fois, ça fais pas mal bouger le code.
    Je vais aller dans ce sens là .
    Merci à tous.

    J'attend un peu avant de mettre "Résolu" voir si vraiment il n'est pas possible de mettre plusieurs extensions directement dans la fonction Dir.

  10. #10
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    Pourquoi ne met tu pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     strfic = Dir(Dossier & "\*.jpg", vbNormal)
    strfic = strfic & Dir(Dossier & "\*.emf", vbNormal)
    ....
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     strfic = Dir(Dossier & "\*.jpg", vbNormal) & Dir(Dossier & "\*.emf", vbNormal)

  11. #11
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par malhivertman1
    Pourquoi ne met tu pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     strfic = Dir(Dossier & "\*.jpg", vbNormal)
    strfic = strfic & Dir(Dossier & "\*.emf", vbNormal)
    ....
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     strfic = Dir(Dossier & "\*.jpg", vbNormal) & Dir(Dossier & "\*.emf", vbNormal)
    J'avais testé ça aussi.
    En fait, dans le loops lors de l'appel de Dir()
    on récupère un truc du genre : photo1.jpgfichier.emf
    ça concatène les deux résultats, ça ne les ajoute pas (& ou +).

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu es sur VB ou VBA ?
    Ce que tu peux faire est de faire un dir sur fichier normal et tester les extensions de fichier pour chacun d'eux
    strfic = Dir(Dossier, vbNormal)
    ok = instr(lcase(strfic),".jpg")<> 0 or instr(lcase(strfic),".cequetuveux"))<>0
    if ok then tousquetuveux
    N'oublie pas de mettre cequetuveux en minuscules

    Tu dis

  13. #13
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    504
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 504
    Points : 125
    Points
    125
    Par défaut
    bonjour
    ne pourais tu pas appeler le dir de window par appel shell
    et là tu peux faire dir *.jpg *.bmp

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Le dir dos imposerait malheureusement de passer par la création d'un fichier txt intermédiaire difficilement exploitable. Tu peux faire l'essai...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Call Shell("cmd /c dir c:\Rep\*.jpg /o > c:\Dirjpg.txt")
    Tu n'as toujours pas dit si tu étais en VB ou VBA
    Pour ma part, j'utilise ça. Je sais qu'il existe une syntaxe plus élaborée mais puisque ça marche depuis 97...
    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
     
    'Place les noms dans un listbox
    Sub LectureDesFichiers()
    Dim Chemin, NomFich, ok As Boolean
    Chemin = "D:\CLIPART\Fleurs\"
        ListFich.Clear
        ' Affiche les noms des fichiers du répertoire
        ' Extrait la première entrée.
        NomFich = Dir(Chemin, vbNormal)
        Do While NomFich <> ""   ' Commence la boucle.
            ' Ignore les fichiers ne comportant pas la bonne extension
            ok = InStr(LCase(NomFich), ".jpg") <> 0 Or InStr(LCase(NomFich), ".emf") <> 0
            If ok Then
                ListFich.AddItem LCase(NomFich)
            End If
            NomFich = Dir    ' Extrait l'entrée suivante.
        Loop
    End Sub
     
    'Place les noms dans un tableau
    Sub ListeLesFichiers()
    Dim Chemin, ListFich(), NomFich, ok As Boolean
    Chemin = "D:\CLIPART\Fleurs\"
        NomFich = Dir(Chemin, vbNormal)
        Do While NomFich <> ""   ' Commence la boucle.
            ' Ignore les fichiers ne comportant pas la bonne extension
            ok = InStr(LCase(NomFich), ".jpg") <> 0 Or InStr(LCase(NomFich), ".emf") <> 0
            If ok Then
                j = j + 1
                ReDim Preserve ListFich(j)
                ListFich(j) = NomFich
            End If
            NomFich = Dir    ' Extrait l'entrée suivante.
        Loop
        'Contrôle
        For i = 1 To j
             MsgBox ListFich(i)
        Next
    End Sub
    Reste à adapter...

    A+

  15. #15
    Invité(e)
    Invité(e)
    Par défaut
    Je développe en VB6.
    En tout cas merci ouskel'n'or, je regarde ça dès que possible.

Discussions similaires

  1. [XL-2007] Gérer images avec plusieurs extension
    Par maxval18 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/08/2012, 14h52

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