XL 2010 Autoriser collage image sur une feuille protégée

rosabelle

XLDnaute Junior
Bonjour,

J'ai à nouveau besoin de votre aide :
J'ai créé il y a plusieurs mois un fichier avec de nombreuses macros.
Aujourd'hui, je veux que l'utilisateur puisse coller une image dans une cellule déverrouillée sur une feuille protégée.
Pour cela modifie la protection de la feuille concernée :
je mets un mot de passe et protège avec autorisation de "modifier les objets", j'enregistre sans sortir du fichier.
Je fais un test de collage sur la feuille, tout va bien.
Je quitte le fichier, j'enregistre puis je retourne dans le fichier :
Là je ne peux plus rien faire, par exemple si je veux supprimer ou coller une nouvelle image j'ai :
1656444399028.png

Ce fichier comporte plusieurs macro, comment trouver celle qui serait à l'origine d'une protection d'office à l'ouverture ou à la fermeture du fichier et qui semble balayer mon autorisation de modifier les objets.
C'est comme si la protection avec modification d'objets que je viens de mettre juste avant la clôture était complètement ignorée.
C'est plutôt urgent et j'ai vraiment besoin de votre aide.
Je joins un fichier test qui n'est pas du tout celui qui pose problème , juste pour vous montrer que lorsqu'il n y a pas de macro ça fonctionne bien.
Merci par avance
 

Pièces jointes

  • test autoriser collage image.xlsx
    36.4 KB · Affichages: 3

Phil69970

XLDnaute Barbatruc
Bonjour à tous

@rosabelle


Ce fichier comporte plusieurs macro, comment trouver celle qui serait à l'origine d'une protection d'office à l'ouverture ou à la fermeture du fichier et qui semble balayer mon autorisation de modifier les objets.
1) Il n'y a aucune macro dans ton fichier

2)J'ai pu déplacé ton image malgré ton MDP que tu n'as pas fourni !!!

3) Si tu nous donne un autre fichier que le bon a quoi cela nous sert ?


@Phil69970
 

Pièces jointes

  • test autoriser collage image.xlsx
    35.9 KB · Affichages: 0

rosabelle

XLDnaute Junior
Bonjour,

Hum hum 😕😟 c'est que mon fichier est plutôt confidentiel.
Je voulais savoir si je m'égarais dans mon raisonnement et quel genre de bout de code pouvait commander la mise du mot de passe à l'ouverture ou à la fermeture du fichier.
Je vais essayer de l'anonymiser et vous l'adresse.
Un grand merci encore pour votre réactivité !
Bonne journée à tous
 

rosabelle

XLDnaute Junior
Bonjour à tous,

Dans l'espoir que vous allez pouvoir m'aider je vous adresse mon fichier anonymisé.

Je voudrais savoir comment modifier les macros qui demandent le verrouillage des feuilles de façon à autoriser le collage d'une image sur les feuilles 2 et 3 uniquement en A1 (qui est déverrouillé).

Merci par avance, je compte beaucoup sur vous🆘
 

Pièces jointes

  • TABLEUR R111 TEST.xlsm
    285.2 KB · Affichages: 2

rosabelle

XLDnaute Junior
Personne sur le forum pour m'aider? 😭
Lors de mes recherches sur le forum j'ai vu ce bout de code
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
True
J'ai essayé de l'introduire dans mon fichier mais ça ne fonctionne pas.
Je mets à nouveau mon ficher , j'ai revu car le mot de passe sur la feuill20(11) n'était pas identique à celui figurant sur les feuilles du fichier et cela pouvait vous gêner
Mdp=toto
Sur la feuil20(11) j'ai mis des boutons qui protègent et déprotègent toutes les feuilles.
J'attends une âme charitable....😥😥😥
 

Pièces jointes

  • TABLEUR R111 TEST.xlsm
    286.1 KB · Affichages: 1

rosabelle

XLDnaute Junior
Bonjour rosabelle, le fil,

