MAC : autoriser l'accès à des fichiers

Bonjour,

Pardon, j'avais fait le test avec "photo" avant et sans succès.

J'ai fais différents essais à la place de photo (Range("Y"&i), ou Workbook.path.... ) sans résultat non plus.

J'ai testé sur la version 2011, tout fonctionne bien

Si en dessous de cette instruction

Photo = ThisWorkbook.Path & "/" & .Range("X" & i)

vous mettez ceci --> Msgbox photo

Pouvez-vous me montrer la vue de la boite à message que vous avez lorsque i = 3

Bonjour,

Voici .

C'est bien le bon chemin et la bonne image

capture d e cran 2023 06 09 a 15 33 25

Et cela bug toujours à la ligne suivante ?

Pouvez-vous essayer en enlevant le point juste avant le 1

Re,

ça ne fonctionne pas non plus

les chemins affichés par le messagebox n'ont plus de "." si ce n'est celui de l'extension .jpg

mais pas mieux...

Au fait dans ce lien --> https://forum.excel-pratique.com/s/goto/1145749, je vous ai donné un code mais il y a deux fois ces lignes de codes

With .Cells(i, "Z") 'avec Z
....
End with

C'est une erreur il ne faut qu'une fois évidemment. A supprimer dans votre fichier.


On va encore tenter en changeant uniquement la ligne filePermissionCandidates = ....

Remplacez-la par ceci

filePermissionCandidates = Application.Transpose(ThisWorkbook.Sheets("liste_img").Range("A2:A845").Value)

Ajoutez aussi une msgbox juste en dessous de Photo = ..... pour vérifier

Si cela bugue toujours, je vous donnerai autre chose.

Bonjour et bon lundi !!

Alors j'ai modifié le fichier comme demandé.
Comportement bizarre :

- premier lancement pas d'images insérées. Le Msgbox montre bien que les chemins sont stockés dans photo

- comprenant que vous proposez de remplir le tableau avec la liste image transposée j'ai ajouté en fin de liste les 3 chemins copiés collés en colonne Y et en étendant à A:848 le range. Quand je lance j'ai une demande d'autorisation pour le second chemin (image product_LOE...), le msgbox(photo) fonctionne puis le fichier plante et quitte excel.

- depuis le fichier plante toujours en fin d'exécution, même en ayant supprimé mes modifs et étant revenu à la version que vous proposez.

Bonjour,

- comprenant que vous proposez de remplir le tableau avec la liste image transposée j'ai ajouté en fin de liste les 3 chemins copiés collés en colonne Y

les 3 chemins ? Cela correspond à quoi ? Je n'ai pas compris ce que vous avez fait

1. Pourriez-vous aussi essayer en ne mettant que les photos correspondant aux 3 premières lignes par exemple et en enlevant le point devant le 1 ? donc le 845 change aussi.

2. Si cela ne fonctionne toujours pas , bien que je ne pense pas que cela sera bon essayez aussi en modifiant cette ligne

filePermissionCandidates = Array(Application.ThisWorkbook.Path & "/", Application.Transpose(ThisWorkbook.Sheets("liste_img").Range("A2:A845").Value))

NB : Ne me repostez pas votre fichier vu que rien ne change pour l'instant

Bonsoir,

La modif 1 : erreur de type 13 sur le fileAccessGranted = GrantAccessToMultipleFiles(filePermissionCandidates)
Si je le désactive en le mettant en commentaire, les images ne sont pas insérées

Modif 2 : même résultat que précédemment. J'ai changé l'antislash par un "/" vu que je suis sur MAc.

Si vous le souhaitez - et si c'est conforme aux règle du forum - on peut faire une visio ce mardi. J'aurais un peu de temps.

Merci

Bonjour,

Une visio ? vous pensez à quoi en fait ?

Je ne comprends pas me bug sur la modif 1 car on ne prend que 3 lignes au lieu de 800 mais il faut que dans ces trois lignes on retrouve les références images dans la colonne X.

Pour le Slash, oui bien vu ... désolé. J'ai corrigé dans mon post précédent. J'avais testé sous windows aussi.

Bonjour,

