XL pour MAC Octroyer les droits

  • Initiateur de la discussion Initiateur de la discussion telemarrk
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

telemarrk

XLDnaute Occasionnel
Bonjour,

J'ai développé un code VBA pour Excel sous Windows qui répertorie automatiquement tous les fichiers PDF d'un dossier nommé "PDF". Ce système fonctionne parfaitement. J'ai réussi à adapter ce code pour Excel sur Mac, mais je rencontre un problème : à chaque ajout d'un nouveau fichier PDF dans le dossier, je dois cliquer sur "Octroyer les droits".

Je me demande s'il existe une solution pour éviter cette étape répétitive sur Mac.

Merci
 
Bonjour telemarrk,

Je ne suis pas sur MAC et je ne vois pas pourquoi il faut "octroyer des droits".

Par contre je pense que cette macro ne devrait poser aucun problème sur MAC :
VB:
Sub ListerPDF()
Dim ps$, chemin$, fichier$, a(), n&
ps = Application.PathSeparator
chemin = ThisWorkbook.Path & ps & "PDF" & ps
If Dir(chemin, vbDirectory) = "" Then MsgBox "Le dossier ""PDF"" doit être dans le même dossier que le fichier de la macro !", 48: Exit Sub
fichier = Dir(chemin) '1er fichier du dossier
While fichier <> ""
    If Right(fichier, 4) = ".pdf" Then
        ReDim Preserve a(n)
        a(n) = fichier
        n = n + 1
    End If
    fichier = Dir 'fichier suivant
Wend
'---restitution---
With [A2] '1ère cellule de destination, à adapter
    .Offset(n).Resize(Rows.Count - n - .Row + 1).ClearContents 'RAZ en dessous
    If n Then .Resize(n) = Application.Transpose(a) _
        Else MsgBox "Aucun fichier PDF dans le dossier..."
End With
End Sub
A+
 
bonjour & toutes & à tous, bonjour @telemarrk
Merci pour le code, mais il ne résout pas le problème d'accès.
Ce problème ce situe-t-il dans EXCEL (avec l'exécution de la macro) ou lorsque tu veux ajouter manuellement un nouveau pdf dans ton répertoire ?
Moi non plus je n'ai pas de MAC, mais sur Windows on peut aussi mettre des droits (ce que je n'utilise plus étant retraité et tout seul sur mon PC).
C'est donc peut-être un problème de droits à appliquer à ton répertoire.

À bientôt
 
le code vba :
Option Explicit

Private Sub Workbook_Open()
' Désactiver les mises à jour pour optimiser les performances
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

' Appeler la fonction pour actualiser les factures
ActualiserFactures

' Réactiver les mises à jour une fois terminé
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub

Sub ActualiserFactures()
Dim ws As Worksheet
Dim cheminDossier As String
Dim dictFichiers As Collection ' Utilisation d'une Collection à la place de Scripting.Dictionary
Dim tableauFactures() As Variant
Dim derniereLigne As Long
Dim i As Long
Dim compteur As Long
Dim fichier As String
Dim nomFichier As String
Dim dateCreation As Date
Dim fichierExiste As Boolean

' Définir le chemin du dossier PDF (adapté pour macOS)
cheminDossier = "/Users/telemark/Desktop/En cours/pdf/" ' Remplacez par le chemin correct sur macOS

' Créer une référence à la feuille "factures"
On Error Resume Next
Set ws = ThisWorkbook.Worksheets("factures")
On Error GoTo 0

' Si la feuille n'existe pas, la créer
If ws Is Nothing Then
Set ws = ThisWorkbook.Worksheets.Add
ws.Name = "factures"
End If

' Ajouter les titres aux colonnes A, B et C si nécessaire
If ws.Cells(6, "A").Value = "" Then
ws.Cells(6, "A").Value = "N°"
ws.Cells(6, "B").Value = "Factures"
ws.Cells(6, "C").Value = "Date de dépôt"
ws.Range("A6:C6").Font.Bold = True
ws.Range("A6:C6").HorizontalAlignment = xlCenter
End If

' Créer une collection pour stocker les fichiers existants
Set dictFichiers = New Collection

' Remplir la collection avec les fichiers déjà listés
derniereLigne = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
If derniereLigne >= 7 Then
For i = 7 To derniereLigne
dictFichiers.Add ws.Cells(i, "B").Value, ws.Cells(i, "B").Value
Next i
End If

' Initialiser un tableau pour stocker les nouvelles données
compteur = 0
ReDim tableauFactures(1 To 1000, 1 To 3) ' Ajustez la taille selon vos besoins

' Parcourir tous les fichiers PDF dans le dossier (méthode alternative pour macOS)
fichier = Dir(cheminDossier & "*.pdf")
Do While fichier <> ""
nomFichier = fichier
dateCreation = FileDateTime(cheminDossier & fichier)

' Vérifier si le fichier n'est pas déjà dans la collection
fichierExiste = False
On Error Resume Next
fichierExiste = Not IsEmpty(dictFichiers(nomFichier))
On Error GoTo 0

If Not fichierExiste Then
compteur = compteur + 1
' Ajouter les nouvelles données au tableau
tableauFactures(compteur, 1) = derniereLigne - 6 + compteur
tableauFactures(compteur, 2) = nomFichier
tableauFactures(compteur, 3) = dateCreation
End If

fichier = Dir
Loop

' Si des nouveaux fichiers ont été trouvés, les ajouter à la feuille
If compteur > 0 Then
ws.Cells(derniereLigne + 1, "A").Resize(compteur, 3).Value = tableauFactures
End If

' Appliquer le format "jj/mm/aaaa" à la colonne C (Date de dépôt)
ws.Range("C7:C" & derniereLigne + compteur).NumberFormat = "dd/mm/yyyy hh:mm"

' Trier le tableau du plus ancien au plus récent
derniereLigne = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
If derniereLigne >= 7 Then
With ws.Sort
.SortFields.Clear
.SortFields.Add Key:=ws.Range("C7:C" & derniereLigne), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange ws.Range("A7:C" & derniereLigne)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

' Mettre à jour les index après le tri
For i = 7 To derniereLigne
ws.Cells(i, "A").Value = i - 6
Next i
End If

' Ajouter les liens hypertexte aux factures
Dim cell As Range
For i = 7 To derniereLigne
If ws.Cells(i, "B").Value <> "" Then
ws.Hyperlinks.Add Anchor:=ws.Cells(i, "B"), Address:=cheminDossier & ws.Cells(i, "B").Value, TextToDisplay:=ws.Cells(i, "B").Value
End If
Next i

' Ajuster automatiquement la largeur des colonnes
ws.Columns("A:k").AutoFit

' Libérer les objets
Set dictFichiers = Nothing
End Sub

Je ne peux pas faire de capture car le fichier se trouve au travail, mais à chaque fois que j'ajoute un fichier pdf dans le dossier PDF, Excel demande de sélectionner le fichier et d'autoriser l'accès.
 
re
deux pistes :
Autoriser Ton application EXCEL à accéder au répertoire
Autoriser l'accès à tous dans ton répertoire
mais ces deux manip sont des manips sur le mac lui-même et je ne connais pas, une recherche sur le net te donnera sans doute la solution
1741533447797.png

À bientôt
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 webbrowser
Réponses
20
Affichages
1 K
Réponses
6
Affichages
1 K
Réponses
93
Affichages
4 K
Retour