[VBA] Créer des onglets à partir des autres vierges

R@chid

XLDnaute Barbatruc
Bonjour @ tous,
Encore une fois ce R@chid va poser 3 questions en VBA :)
Je travaille pour un établissement scolaire qui fait la formation et l'encadrement des candidats CNED, donc je dois faire une application pour suivre la réalisation des devoirs de chacun des élèves.
J'ai créé un fichier avec des onglets vierges, un onglet pour chaque classe ces derniers sont verrouillés par un mot de passe et je vais les masquer..

Ce que je veux faire :

Macro 1:
Créer des onglets à partir des onglets masqués "6EME" "5EME"… le nom de l'onglet doit porter le nom et prénom de l'élève et insérer aussi le nom de l'élève dans la cellule C7.
Noter que les onglets vont être verrouillés par mot de passe, et que je prévoie aussi l'inscription tardive des élèves donc il ne faut pas recréer ceux qui sont déjà créés.

Macro 2:
On va envoyer les relevés aux parents, alors il faut créer des fichiers PDF à partir des onglets, nom de fichier "Classe_JJMMAA_PrenomNom" dans un dossier que je vais spécifier.

Macro 3:
Une autre macro pour l'impression.

Voir PJ

J’espère être clair

Bien @ vous
 

Pièces jointes

  • XLD_Devoirs.xlsx
    39.3 KB · Affichages: 51

camarchepas

XLDnaute Barbatruc
Re : [VBA] Créer des onglets à partir des autres vierges

Bonjour A tous , Rachid,

Alors effectivement cela marche aussi , sauf que si ta boucle tourne sur 200 feuilles tu va exécuter la déprotection 200 , ce qui ne sert à rien , et si tu enleves la gestion d'erreur tu t'aperçois que tu masques d'autres erreurs puisque dés le depuis de la routine tu utilise le : On Error Resume Next qui passe à la ligne suivante en cas d'erreur quelque soit l'erreur(mais tu risques de chercher souvent des anomalies étranges à cause de cela ) . bon le principal étant d'essayer pour trouver une solution ,car c'est en essayant que l'on finit par découvrir tous ceci . bravo .

Cordialement
 

R@chid

XLDnaute Barbatruc
Re : [VBA] Créer des onglets à partir des autres vierges

Bonjour @ tous,
Merci l'ami pour les explications, comme tu le savais je suis nul en VBA :eek:
Est-ce que l'on peut jouer sur la qualité des fichiers PDF que génère la Macro ??
Je vois une différence en terme de lisibilité sur PC entre les fichiers générés par la macro et les autres que j'imprime avec l'imprimante Adobe Acrobat..

@ + +
 

Pièces jointes

  • Eleve_09_AcrobatReader.pdf
    104.6 KB · Affichages: 40
  • 4EME_140709_Eleve09.pdf
    251.8 KB · Affichages: 42

R@chid

XLDnaute Barbatruc
Re : [VBA] Créer des onglets à partir des autres vierges

Bonjour les amis,
Je vais abuser un tout petit peu de votre temps,
J'ai envie d'ajouter une Macro qui a pour le but de Afficher/Masquer l'onglet Base, vu que mon classeur est verrouillé, ça me prend du temps le fait de déverrouiller le classeur puis afficher l'onglet et vise-versa.
Donc ce que j'aime bien faire c'est un bouton sur l'onglet Accueil : en cliquant dessus pour afficher l'onglet Base il me demande le mot de passe j'entre et hop, et je veux qu'il change de nom quand l'onglet Base est affiché :Afficher/Masquer, mais quand on clique pour masque le dit onglet il le fait sans aucun mot de passe, ceci dit que le mot de passe est demandé juste pour l'affichage et pas pour le masquage.
Je ne sais pas si je dois le faire sur un nouveau fil ??


@ + +
 

camarchepas

XLDnaute Barbatruc
Re : [VBA] Créer des onglets à partir des autres vierges

Bonjour Rachid,

Non pas un autre fil ,
voici 2 procédures , une pour verrouiller et l'autre pour déverrouiller avec demande de mot de passe

Bien sur l'on peut enlever la proposition Banane

Code:
Sub Verrouille_Onglet()
Dim MotDePasse As String
    MotDePasse = InputBox("Saisir le mot de passe à utiliser", "ATTENTE UTILISATEUR", "Banane")
    Sheets("Feuil2").Protect Password:=MotDePasse, DrawingObjects:=True, Contents:=True, Scenarios:=True
    Sheets("Feuil2").EnableSelection = xlNoSelection
End Sub

Sub Déverrouille_onglet()
Dim MotDePasse As String
    MotDePasse = InputBox("Saisir le mot de passe à utiliser", "ATTENTE UTILISATEUR", "Banane")
    Sheets("Feuil2").Unprotect Password:=MotDePasse
End Sub
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : [VBA] Créer des onglets à partir des autres vierges

Rachid,

Oups autant pour moi , effectivement , j'ai pas tout bien lu , enfin interprété .

