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 :
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
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.
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
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é).
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....
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
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 ensuiteun 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 :
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 !
à 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 autrecellule, ç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êmesconsé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.
Un grand merci encore @soan , je vois que tu as planché à nouveau et a pris beaucoup de ton temps pour m'expliquer.
Je vais m'atteler à comprendre et reviens vers toi.