Insertion photo (VBA) sur feuille protégée

Bonjour,

J’ai créé un formulaire sous excel. L’utilisateur saisie différentes informations et a la possibilité d’insérer une photo en cliquant sur un bouton qui effectue la commande suivante :

Private Sub CommandButton1_Click()

Dim PHOTO As Variant

Dim Gauche, Sommet, Largeur, Hauteur As Single

PHOTO = Application.GetOpenFilename("Images JPEG (*.jpg), *.jpg")

Gauche = Range("ZP").Left

Sommet = Range("ZP").Top

Largeur = Range("ZP").Width

Hauteur = Range("ZP").Height

If PHOTO <> False Then

Feuil1.Shapes.AddPicture PHOTO, True, True, Gauche, Sommet, Largeur, Hauteur

End If

End Sub

Private Sub PHOTO_Click()

End Sub

"ZP" correspond à la Zone Photo (insertion).

Ce programme fonctionne !

Là où ça se complique, c’est lorsque je veux utiliser la protection de la feuille tout en permettant à l’utilisateur de modifier certaines plages.

Je prends soin de libérer la "ZP" et déverrouille la protection du bouton dans le format de contrôle.

Lorsque j’active mon programme en mode création, je clique sur le bouton et accède sans problème à mon dossier photos. J’en sélectionne une et valide.

VB m’indique alors une « Erreur d’exécution ‘1004’ : Erreur définie par l’application ou par l’objet ».

Le débogage cible : Feuil1.Shapes.AddPicture PHOTO, True, True, Gauche, Sommet, Largeur, Hauteur

J’imagine que c’est parce que je pointe sur Feuil1.Shapes et qu’elle est protégée ?

Quelqu’un aurai-t-il une solution ?

Bonjour,

Peut être en insérant en début de macro

Sheets("Feuil1").unprotect

et en fin de macro

Sheets("Feuil1").protect

si tu as un mot de passe :

sheets("Feuil1").Protect Password:="mot de passe"
sheets("Feuil1").Unprotect Password:="mot de passe"

Merci Niko, tu m'as aidé !

Je vais utiliser un mot de passe que l'utilisateur renseignera lors de l'insertion de l'image (je n'aime pas laisser "trainer" des mots de passe dans le programme...).

Voici donc la solution :

Private Sub CommandButton1_Click()

[b]ActiveSheet.Unprotect

[/b]

Dim PHOTO As Variant

Dim Gauche, Sommet, Largeur, Hauteur As Single

PHOTO = Application.GetOpenFilename("Images JPEG (*.jpg), *.jpg")

Gauche = Range("ZP").Left

Sommet = Range("ZP").Top

Largeur = Range("ZP").Width

Hauteur = Range("ZP").Height

If PHOTO <> False Then

Feuil1.Shapes.AddPicture PHOTO, True, True, Gauche, Sommet, Largeur, Hauteur

End If

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub

Private Sub PHOTO_Click()

End Sub

Mieux encore (avec une protection sur mon VBAproject) :

Private Sub CommandButton1_Click()

ActiveSheet.Unprotect

Dim PHOTO As Variant

Dim Gauche, Sommet, Largeur, Hauteur As Single

PHOTO = Application.GetOpenFilename("Images JPEG (*.jpg), *.jpg")

Gauche = Range("ZP").Left

Sommet = Range("ZP").Top

Largeur = Range("ZP").Width

Hauteur = Range("ZP").Height

If PHOTO <> False Then

Feuil1.Shapes.AddPicture PHOTO, True, True, Gauche, Sommet, Largeur, Hauteur

End If

ActiveSheet.Protect Password:="mot de passe"

End Sub

Private Sub PHOTO_Click()

End Sub

oui mais il faut je pense remplacer

ActiveSheet.Unprotect

par

ActiveSheet.Unprotect Password:="mot de passe"

tu protége ta feuille par un mot de passe et tu la désactive sans mot de passe,je pense que ça doit beuger......

ça ne bugue pas, mais en effet l'utilisateur devait saisir le mot de passe à chaque insertion de photo .

C'est corrigé !

Merci Niko

Rechercher des sujets similaires à "insertion photo vba feuille protegee"