Microsoft 365 Déplacer et redimensionner une image dans une feuille protégée

Dvd1976

XLDnaute Nouveau
Bonjour à tous,

me voici pour demander ma première aide sur ce forum.

J'ai créé un fichier professionnel (ci-joint) dans lequel je dois insérer une ou plusieurs images via une macro en cliquant sur un petit pictogramme (image représentant un paysage en haut à droite)
Vu que la feuille est protégée par un mot de passe (qui est 7601), j'ai dû inclure une commande "ws.Unprotect" et "ws.Protect" afin que la macro dévérouille provisoirement la feuille le temps d'insérer l'image, pour ensuite vérouiller à nouveau la feuille.
La macro se déroule bien, la macro ouvre la fenêtre "insérer une image" du menu excel et après sélection de la photo, celle-ci s'insère.... sauf que, comme la commande ws.Protect s'applique en fin de macro, il ne m'est plus possible de déplacer la photo et ni la redimensionner :(

Auriez-vous une astuce pour contourner cela car le fichier doit impérativement rester verouillé afin que personne ne vienne bidouiller le fichier....

PS: j'ai un autre problème, lorsque je ferme la fenêtre "insérer une image" ou que je fais "annuler", j'ai une erreur qui apparait...

Merci d'avance pour votre aide 😉
 

Pièces jointes

  • Dvd1976.xlsm
    169 KB · Affichages: 7
Solution
Re, bonjour Soan,
Peut être une approche possible. Voir PJ.
Mais qui remplit les 3 rectangles bleu ? L'utilisateur ou le VBA ?

En PJ deux pages :
1- Essai, les 4 objets ( les wagons et 3 rectangles bleus ) sont associés à cette macro pas trop compliquée :
VB:
Sub FigerImage()
End Sub
et dans ce cas on ne peut plus que bouger les images de droite.
Mais on ne peut plus remplir les 3 rectangles bleus.
2- Essai2. Idem mais les 3 rectangles ont été supprimés et remplacés par des cellules fusionnées et dévérouillées.
Tout marche mais je ne sais pas si l' "esthétique" vous conviendra.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Dvd,
Quand on protège une feuille on plusieurs options possibles, en particulier "Modifier les objets"
Si cette option est cochée, on peut déplacer et redimensionner les photos.
Dans le code cela fait :
VB:
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, Password:="7601"
j'ai une erreur qui apparait...
Où ? sur quelle ligne ? quel code d'erreur ?
 

Dvd1976

XLDnaute Nouveau
Bonsoir Sylvanu,

merci pour ta réponse :)

j'ai donc remplacé "ws.Protect Password" par ta fonction et j'ai bien coché "modifier les objets"
Résultat : cela fonctionne parfaitement... mais du coup tous les autres objets de la page sont également déplaçables... ce qui n'est pas idéal malheureusement :(
N'y a-t-il pas moyen d'agir localement sur la zone "Photo(s)" ?

Pour le message d'erreur, il arrive quand la fenêtre "insérer une image" (ouvert avec la macro) et quand je clique sur "Annuler" ou quand je clique sur la croix pour fermer la fenêtre

voici un screenshot :

erreur macro.jpg
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Toujours pas d'idée pour le premier point.
Par contre pour le second l'erreur est "normale".
Si vous faites Annuler lors du choix du fichier alors on sort avec très surement avec sPathFic=""
Donc dans le Set Img il y a erreur;
Après le sPathFic=....
Insérez pour voir :
VB:
If sPathFic="" then Exit Sub
 

Dvd1976

XLDnaute Nouveau
Merci Sylvanu, cela fonctionne... plus d'erreur 😀

Pour le déplacement et le redimensionnenemt, j'ai trouvé une solution temporaire qui ne me satisafait pas complètement mais en attente de trouver mieux, j'ai fais ceci :

vu que la rédaction du document se fait d'abord dans la partie gauche, de ce fait l'utilisateur termine par l'insertion des photos.
Donc j'ai laissé le "ws.Unprotect" dans la macro d'insertion d'images et j'ai déplacé le "ws.Protect" dans la macro d'envoi du mail.

La feuille reste ainsi un minimum de temps dévérouillée.

Je retourne dans mes recherches pour améliorer cela....
 

soan

XLDnaute Barbatruc
Inactif
Dvd1976 à dit:
Le problème évoqué dans le titre n'est pas encore totalement résolu ;)

PS: j'ai un autre problème, lorsque je ferme la fenêtre "insérer une image" ou que je fais "annuler", j'ai une erreur qui apparait...

ah, ok ! alors bonne chance pour la suite de ce présent sujet ! 🍀

j'espère que sylvanu ou un autre contributeur pourront bientôt t'aider ! 🍀

soan
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re, bonjour Soan,
Peut être une approche possible. Voir PJ.
Mais qui remplit les 3 rectangles bleu ? L'utilisateur ou le VBA ?

En PJ deux pages :
1- Essai, les 4 objets ( les wagons et 3 rectangles bleus ) sont associés à cette macro pas trop compliquée :
VB:
Sub FigerImage()
End Sub
et dans ce cas on ne peut plus que bouger les images de droite.
Mais on ne peut plus remplir les 3 rectangles bleus.
2- Essai2. Idem mais les 3 rectangles ont été supprimés et remplacés par des cellules fusionnées et dévérouillées.
Tout marche mais je ne sais pas si l' "esthétique" vous conviendra.
 

Pièces jointes

  • DVD1976 ESSAI.xlsm
    187.8 KB · Affichages: 10

Dvd1976

XLDnaute Nouveau
la solution 1 n'est donc pas envisageable car il faut impérativement identifier les locos/wagons

par contre pour la solution 2 cela pourrait convenir mais je vais voir si je peux réorganiser la mise en page de cette partie.

Je te tiendrai au courant sylvanu ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 087
Messages
2 085 198
Membres
102 815
dernier inscrit
Henridic