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.
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