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

Résolu
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. 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
    1. 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
      1. 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
        1. 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
          1. Contributeur
            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
            1. 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. Contributeur
                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
            2. 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. Contributeur
                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. Bien dommage je suis repassé au PC et là pas de problème..
                0
              3. Contributeur
                Comme déjà dit tu testes la partie gauche de la chaine et c'est réglé.
                0
            3. 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