ton fichier en retour ; je te laisse faire des essais. :)

j'ai fait plein d'modifs dans tout le code VBA,
alors regarde bien partout ! 😁 😜 😄

soan
Bonjour @soan ,
J'ai bien regardé et je salue vraiment le travail que tu as fait : tu as as mis de l'ordre et je retiens la leçon, en tout cas pour l'affichage des modules et le classement des macros.
Mes connaissances en codage sont quasi inexistantes, je ne sais qu'utiliser l'enregistrement automatique des macros et aurai bien du mal à écrire les codes.
Malheureusement mon problème d'origine n'est pas réglé complètement.
Je peux coller une image mais quand je quitte et ouvre à nouveau je peux plus l'enlever.
Cependant en réfléchissant je me dis est-ce vraiment un problème?

Je dois remettre ce fichier à certains collaborateurs qui devraient pouvoir mettre une image sans me demander le mot de passe.
Peut-être que je dois l'enregistrer au format XLTM avant de le remettre.
Puis dire à ces collaborateurs de :
-rentrer ds ce fichier, mettre l'image et enregistrer eux aussi au format XLTM pour que les utilisateurs suivants (qui n'auront pas à mettre l'image puisque déjà mise) ne puissent jamais enregistrer sur le fichier mais uniquement des copies.

Pourrais-tu me dire sur quel code tu es intervenu pour permettre le collage stp au moins une fois ?

Par ailleurs j'ai des messages d'erreur "débogage" , je remets mon fichier test, je masque certaines feuilles comme sur mon fichier d'origine car c'est peut être cela qui est à l'origine des bugs?
Ce fichier test ne comporte pas tes modifications je m'en excuse, je voudrais me concentrer pour le moment à régler mon problème de collage car je dois remettre ce fichier la semaine prochaine.
Après cela je mettrai de l'ordre en suivant ton exemple 🙂🙃🙂
 

Pièces jointes

  • TABLEUR R111 TEST.xlsm
    316.8 KB · Affichages: 1

soan

XLDnaute Barbatruc
Inactif
Bonjour rosabelle,

désolé pour le très gros retard de ma réponse, mais j'ai été débordé ! 😭

pour le fichier de ton post #7 :

j'ai des messages d'erreur "débogage"

Image.jpg


A) feuille "1" : bouton "Imprimer en noir et blanc" :
appelle la sub Imprimerzonesremplies() de Feuil16 (1) ;
c'est cette ligne qui provoque un bug :
.Rows(Derlig & ":" & Derlig1).EntireRow.Hidden = True 'Masque les lignes vides
puis même si on la corrige, y'aura ensuite un autre bug ici :
.Rows(Derlig & ":" & Derlig1).EntireRow.Hidden = False 'Démasque les lignes vides
pour les 2 instructions, c'est car Derlig1 vaut 0 ! or la ligne 0 n'existe pas !
c'est normal que Derlig1 vaut 0 : ta colonne G est entièrement vide
Derlig1 = .Range("G" & Rows.Count).End(xlUp).Row - 1 retourne 0 !
juste après cette ligne, j'ai ajouté :
If Derlig1 < 2 Then Exit Sub

B) feuille "3" : bouton "Remise à zéro" :
appelle la sub effacerdécompterachat() du module Remise_àzéro_feuilles ;
c'est cette ligne qui provoque un bug :
ActiveSheet.Shapes.Range(Array("TextBox 2")).Select
idem pour les 2 lignes qui suivent :
VB:
ActiveSheet.Shapes.Range(Array("TextBox 3")).Select
ActiveSheet.Shapes.Range(Array("TextBox 4")).Select
j'ai mis ces 3 lignes en commentaire : une apostrophe en 1er caractère.
pour la même sub, ça plante dessous ici :
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = ""
car la forme n'est pas trouvée ; instruction mise en commentaire aussi.