Pour la première demande de modif ( 1. Pourriez-vous aussi essayer en ne mettant que les photos correspondant aux 3 premières lignes par exemple et en enlevant le point devant le 1 ? donc le 845 change aussi. ) j'ai bien mis dans l'onglet listing que les 3 images des 3 premières lignes de l'onglet destinataire des images.
J'ai bien remplacé les "." par des "_"

... et rien ne s'insère.

Je proposais une visio pour partager l'écran et être plus réactif. j'utilise zoom / teams / googlmeets au choix si vous voulez

merci

Bon c'est tout de même curieux que cela ne fonctionne pas..
Je vais vous proposer tout autre chose. Je pense que l'on aura pas besoin des deux instructions filepermission et fileaccessGranted...
Faites un copie de votre dossier pour avoir une sauvegarde tout de même


Lorsque vous êtes sur le Finder,
- Allez dans le menu ALLER (ou GO)
- Appuyez sur la touche ALT
- Cliquez sur "Bibliothèque"
- Ouvrez le dossier "Group Containers" puis le dossier "UBF8T346G9.Office"
- Placez votre dossier à cet endroit (vous pouvez aussi en créer un nouveau puis y placer votre dossier)
- Une fois fait, sélectionnez votre dossier et glissez-le sur le bureau pour faire un raccourci

