Selection ou execution sur des cellules Cachees

Résolu/Fermé
Kill3Hoshigaki Messages postés 11 Date d'inscription vendredi 29 janvier 2016 Statut Membre Dernière intervention 11 mars 2016 - 12 févr. 2016 à 09:00
Kill3Hoshigaki Messages postés 11 Date d'inscription vendredi 29 janvier 2016 Statut Membre Dernière intervention 11 mars 2016 - 11 mars 2016 à 09:01
Bonjour,

J'aimerai envoyer une plage de cellule via mail sur excel automatiquement. Je ne suis pas tres competent dans ce domaine mais j'ai pu trouver un code sur des differents sites qui me permet de le faire. Actuellement j'ai 2 problemes, le premier, lorsque la feuille est verouillee et cachee (Feuille contenant les resultats), la plage de cellule selectionnee (contenant le resultat) que je suis cense recevoir par mail n'apparait pas (ou encore selectionne toute la feuille). Le second, lorsque j'execute la commande envoi mail en cliquant sur le bouton (Feuille principale contenant les questions) sachant que la feuille est protegee (et les elements de la seconde feuille caches), elle ne s'execute pas.
Voici le code:

Private Sub CommandButton1_Click()
'Select the range of cells on the active worksheet.
'Procédure de sélection d'une plage de cellules dans une autre feuille de calcul du même classeur.
Sheets("Confidential").Activate
ActiveSheet.Range("C31:F42").Select
ActiveWorkbook.EnvelopeVisible = True ' Show the envelope on the ActiveWorkbook.
'Set the optional introduction
With ActiveSheet.MailEnvelope
.Introduction = "This is your result for the weekly quiz based on Standards."
.Item.To = Range("G60")
.Item.Cc = "Test@exchange.com" 'In Cc
.Item.Subject = "Feedback_Quiz_Evaluation" 'Subject lines.
.Item.Send 'Finally the message is sent.
End With
End Sub


Je vous remercie de votre bonne volonte dans la resolution de mon probleme.
Cordialement,

Ps:Le code fonctionne tant que les cellules/les feuilles ne sont pas verouillees, ni cachees.

6 réponses

borisdu59 Messages postés 4 Date d'inscription lundi 1 juin 2009 Statut Membre Dernière intervention 12 février 2016
12 févr. 2016 à 09:39
Bonjour,

Il me semble que le premier problème vient du fait que les feuilles soient verrouillées. En effet les actions du VBA seront interprété comme des actions d'utilisateur par excel et donc subirons les mêmes restrictions.

Ce que vous pouvez faire dans un premier temps est de déverrouiller la feuille dont vous allez vous servir en début de fonction, puis de la déverrouiller. Pour cela, après l'instruction "Sheets("Confidential").Activate" utiliser celle-ci pour déverrouiller la feuille:"ActiveSheet.Unprotect".

A la fin de votre code utiliser cette instruction pour reverrouiller la feuille : ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True

Attention : "ActiveSheet.Protect" permet de protéger la feuille sélectionnée le reste sont les restriction à mettre en place (type sélection de cellule vérouillée, etc.)
--
0
Kill3Hoshigaki Messages postés 11 Date d'inscription vendredi 29 janvier 2016 Statut Membre Dernière intervention 11 mars 2016
12 févr. 2016 à 10:16
Bonjour Borisdu59,

Je vous remercie pour votre aide, j'ai insere l'instruction, voici ce que j'ai:

Private Sub CommandButton1_Click()
'Select the range of cells on the active worksheet.
'Procédure de sélection d'une plage de cellules dans une autre feuille de calcul du même classeur.
Sheets("Confidential").Activate
ActiveSheet.Unprotect "Admin" 'deverouiller provisoirement le mot de passe
ActiveSheet.Range("C31:F42").Select
ActiveWorkbook.EnvelopeVisible = True ' Show the envelope on the ActiveWorkbook.
'Set the optional introduction
With ActiveSheet.MailEnvelope
.Introduction = "This is your result for the weekly quiz based on DTR Standards."
.Item.To = Range("G60")
.Item.Cc = "CLorbo@slb.com" 'In Cc
.Item.Subject = "Feedback_Quiz_Evaluation-BDTSQ" 'Subject lines.
.Item.Send 'Finally the message is sent.
End With
ActiveSheet.Protect "Admin", DrawingObjects:=False, Contents:=True, Scenarios:=False, AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True
End Sub


Une partie du probleme a ete resolu, lorsque je decide de cacher les cellules, le mail est envoye sans le contenu, des que je le rend visible, il apparait dans le mail. est il possible d'avoir une instruction pour rendre visible la plage de cellule selectionnee momentanement.
Si vous avez d'autres suggestions, je vous remercie d'avance.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
12 févr. 2016 à 16:36
Bonjour

