IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> VBA EXCEL / Demande autorisation accès, Macro de recherche image qui demande l'autorisation d'accès
Options
Philippe_62
posté 25 Jun 2021, 10:51
Message #1


Nouveau Membre


Groupe : Membres
Messages : 3
Inscrit : 25 Jun 2021
Membre no 214 228



Bonjour à tous,

J'ai créé une macro qui insère sur chaque ligne d'un fichier excel une image prise dans un dossier base image.
Le chemin d'accès est sur chaque ligne du fichier

Sauf que pour chaque fichier le finder me demande d'autoriser l'accès au dossier, puis au fichier.

Forcément c'est lourd car je dois boucler sur plus de 1000 fichiers.


J'ai essayé en déplaçant le dossier base image dans "Mes documents" et le résultat est le même.

Je suis sous Mac OS Catalina version 10.57

Voici mon code :

Code
Sub insert_img_lot2()


Dim t()

Dim Limg, Himg As Integer

Limg = Range("F1").Value
Himg = Range("H1").Value


Application.ScreenUpdating = False
With ActiveSheet
    dl = .Cells(.Rows.Count, "Y").End(xlUp).Row 'dernière ligne non vide en Y
    For i = 3 To dl 'de la ligne 3 à la dernière
        chemin = .Cells(i, "Y").Value 'chemin en Y
        ActiveCell.RowHeight = Limg
        
        ActiveCell.ColumnWidth = Himg
        
        
        If Dir(chemin) <> "" Then
            With .Cells(i, "Z") 'avec Z
                .RowHeight = Himg 'ajuste hauteur ligne
                imgLeft = .Left 'stocke position gauche de cellules
                imgTop = .Top 'stock position haute
                imgWidth = Limg 'larg col
                imgHeight = Himg 'haut lignes
            End With
            With .Shapes.AddPicture(chemin, msoFalse, msoTrue, imgLeft, imgTop, imgWidth, imgHeight) 'ajoute image (renvoie objet shape)
                .Name = Replace(chemin, ".jpg", "") & i 'modifie nom (sans ".jpg")
                .Placement = xlMoveAndSize 'pour vérouiller l'image à la cellule
            End With
        Else
            n = n + 1: ReDim Preserve t(1 To n): t(n) = chemin & " - ligne " & i
        End If
    Next i
    If n > 0 Then MsgBox "Images introuvables :" & vbCrLf & vbCrLf & Join(t, vbCrLf)
End With
Application.ScreenUpdating = True

End Sub


Mes deux questions :
- comment paramétrer le Finder pour ne pas avoir ces demandes ?
- si ce n'est pas possible quelles sont les commandes en VBA pour accorder l'accès ?

Merci pour votre aide


Philippe

Ce message a été modifié par baron - 25 Jun 2021, 13:09.
Raison de l'édition : Le code doit être placé entre les deux balises pour être mis en forme.

Fichier(s) joint(s)
Fichier joint  Capture_d___e__cran_2021_06_25_a___11.44.37.png ( 231.55 Ko ) Nombre de téléchargements : 0
Fichier joint  Capture_d___e__cran_2021_06_25_a___11.44.48.png ( 920.51 Ko ) Nombre de téléchargements : 0
 
Go to the top of the page
 
+Quote Post
baron
posté 25 Jun 2021, 13:10
Message #2


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 19 347
Inscrit : 22 Jul 2004
Lieu : Louvain-la-Neuve (Gaule Gelbique)
Membre no 21 291



Bonjour et bienvenue ! smile.gif

Note de la modération : Ce message concerne une section différente de celle où tu as posté (OSX concerne uniquement le logiciel système et ses utilitaires).
Je déplace et t'invite à lire cette annonce.

(Ceci est un message automatique.)


--------------------
MacBook Pro 14’’ 2021, M1 Pro, 16 Go/1 To – macOS  12.6 “Monterey”  MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 8 Go/SSD Samsung 860EVO 1 To – Mac OSX 10.6.8  Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 — + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C   B-Box 3 + HP LaserJet 4000 N  
La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même.
Les corsaires mettent en berne…
Go to the top of the page
 
+Quote Post
Aliboron
posté 25 Jun 2021, 18:53
Message #3


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 4 198
Inscrit : 1 Jan 2008
Lieu : Toulouse.cong
Membre no 103 942



Citation (Philippe_62 @ 25 Jun 2021, 11:51) *
- comment paramétrer le Finder pour ne pas avoir ces demandes ?

