Verifier si dossier existe début du nom (Sur MAC)

Résolu
Jefekoi Messages postés 55 Statut Membre -  
Jefekoi Messages postés 55 Statut Membre -
Bonjour,

Je suis Excel 16.16.8 Pour
Configuration: Macintosh


Je voudrais vérifier si un dossier existe en connaissant uniquement le début du nom du dossier

J'ai essayé ceci mais ça ne marche pas sur MAC

if Dir("/Users/eric/Desktop/TestF") & "*" = "" Then
MsgBox "Le répertoire n'existe pas"
Else
MsgBox "Le répertoire existe"
End If


Merci pour votre aide.

Eric

8 réponses

  1. _Ritchi_ Messages postés 21130 Date d'inscription   Statut Contributeur Dernière intervention   6 136
     
    Bonjour,

    Essaie plutôt cette syntaxe:
      If Dir("Macintosh HD:Users:eric:Desktop:TestF") & "*" = "" Then
        MsgBox "Le répertoire n'existe pas"
      Else
        MsgBox "Le répertoire existe"
      End If
    

    Note: "Macintosh HD" est le nom de mon disque dur : à adapter selon son propre cas

    Ritchi
    0
  2. Jefekoi Messages postés 55 Statut Membre
     
    Merci pour ton aide

    CA marche mais si j'indique dans vba le début d'un nom de dossier bidon (qui n'existe pas) il me dit "Le répertoire existe"

    :(
    0
  3. _Ritchi_ Messages postés 21130 Date d'inscription   Statut Contributeur Dernière intervention   6 136
     
    Bonjour,

    Si j'en crois cette page de support Microsoft Office, la fonction DIR sur Mac ne supporte pas les caractères génériques (* et ?) :
    Sur Macintosh, ces caractères sont considérées comme des caractères de nom de fichier valide et ne peuvent pas être utilisés comme des caractères génériques pour spécifier plusieurs fichiers


    Je t'invite à regarder les indications données par Ron de Bruin ici:
    https://www.rondebruin.nl/mac.htm

    Regarde notamment cette page où il parle de la macro qu'il a développé pour ressembler à Dir: https://www.rondebruin.nl/mac/mac013.htm

    Quand tu auras écrit le code qui marche, j'espère que tu reviendras le donner ici afin qu'il profite aux autres personnes dans le même cas que toi.

    Ritchi
    0
  4. Jefekoi Messages postés 55 Statut Membre
     
    Merci pour ton aide j'ai testé pas mal d'options sur le site de Ron de Bruin mais rien ne fonctionne .. pas facile à trouver.

    En fait j'ai un dossier où il y a des PDF

    exemple :
    A1458 F1PAA.pdf
    B8555 RrPRT.pdf
    ETC.

    Je voudrais simplement récupérer les 5 premiers caractères : A1458 (j'utilise un "MID" pour ça).

    Ensuite je voudrais qu'il aille chercher un dossier qui justement commence par la même chose que le PDF

    Dossier ==> A1458HgTTY (commence par le même début du PDF mais ne se termine pas forcément par la même chose.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    De plus, si c'est un répertoire que tu cherches il faudrait peut-être indiquer à Dir() que tu veux cet attribut en question : , vbDirectory
    Voir l'aide de Dir :
    vbNormal 0 (Par défaut) Spécifie les fichiers sans attributs
    vbDirectory 16 Spécifie les dossiers ainsi que les fichiers sans attributs.

    eric
    0
  7. Jefekoi Messages postés 55 Statut Membre
     
    Merci , j'ai essayé aussi cette option :(

    dossier = "/Users/eric/Desktop/Test" & "*"
    If Dir(dossier, vbDirectory) = "" Then
    MsgBox "Le répertoire n'existe pas"
    Else
    MsgBox "Le répertoire existe"
    End If
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Ben oui, ça ne va pas changer le fait que sur Mac les jokers sont reconnus en tant que caractères uniquement.
      Il faut les enlever et que tu testes la partie gauche de la chaine pour voir si elle correspond.
      eric
      0
  8. Jefekoi Messages postés 55 Statut Membre
     
    Ce qui est marrant c'est pour un fichier l'asterix fonctionne mais pas pour les dossiers.

    J'ai essayé en mettant un vrai nom de dossier et à la fin l'antislash , ça ne marche pas

    dossier = "/Users/eric/Desktop/DTes/"
    If Dir(dossier, vbDirectory) = "" Then
    MsgBox "Le répertoire n'existe pas"
    Else
    MsgBox "Le répertoire existe"
    End If


    J'ai essayé en mettant un vrai nom de dossier et pas d'antislash , ça marche

    dossier = "/Users/eric/Desktop/DTes"
    If Dir(dossier, vbDirectory) = "" Then
    MsgBox "Le répertoire n'existe pas"
    Else
    MsgBox "Le répertoire existe"
    End If


    J'ai essayé en mettant un vrai nom de dossier et pas d'antislash mais un "*", ça marche pas
    dossier = "/Users/eric/Desktop/DT" & "*"
    If Dir(dossier, vbDirectory) = "" Then
    MsgBox "Le répertoire n'existe pas"
    Else
    MsgBox "Le répertoire existe"
    End If
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      L'aide est claire : pas de joker pour les Mac
      Dans Microsoft Windows, La fonction Dir permet d'utiliser des jokers ou caractères génériques (* ou ?) pour sélectionner plusieurs fichiers. Sur le Macintosh, ces caractères sont considérés comme des caractères de noms de fichiers valides et ne peuvent être utilisés comme caractères génériques pour spécifier des fichiers multiples.
      0
    2. Jefekoi Messages postés 55 Statut Membre
       
      Bien dommage je suis repassé au PC et là pas de problème..
      0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Comme déjà dit tu testes la partie gauche de la chaine et c'est réglé.
      0
  9. Jefekoi Messages postés 55 Statut Membre
     
    Bon j'ai fais une petite alternative à améliorer

    En gros il affiche en AA les dossiers d'un répertoire donné . et ensuite on lui demande de chercher "D5588*"

    Et ça marche :)

    Sub TesteSiDossierExiste()
    monrepprinc = "/Users/eric/Desktop/Divers/"
    mesrepssub = Dir(monrepprinc, vbDirectory)
    Do While mesrepssub <> ""
    If mesrepssub <> "." And mesrepssub <> ".." Then
    If (GetAttr(monrepprinc & mesrepssub) And vbDirectory) = vbDirectory Then
    a = a + 1
    Range("A" & a).Value = mesrepssub
    End If
    End If
    mesrepssub = Dir
    Loop

    numero = "D5588*"
    Set celluletrouvee = Range("A1:A20").Find(numero, lookat:=xlWhole)

    If celluletrouvee Is Nothing Then
    MsgBox ("pas trouvé")
    Else
    ligne = celluletrouvee.Row
    col = celluletrouvee.Column
    MsgBox ("trouvé : ligne = " & ligne & " , colonne = " & col)
    End If
    End Sub
    0