C) feuille "5" : bouton "Voir les règles de calcul" :
appelle la sub regle1() du module alllerretour_règlesetmini ;
bugs causés par ces 3 lignes :
VB:
    Sheets("minipoly > durée maxi de prorat").Select
    Sheets("REGLE1").Visible = True
    Sheets("REGLE1").Select
les 2 feuilles "minipoly > durée maxi de prorat" et "REGLE1"
n'existent pas dans le classeur ; code mis en commentaire.

D) feuille "6" : bouton "Voir les règles de calcul" :
appelle la sub regle2() du module alllerretour_règlesetmini ;
bugs causés par ces 3 lignes :
VB:
    Sheets("rg seul ou poly <= durée maxi p").Select
    Sheets("REGLE2").Visible = True
    Sheets("REGLE2").Select
les 2 feuilles "rg seul ou poly <= durée maxi p" et "REGLE2"
n'existent pas dans le classeur ; code mis en commentaire.

E) feuille "7" : bouton "Retour page" :
appelle la sub retourpolyaprèsproratas() du module Retour_mini_aprèsproratas ;
bugs causés par ces 2 lignes :
VB:
    Sheets("minipoly > durée maxi de prorat").Visible = True
    Sheets("minipoly > durée maxi de prorat").Select
la feuille "minipoly > durée maxi de prorat" n'existe pas
dans le classeur ; code mis en commentaire.

F) feuille "8" : bouton "Retour page" :
appelle la sub retourrgseulaprèsproratas() du module Retour_mini_aprèsproratas ;
bugs causés par ces 2 lignes :
VB:
    Sheets("rg seul ou poly <= durée maxi p").Visible = True
    Sheets("rg seul ou poly <= durée maxi p").Select
la feuille "rg seul ou poly <= durée maxi p" n'existe pas
dans le classeur ; code mis en commentaire.

ça y'est ! tes boutons ne provoquent plus de plantage ! 😊 😇
maintenant, à toi d'adapter le code correctement ! 😁 😜

soan
 

Pièces jointes

  • TABLEUR R111 TEST v2.xlsm
    319.1 KB · Affichages: 1

soan

XLDnaute Barbatruc
Inactif
@rosabelle

Lis d'abord mon post #8 précédent. :)



à propos du fichier "TABLEUR R111 TEST.xlsm" de mon post #6,
ce qui va être sous le long trait est valable pour ces 2 feuilles :

Feuil02 (2) et Feuil03 (3).

ATTENTION :
ne modifie PAS le code VBA, laisse-le TEL QUEL !


le code VBA que j'ai mis ci-dessous est juste pour te le MONTRER ;
ce n'est PAS pour faire un REMPLACEMENT de code VBA, NI pour
faire un AJOUT de code VBA.



1) pour pouvoir faire le coller de l'image en cellule A1 :

* il y a déjà ce code VBA dans le module de Feuil02 (2) :

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Address(0, 0) = "A1" _
      Then ActiveSheet.Unprotect "toto" _
      Else ActiveSheet.Protect "toto"
  End With
End Sub

ça fait que si tu sélectionnes la cellule A1, la feuille est déprotégée ➯ ça te permet de coller une image ; si tu sélectionnes n'importe quelle autre cellule, ça protège la feuille ➯ c'est de nouveau sécurisé.​

* module de Feuil03 (3) :

il y a déjà une sub identique à la précédente, avec les mêmes conséquences d'utilisation.​



2) pour pouvoir supprimer l'image qui a été collée :

C'EST INUTILE de MODIFIER le code VBA ; c'est juste une simple manip à faire :

sélectionne la cellule C1 ; appuie 2× sur la touche flèche gauche du clavier pour être en A1 ➯ ça déprotège la feuille ➯ tu peux sélectionner l'image pour la supprimer ou pour la déplacer. :)

soan
 

Discussions similaires

Statistiques des forums

Discussions
314 717
Messages
2 112 167
Membres
111 448
dernier inscrit
ayment