Verifier si dossier existe début du nom (Sur MAC) [Résolu/Fermé]

Signaler
Messages postés
52
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
7 avril 2019
-
Messages postés
52
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
7 avril 2019
-
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

Messages postés
19325
Date d'inscription
samedi 17 mars 2007
Statut
Contributeur
Dernière intervention
13 juillet 2020
4 812
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
Messages postés
52
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
7 avril 2019

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"

:(
Messages postés
19325
Date d'inscription
samedi 17 mars 2007
Statut
Contributeur
Dernière intervention
13 juillet 2020
4 812
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:
http://www.rondebruin.nl/mac.htm

Regarde notamment cette page où il parle de la macro qu'il a développé pour ressembler à Dir: http://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
Messages postés
52
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
7 avril 2019

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.
Messages postés
23384
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
12 juillet 2020
6 237
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
Messages postés
52
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
7 avril 2019

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
Messages postés
23384
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
12 juillet 2020
6 237
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
Messages postés
52
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
7 avril 2019

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
Messages postés
23384
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
12 juillet 2020
6 237
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.
Messages postés
52
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
7 avril 2019

Bien dommage je suis repassé au PC et là pas de problème..
Messages postés
23384
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
12 juillet 2020
6 237
Comme déjà dit tu testes la partie gauche de la chaine et c'est réglé.
Messages postés
52
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
7 avril 2019

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