Ensuite, cliquez sur le raccourci pour accéder à votre fichier et exécuter le code (je pense que vous n'avez plus besoin de filepermission et fileaccessgranted et que donc vous pouvez les désactiver pour ce test


J'ai déjà utilisé zoom avec un ami mais je ne me rappelle plus trop comment cela fonctionnait. il me donnait le lien à mettre dans mon browser pour accéder.
Suite à différents soucis de déconnexion, on n'avait décidé d'utiliser anydesk.
Mais on peut tenter oui. Donnez moi les infos en MP

edit :

j'ai bien mis dans l'onglet listing que les 3 images des 3 premières lignes de l'onglet destinataire des images.

Pour les 3 images on parle bien de l'onglet liste_img ? Le principal est que filepermissioncandidates n'englobe que A2 à A5 (donc 3 images)

Merci !

Je teste tout ça demain matin, pour la soirée je suis full !

A demain

Bonjour,

Je rencontrait le meme problème depuis quelques jours, et j'ai solutionné après quelque galères.

Les diverses erreurs (1004 notamment) étaient dues au fait que les autorisations d'accès ne se faisaient pas, mais la macro se déroulait normalement jusqu'a l'insertion des photos qui plantait évidemment. Je me suis rendu compte que le problème venait en fait de la construction de l'array, et j'ai pu solutionner en construisant l'array directement en utilisant la fonction transpose (le chemin dependant de la localisation du classeur, je crée d'abord le chemin complet dans une plage de cellules que je vide ensuite).

A noter que le fichier excel d'origine provient d'une base de données Filemaker étant exportée dans le dossier temporaire, la fenêtre de demande d'autorisation s'ouvre bien, mais le bouton "accorder l'accès est grisé" dans ce cas (voir screenshot ci dessous), mais cela fonctionne si je déplace les fichiers dans le dossier téléchargement par exemple.

image

Ci-dessous le code de ma macro:

Sub requestFileAccess()

'Declare Variables
Dim fileAccessGranted As Boolean
Dim filePermissionCandidates
Dim varPath As String
Dim varPhoto As String
Dim varNameAndPath As String
Dim varLast As Integer

varPath = ActiveWorkbook.Path & "/"
varLast = Cells(Rows.Count, 1).End(xlUp).Row

'Create an array with file paths for the permissions that are needed. => ne fonctionne pas, strucutrearray probablement non conforme
' For i = 2 To varLast
' varPhoto = Range("F" & i).Value
' varNameAndPath = varPath & varPhoto
' If i > 2 Then
' varArray = varArray & ", " & varNameAndPath
' Else
' varArray = varNameAndPath
' End If
' Next i

'Create an array with file paths for the permissions that are needed. => ma solution qui fonctionne bien
For i = 2 To varLast
varPhoto = Range("F" & i).Value
varNameAndPath = varPath & varPhoto
Range("G" & i) = varNameAndPath
Next i

' filePermissionCandidates = Array(varArray) ' Doesnt work
filePermissionCandidates = Application.Transpose(Range("G2:G" & varLast).Value)
Range("G2:G" & i) = ""
fileAccessGranted = GrantAccessToMultipleFiles(filePermissionCandidates)
'Returns true if access is granted; otherwise, false/
End Sub

En espérant que ca puisse aider.

Gilles

Bonjour,

@gilles_Iceman :
Lorsque vous postez un code VBA, merci de bien vouloir utiliser les balises de codes en cliquant sur l'icone </> disponible dans le menu et en collant le code dans la fenêtre. Il sera plus facile à lire.

Pas sûr que vous ayez lu tous les échanges à ce sujet. Par contre concernant votre mention "Create an array with file paths for the permissions that are needed. => ne fonctionne pas, strucutrearray probablement non conforme", c'est normal votre variable "varArray" n'est déclarée en ARRAY.
Au lieu de la ligne "Transpose" (plus facile d'ailleurs), votre partie de code aurait pu être comme ceci :

Dim varpath As String
Dim vararray()
Dim j As Integer, varlast As Integer

varpath = ActiveWorkbook.Path & "/"
varlast = Cells(Rows.Count, 1).End(xlUp).Row
ReDim vararray(varlast)
j = 0
 For i = 2 To varlast
    vararray(j) = varpath & Range("F" & i).Value
    j = j + 1
 Next i
....

Quoi qu'il en soit, en créant une boucle pour compléter votre colonne G, je ne sais pas si vous avez regardé mais vous faites ce que le demandeur a réalisé en colonne Y dans son fichier.


@Kerdaven :
on a tellement fait d'essais et pas sûr mais en relisant le tout et l'intervention de Gille_Iceman, on a peut être pas essayé ceci. Dans votre dernier fichier posté, remplacez cette ligne

filePermissionCandidates = Application.Transpose(ThisWorkbook.Sheets("liste_sku").Range("Y3:Y" & dl).Value)

Bonjour,

@Dan nous avions testé en remplissant l'array avec un transpose... sans succès.

La solution pour le moment est de mettre les images dans le dossier autorisé de la bibliothèque excel.... opérationnellement ça fonctionne, intellectuellement on reste frustré de ne pas avoir résolu via un code ;)

En tout cas merci !

Du coup faut-il clore le sujet ?

Ah c'est bien çà !

nous avions testé en remplissant l'array avec un transpose... sans succès.

Pas sûr que la manière pour créer l'Array était bonne...

En cherchant sur la toile, j'ai trouvé ce fil --> https://forums.macrumors.com/threads/what-is-this-why-do-i-now-have-to-grant-access-to-my-files.2329..., dans lequel vous pourrez constater:

- Que de soucis dû en fait au choix de Microsoft qui, lors de la conception, a mal implémenté les règles Sandbox d'Apple. Cela ne nous arrange pas en tant qu'utilisateur MAC.
- Qu'une solution à essayer serait à renommer les fichiers en utilisant la convention de dénomination du "fichier temporaire" d'Apple. qui consiste à mettre un "~$" devant n'importe quel nom de fichier que vous voulez lire/importer. Pour les fichiers text, cela fonctionne mais à voir avec les fichiers images....

Pour clôturer, oui si vous en avez terminé.

Si d'autres questions, vous savez continuer sur le fil (la clôture vous permet de continuer) ou vous cliquez dans le post où vous avez cliqué sur le petit V. Cette action permet de voir que le fil reste ouvert.

Cordialement

Re !

L'astuce en ajoutant –$ fonctionne à merveille !!!

Nous voilà avec deux solutions qui marchent.

Double merci !

Ok. Parfait.
Si cela fonctionne avec le -$, autant ne pas aller mettre le fichier dans le répertoire de la bibliothèque comme expliqué ici https://forum.excel-pratique.com/s/goto/1146669 (enfin à voir mais cela me semble moins pratique à cet endroit...)

Oubliez pas de cloturer...

Crdlt

merci !

Je cherche où clôturer le sujet mais je ne trouve pas...

Rechercher des sujets similaires à "mac autoriser acces fichiers"