Avec le mot de passe écrit dans le code, la confidentialité ne semblerait pas être assurée...
0
Kill3Hoshigaki Messages postés 11 Date d'inscription vendredi 29 janvier 2016 Statut Membre Dernière intervention 11 mars 2016
12 févr. 2016 à 18:17
Exactement, c'est ce que je me suis dit il y a a peine une heure, meme etant verouille il est possible pour un amateur d'aller regarder le code puisqu'il est accessible. Reste a savoir comment y remedier. Si vous avez une solution, ce serait sympa :)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
13 févr. 2016 à 08:51
Bonjour

Le principe serait de demander le mot de passe à l'ouverture du classeur la feuille "secrète" étant en "veryhidden"

pour qu'un petit curieux ne puisse voir ce mot de passe tu peux le crypter: le petit curieux verra la clé mais pas le mot. vous pouvez être plusieurs avec chacun votre mot de passe

je fais des fouilles archéologiques dans mon disque dur et t'envoie un exemple à adapter
0

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

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 13/02/2016 à 10:00
Re

la clé de cryptage est basée sur "XL-2345" que tu peux changer à ta guise dans les 2 classeurs

sur le classeur administrateur:
en tapant ton pseudo ou ce que tu veux tu obtiens le mot de passe (nota: ca reste quand même naïf puisqu'on se base sur l'additions des codes ascii --> "toto"="otto"); classeur à enregistrer sur clé USB si parano et/ou ambiance dans la boite!

Sur le classeur utilisateur:
l'utilisateur pour accéder au classeur doit taper ton pseudo et ton mot de passe dans un textbox ( pour camoufler le mdp par des étoiles)
dans cette maquette-démo le code exact marque "gagné" avec la voix de Coluche.
Le petit curieux peut voir le code avec la clé mais comme il ne connait ni ton pseudo ni ton code...


A toi alors de l'adapter pour accéder à ta feuille "secrète" (passer de veryhidden à visible ?)
Il serait à installer sur ta feuille publique à mettre dans un coin peut-être dans des colonnes masquées. à toi de voir
de même mettre un mdp pour l'accès aux feuilles VBA et voir si encore utile de protéger la feuille secrète

La bête:
http://www.cjoint.com/c/FBniFOXktwr

 Michel
0
Kill3Hoshigaki Messages postés 11 Date d'inscription vendredi 29 janvier 2016 Statut Membre Dernière intervention 11 mars 2016
13 févr. 2016 à 15:14
Bonjour Michel,

Merci pour le fichier joint, je teste la Bete, lol! :)

Cordialement
0
Kill3Hoshigaki
16 févr. 2016 à 11:52
Bonjour Michel,

Je vous remercie pour le fichier, j'ai bien aime et cela me donne des idees pour mon prochain projet, formidable vous etes.
J'ai trouve une autre methode et simple pour empecher de visualiser le Code

protéger le code VBA :D

1 - Ouvrir VBE (Alt + F11)

2 - Se placer sur le projet VBA du classeur
C'est du style : VBAProject(Classeur1)
Si la fenêtre des projets n'est pas visible, il suffit de cliquer sur le menu Affichage > Explorateur de projets.

3 - Faire un clic droit et choisir "Propriétés de VBAProject..."

4 - Cliquer sur l'onglet "Protection"

5 - Cocher la case "Verrouiller le projet pour affichage"

6 - Mettre un mot de passe (le répéter dans les 2 textbox) et cliquer sur OK

A la prochaine ouverture du classeur le code VBA sera protégé par le mot de passe.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > Kill3Hoshigaki
16 févr. 2016 à 12:10
Bonjour,

oui, j' y ai pensé après et je me suis dit " Que je suis C....!!!)
0
Kill3Hoshigaki Messages postés 11 Date d'inscription vendredi 29 janvier 2016 Statut Membre Dernière intervention 11 mars 2016
16 févr. 2016 à 12:12
je vais être plus précis pour détailler mon problème qui persiste. Lorsque vous cachez une cellule (colonne/ligne) ou encore une feuille excel, tous les codes, instructions ne marchent plus. par exemple, j'utilise un code pour afficher les données qui sont sur une plage de cellules sélectionnées, une fois cachée, les données ne sont plus visibles ni exploitable mais la macro s’exécute.
Y a t-il un moyen d'exploiter les données qui sont sur une feuille excel cachée?
0
Kill3Hoshigaki Messages postés 11 Date d'inscription vendredi 29 janvier 2016 Statut Membre Dernière intervention 11 mars 2016
11 mars 2016 à 09:01
J’ai trouvé une alternative bien que cela ne soit pas parfait. J’ai rendu visible et active la feuille contenant les informations dont j’ai besoin,

Sheets("Confidential").Visible = True
Sheets("Confidential").Activate

ensuite le mail est envoyé avec les éléments dont j'ai besoin.
Apres je cache la feuille et je rends visible une autre.

Sheets("Confidential").Visible = xlSheetVeryHidden
Sheets("Activation").Visible = -1

Je persiste à croire qu’il y a un moyen plus simple que celui-ci.
Je vous remercie pour toutes vos lumières.
0