Ce n'est pas possible, les restrictions imposées par les récentes versions de macOS limitent l'accès direct par programmation aux fichiers.


Citation (Philippe_62 @ 25 Jun 2021, 11:51) *
- si ce n'est pas possible quelles sont les commandes en VBA pour accorder l'accès ?

Tu trouveras les indications voulues sur cette page, je pense. wink.gif


--------------------
Bernard

MacMini, iMac et tout un tas d'accessoires -- FAQ Office Macintosh
Go to the top of the page
 
+Quote Post
Philippe_62
posté 25 Jun 2021, 19:36
Message #4


Nouveau Membre


Groupe : Membres
Messages : 3
Inscrit : 25 Jun 2021
Membre no 214 228



Merci !

Je teste cela.

A bientôt
Go to the top of the page
 
+Quote Post
Philippe_62
posté 28 Jun 2021, 15:46
Message #5


Nouveau Membre


Groupe : Membres
Messages : 3
Inscrit : 25 Jun 2021
Membre no 214 228



Bonjour,

J'ai modifié mon code et j'essaye d'utiliser la commande GrantaccesstoMultifiles mais en vain.

Voici mon nouveau code

CODE
Sub insert_img_excel()


Dim t()
Dim Limg, Himg As Integer
Dim fileAccessGranted As Boolean
Dim filePermissionCandidates

Limg = Range("F1").Value
Himg = Range("H1").Value


Application.ScreenUpdating = False
With ActiveSheet
dl = .Cells(.Rows.Count, "Y").End(xlUp).Row 'dernière ligne non vide en Y
For i = 3 To dl 'de la ligne 3 à la dernière
chemin = .Cells(i, "Y").Value 'chemin en Y

'Create an array with file paths for the permissions that are needed.
filePermissionCandidates = Array(chemin)

fileAccessGranted = GrantAccessToMultipleFiles(chemin)

ActiveCell.RowHeight = Limg
ActiveCell.ColumnWidth = Himg


If Dir(chemin) <> "" Then
With .Cells(i, "Z") 'avec Z
.RowHeight = Himg 'ajuste hauteur ligne
imgLeft = .Left 'stocke position gauche de cellules
imgTop = .Top 'stock position haute
imgWidth = Limg 'larg col
imgHeight = Himg 'haut lignes
End With
With .Shapes.AddPicture(chemin, msoFalse, msoTrue, imgLeft, imgTop, imgWidth, imgHeight) 'ajoute image (renvoie objet shape)
.Name = Replace(chemin, ".jpg", "") & i 'modifie nom (sans ".jpg")
.Placement = xlMoveAndSize 'pour vérouiller l'image à la cellule
End With
Else
n = n + 1: ReDim Preserve t(1 To n): t(n) = chemin & " - ligne " & i
End If
Next i
If n > 0 Then MsgBox "Images introuvables :" & vbCrLf & vbCrLf & Join(t, vbCrLf)
End With
Application.ScreenUpdating = True

End Sub



Qui peut m'aider ?


Go to the top of the page
 
+Quote Post
Pat94
posté 28 Jun 2021, 16:25
Message #6


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 721
Inscrit : 28 Nov 2015
Lieu : Somme
Membre no 197 274



Bonjour,

Avez vous essayé de mettre les images dans le dossier "Public" situé dans "Utilisateur".



--------------------
MacPro 7.1/5.1
Go to the top of the page
 
+Quote Post
Aliboron
posté 28 Jun 2021, 19:01
Message #7


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 4 198
Inscrit : 1 Jan 2008
Lieu : Toulouse.cong
Membre no 103 942



Je ne comprends pas bien ta ligne fileAccessGranted = GrantAccessToMultipleFiles(chemin)

Logiquement, ça devrait plutôt être quelque chose comme fileAccessGranted = GrantAccessToMultipleFiles(filePermissionCandidates) sous réserve toutefois que ta table filePermissionCandidates soit correctement alimentée avec les chemins d'accès (à vérifier dans la fenêtre des "Variables locales" en mode arrêt).

Par ailleurs, cette ligne devrait être positionnée après le "next i" pour donner l'accès à tous les fichiers d'un coup.

Tu peux t'inspirer de l'exemple qu'on trouve sur cette page. La question de l'utilisateur concerne l'intégration Mac/Windows, mais la boucle pour l'autorisation d'accès est fonctionnelle...


--------------------
Bernard

MacMini, iMac et tout un tas d'accessoires -- FAQ Office Macintosh
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 20th April 2024 - 00:06