Composer un chemin Mac avec des cellules

Bonjour tout le monde,

J'ai fait un classeur avec plusieurs macros qui fonctionne très bien quand je l'envoi sur différents PC.

Mais sur les Mac ça coince.

Dans plusieurs macros je vérifie l'existence d'un fichier dont le chemin est le résultat de plusieurs cellules mises bout à bout.

Dans la cellule F8 de la feuille "Listes" j'indique le début du chemin en langage Mac : "Macintosh HD:test" (sans les guillemets).

Voici un extrait du code :

commande = [H1] & " " & [E3]
archive = Sheets("Listes").Range("F8").Value & Application.PathSeparator & commande
If Dir(archive & ".pdf") = "" Then

Dans H1 on trouve le numéro de commande (ex : AB1701003)

Dans E3 on trouve le nom du Fournisseur (ex : Toto)

Avec ce bout de code j’essaie de vérifier si le fichier "AB1701003 Toto.pdf" existe avant de passer à la suite de la macro.

Mais ça ne fonctionne pas, j'obtiens l'erreur 68 : Périphérique non disponible, sur la ligne avec Dir.

Je ne comprends pas ce qui cloche

Peut-être que la fonction Dir ne fonctionne pas pareil sur les Mac ?

Bonjour

Effectivement pour la fonction DIR qui ne fonctionne pas de la même manière

Possible de voir le code complet ?

Cordialement

Merci pour l’intérêt porté à ma question, j'avais peur que personne ne puisse m'aider ici.

Voici le code :

Sub Signature_PDF()
On Error GoTo message_erreur
If Sheets("Listes").Range("J2").Value = "MAC" Then
MsgBox "Bouton non compatible avec un Mac", vbExclamation
Exit Sub
End If
commande = [H1] & " " & [E3]
archive = Sheets("Listes").Range("F8").Value & Application.PathSeparator & commande
chantier = Sheets("Listes").Range("F8").Value & Application.PathSeparator & [C8]
archive_chantier = chantier & Application.PathSeparator & commande
If Dir(archive & ".pdf") = "" Then
Range("G34:J39").Select
    ActiveSheet.Pictures.Insert(Sheets("Listes").Range("F13").Value).Select
    Selection.ShapeRange.Height = 87.874015748
    Selection.ShapeRange.IncrementLeft 60
    Selection.ShapeRange.Name = "Signature"
    Range("A1").Select
If Dir(chantier, vbDirectory) = "" Then
MkDir (chantier)
End If
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=archive, _
    Quality:=xlQualityStandard, IncludeDocProperties:=False, _
    IgnorePrintAreas:=False, OpenAfterPublish:=False
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=archive_chantier, _
    Quality:=xlQualityStandard, IncludeDocProperties:=False, _
    IgnorePrintAreas:=False, OpenAfterPublish:=True
ActiveSheet.Shapes.Range(Array("Signature")).Select
Selection.Delete
If MsgBox("Voulez-vous sauvegarder ?", vbYesNo) = vbYes Then
ActiveWorkbook.Save
Else
End If
Else
If MsgBox("Remplacer le fichier existant ?", vbOKCancel) = vbOK Then
Range("G34:J39").Select
    ActiveSheet.Pictures.Insert(Sheets("Listes").Range("F13").Value).Select
    Selection.ShapeRange.Height = 87.874015748
    Selection.ShapeRange.IncrementLeft 60
    Selection.ShapeRange.Name = "Signature"
    Range("A1").Select
If Dir(chantier, vbDirectory) = "" Then
MkDir (chantier)
End If
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=archive, _
    Quality:=xlQualityStandard, IncludeDocProperties:=False, _
    IgnorePrintAreas:=False, OpenAfterPublish:=False
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=archive_chantier, _
    Quality:=xlQualityStandard, IncludeDocProperties:=False, _
    IgnorePrintAreas:=False, OpenAfterPublish:=True
ActiveSheet.Shapes.Range(Array("Signature")).Select
Selection.Delete
If MsgBox("Voulez-vous sauvegarder ?", vbYesNo) = vbYes Then
ActiveWorkbook.Save
Else
End If
Else
End If
End If
Exit Sub
message_erreur:
ActiveSheet.Shapes.Range(Array("Signature")).Select
Selection.Delete
MsgBox Err.Description
End Sub

Comme je n'ai pas encore trouvé de solution pour les Mac j'ai alors ajouté une cellule dans laquelle j'indique si l'ordinateur utilisé est un Mac ou un PC, et si c'est un Mac un message indique que la fonction n'est pas compatible et l'arrête.

Le but de la macro est d'insérer une image correspondant à une signature informatique ( pour un bon de commande) puis d'enregistrer la feuille en pdf à 2 endroits différents puis de supprimer la signature.

Le nom du fichier est une combinaison de cellules (n° du bon de commande + fournisseur) : commande = [H1] & " " & [E3]

Le chemin du premier lieu d'enregistrement est indiqué dans une cellule : Sheets("Listes").Range("F8").Value

Le second lieu d'enregistrement est un sous-dossier du précédent dont le nom est le n° du chantier indiqué dans une cellule : chantier = Sheets("Listes").Range("F8").Value & Application.PathSeparator & [C8

Si le fichier existe déjà, une confirmation est demandée pour l'écraser et si le sous-dossier au nom du numéro de chantier n'existe pas il est alors créé.

J'ai l'impression que mon code n'est pas très propre, surtout quand je vois la fin :

Else
End If
Else
End If
End If
Exit Sub

Mais ça fonctionne... sur PC

RE

Comme je n'ai pas encore trouvé de solution pour les Mac j'ai alors ajouté une cellule dans laquelle j'indique si l'ordinateur utilisé est un Mac ou un PC, et si c'est un Mac un message indique que la fonction n'est pas compatible et l'arrête

.

Nulle besoin de mettre MAC dans une cellule. Utilisez ce code :

If Application.OperatingSystem Like "*MAC*" Then
   MsgBox "Bouton non compatible avec un Mac", vbExclamation
Exit Sub

Qu'y a-t-il dans H1 et E3 ??

Pour le reste je vais vérifier sous MAC

Crdlt

Application.OperatingSystem c'est déjà pas mal

Dans H1 on trouve le numéro de commande (ex : AB1701003)

Dans E3 on trouve le nom du Fournisseur (ex : Toto)

Et j'obtiens donc le fichier "AB1701003 Toto.pdf"

Rechercher des sujets similaires à "composer chemin mac"