Bon , voici , enfin si j'ai pas encore été trop rapide


Précision : un appui sur le meme bouton te fait tour à tour révéler ou masquer l'onglet en fonction de son état initial

Code:
Sub Masque_Montre()
ActiveWorkbook.Unprotect Password:="Banane"
Worksheets("Feuil2").Visible = IIf(Worksheets("Feuil2").Visible = True, False, True)
ActiveWorkbook.Protect Password:="Banane", Structure:=True, Windows:=False
End Sub
 

JCGL

XLDnaute Barbatruc
Re : [VBA] Créer des onglets à partir des autres vierges

Bonjour à tous,

Pour le plaisir de tenter d'aider l'ami Rachid et pour le plaisir de croiser notre nouveau Barbatruc.

A++
A+ à tous
 

Pièces jointes

  • Affiche Masque.xlsm
    27 KB · Affichages: 48

R@chid

XLDnaute Barbatruc
Re : [VBA] Créer des onglets à partir des autres vierges

Bonsoir @ tous,
Je tiens d'abord à remercier CaMarchePas pour son code qui fonctionne très bien, et je tiens aussi à remercier JCGL pour l'aide et pour le truc de Afficher/Masquer j'ai bien aimé, je l'ai bien demandé en post #48.

Merci à vous deux :)

Mais il y a un petit truc que vous n'avez pas vu en post #48, c'est que je veux qu'il me demande d'entrer le mot de passe pour afficher le dit onglet mais pas pour le masquer juste quand je veux l'afficher.

@ vous relire
 

camarchepas

XLDnaute Barbatruc
Re : [VBA] Créer des onglets à partir des autres vierges

Voici le code de JC modifié,

ce code devra toujours être identique bien sur , sinon il faudra prévoir une sauvegarde du code quelque part

Code:
Option Explicit

Private Sub CommandButton1_Click()
Dim motdepasse As String
If Feuil2.Visible Then
     motdepasse = "jcql"
   Else
    motdepasse = InputBox("Mot de passe :")
End If

ActiveWorkbook.Unprotect Password:=motdepasse
Feuil2.Visible = IIf(Feuil2.Visible = True, False, True)

Feuil1.CommandButton1.Caption = IIf(Feuil1.CommandButton1.Caption = "Affiche", "Masque", "Affiche")
Feuil1.CommandButton1.BackColor = IIf(Feuil1.CommandButton1.BackColor = &HC0FFC0, &H8000000F, &HC0FFC0)
ActiveWorkbook.Protect Password:=motdepasse, Structure:=True, Windows:=True
End Sub
 

camarchepas

XLDnaute Barbatruc
Re : [VBA] Créer des onglets à partir des autres vierges

Bonjour Rachid,
La réponse la plus énervante que l'o, peut faire à quelqu'un c'est justement camarchepas ,

car avec ce genre de réponse pour trouver le pourquoi, pas évidant, enfin.

Je suis une bonne nature et c'est un peu pour cela que j'ai pris ce speudo , qui était un surnom il y a trés longtemps , lorsque j'intervenais en dépanage sur des lignes de production industrielles .

Bon je raconte ma vie là , si l'on revenait à tes brebies .

alors ok , cela ne fonctionne pas comme tu l'entends, car moi j'ai juste modifé le mot de passe de Jc pour qu'il ne soit pas dérobé , lol

Bon, je te joint le classeur , attention de bien respecter le mot de passe banane en minuscule
 

Pièces jointes

  • Affiche Masque-2.xlsm
    19.7 KB · Affichages: 39

R@chid

XLDnaute Barbatruc
Re : [VBA] Créer des onglets à partir des autres vierges

Bonjour CaMarcheBien,
....
La réponse la plus énervante que l'o, peut faire à quelqu'un c'est justement camarchepas ,
....

Je suis vraiment désolé pour la réponse énervante, merci de me pardonner ce manque de politesse, je suis vraiment désolé :(.

Pour le fichier ça marche parfaitement, est-ce que tu peux ajouter un truc pour gérer l'erreur si le mot de passe n'est pas correct ??

Merci encore une fois et pardon mon manque de politesse.

@ te relire
 

camarchepas

XLDnaute Barbatruc
Re : [VBA] Créer des onglets à partir des autres vierges

Rachid ,

Pas de problème ,

Y'a longtemps que j'ai effacé ce post de ma tête .

Y'a des choses bien plus importantes.

Voici donc une solution
 

Pièces jointes

  • Affiche Masque-3.xlsm
    20.1 KB · Affichages: 34

R@chid

XLDnaute Barbatruc
Re : [VBA] Créer des onglets à partir des autres vierges

Re,
Merci l'ami ça fonctionne comme il faut, c'est gentil.. :)
Pour l'oubli du post c'est juste parce que tu es gentil, mais moi je ne dois pas l'oublier, c'est une erreur fatale que j'ai faite par inadvertance :(.


Merci encore une fois et à bientôt
 

Discussions similaires