Excel VBA: Pb Verrouillage cellule

Résolu/Fermé
Piemex Messages postés 10 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 6 août 2009 - 3 août 2009 à 08:38
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 3 août 2009 à 20:18
Bonjour a tous,

Voici mon problème:

Je réalise actuellement une macro pour faciliter la réalisation de notices de fabrication pour des appareils industriels. L'idée est d'avoir sur une page un format type et une page de garde que les utilisateurs ne peuvent pas modifier sans passer par une macro qui en parallele stoque les mofications de ces données.

Seulement plus bas sur cette page j'ai besoin que les utilisateurs puissent travailler les cellules et la page.
Je m'explique il est très important que l'utilisateur puisse insérer des photos et modifier le format des cellules.

Pour l'instant dans mon programme j'ai récupérer l'equivalent de la fonction de protection Excel:

ActiveSheet.Protect DrawingObjects:=False, AllowFormattingCells:=True

J'ai même excepter certaines cellules grace a l'option Locked ce qui me permet de modifier le contenu dans les cellules ainsi marqué meme une fois la page protegée:

Range("A1:I3").Locked = False

Seulement dès que j'utilise la fonction protect je me prive de la possibilité d'inserer des images sur la page.
J'ai essayé tout les différents attributs de la fonction "protect" du genre "Allow...".

En parcourant les forum j'ai vu qu'une certaine fonction readOnly = True existe mais je ne sais pas comment l'appliquer a une selection de cellules.

Voila si quelqu'un a une idée donc pour simplement vérouiller le contenu et le format de certaines cellules sur une page sans enlever d'autres fonctionnalité de la page je le remercie par avance.
A voir également:

7 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
3 août 2009 à 09:09
Bonjour,

Juste une idée : ajouter l'insertion d'image dans le menu contextuel (clic-droit), et déprotéger-insérer-reprotéger par macro (ou avoir protégé par UserInterfaceOnly:=true)
eric
2
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
3 août 2009 à 19:22
Re,

Mais ca serait dommage de proposer un outil aux collegues en leur disant qu'ils doivent d'abord mettre les photos dans un autre fichier temporairement puis les copier vers la page excel en question.
J'ai dit ça moi ?

voici un exemple de ce que tu pourrais faire :
Dans ThisWorkbook ajout d'un menu contextuel (clic-droit) "Insérer image dans la cellule active..."
Dans un module appeler la boite de gestion des fichiers et insérer l'image si il y en a eu une de sélectionnée.
Là je l'aligne avec la cellule active et je diminue hauteur et largeur pour qu'elle ne déborde pas de la cellule mais c'est en exemple de ce que l'on peut faire, à toi de choisir.
piemex.xls

eric

PS : protéger la feuille avec la macro 'protec' pour pouvoir travailler en vba sans enlever et remettre la protection (UserInterfaceOnly:=True). Il faudra que tu la modifies si tu veux y mettre un mot de passe.
2
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
3 août 2009 à 20:18
Re,

ajouter un "volet espion" ???
'ajouter un espion' plutôt non ?
Ca te permet de surveiller la valeur de certaines cellules pour les avoir toujours sous les yeux même si tu scrolles.
Mais c'est sur toutes les feuilles de tous les classeurs, pas seulement sur ce classeur.
On ne lit jamais assez tout... ;-)

Par contre il faudra que tu affines l'exemple, là c'est actif sur toutes les feuille du classeur, il faut peut-être restreindre à certaines...
eric

edit: si tu peux mettre ces 2 lignes dans cet ordre plutôt :
    End With
    Set FImage = Nothing

1
Piemex Messages postés 10 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 6 août 2009
3 août 2009 à 09:24
Bonjour Eric je viens d'essayer pour ce qui est de UserInterfaceOnly je viens d'essayer mais ca n'a pas d'influence sur le problème je ne peux toujours utiliser aucune des fonctions de la partie insérer (Hyperlinks, Clipart, Autofroms ....)
Je précise que je travaille sur Excel 2003 et a priori le collegue a coter vient d'ouvrir le dossier sous 2007 et le meme code n'a pas le même effet, lui parvient a inserer des images ...

(Je précise bien que c'est vraiment le même fichier je n'y comprends rien ...)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
3 août 2009 à 09:41
Re,

UserInterfaceOnly ne sert qu'à ne pas à avoir à déprotéger la feuille pour faire une action par macro (seul l'utilisateur est bloqué), l'insertion d'image doit se faire par macro. Avec appel soit un menu contextuel, par un outil, par raccourci clavier,...
eric
0
Piemex Messages postés 10 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 6 août 2009
3 août 2009 à 09:53
Oui en effet je peux toujours insérer des images en les copiant depuis un autre fichier.
Mais ca serait dommage de proposer un outil aux collegues en leur disant qu'ils doivent d'abord mettre les photos dans un autre fichier temporairement puis les copier vers la page excel en question.

De plus je suis incapable de programmer une macro qui permet d'explorer le poste de travail, choisir une photo et la prévisualiser puis l'insérer et ca me parrait dommage de reprogrammer quelaue chose qu'excel est censé faire pour nous.

Si tu vois peut etre une autre approche que la fonction protect pour vérouiller le contenu et le format de certaines cellules je suis tout a fait ouvert a d'autres tentatives.

Merci déja pour te idées Eric.
0
Piemex Messages postés 10 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 6 août 2009
3 août 2009 à 20:09
Bonsoir Eriic,

J'avoue être assez impressionné par le niveau de ton code je ne savais pas que l'on pouvais réaliser de telles choses avec Excel VBA.

Je prends ton idée elle marche très bien.

Dans l'après midi j'avais également trouvé un moyen de bidouiller en utilisant un code sur le OnChange de la worksheet en stockant en "String" une liste de cellules protégées. En gros quand on tape quelque chose dans une cellule protégée un message d'erreur apparait et le contenu de la cellule revient a sa valeur initiale.

Juste j'ai remarqué dans les onglet quand je fais clique droit dans ta feuille excel que tu as envoyé que l'on peut demander à ajouter un "volet espion" quelle est l'utilité de ce dernier?

Merci
0