XL 2016 dégriser effacer (bouton2) lorsque sauvegarde (bouton1) et RAZ d'u nom d onglet.

pelerin65

XLDnaute Occasionnel
bonsoir les amis,:)

je fais appelle à vous je suis novice dans le vba car j ai deux problèmes

le premier est le suivant:
J'ai fait un tableau de relevé de notes avec 2 boutons un pour sauvegarder et l'autre effacer le tableau.
A la fin de la journée uniquement, je voudrais que durant toute la journée le bouton effacer reste grisé et s'active uniquement après avoir sauvegardé.
j'ai beaucoup recherché sur les forums et je ne trouve pas une solution.

d'ou l'appel au forum

le deuxième est que je nomme automatiquement l'onglet via la cellule C2 donc dans c'est une lettre et un numéro type "A34" sur la feuille4
j'aimerai qu'il renomme "vierge" avec le bouton effacer
je vous remercie d'avance pour votre aide.

j'espère être claire et je voulais joindre le fichier mais lors du téléchargement, j'ai en réponse "fichier trop volumineux"
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Pelerin,
Un essai en PJ.
Je crée une variable globale donc visible par tous les module; cette variable vaut 1 si l'effacement est autorisé :
VB:
Public Sauvegarde%
Dans Sauvegarde, on met le texte en rouge et Sauvegarde à 1:
Code:
ActiveSheet.Shapes("RAZ").TextFrame.Characters.Font.Color = vbRed
Sauvegarde = 1
Dans effacement si cette variable vaut 0 on sort, sinon on met le text en gris et cette variable à 0. A la fin on renomme la feuille :
Code:
    If Sauvegarde = 0 Then Exit Sub
    ActiveSheet.Shapes("RAZ").TextFrame.Characters.Font.Color = RGB(127, 127, 127)
    Sauvegarde = 0
...
...
    ActiveSheet.Name = "Vierge"
End Sub
J'ai passé le xlsm (1.15Mo) en xlsb (645ko)
C'est pareil mais pose problème sur tablette ou smartphone. Si vous voulez vous le ré enregistrez en xlsm.
 

Pièces jointes

  • KKnr5JeIqh7_loc-ng-2022.xlsb
    645.3 KB · Affichages: 3

pelerin65

XLDnaute Occasionnel
Bonjour Sylvanu
super génial :cool::p
c'est exactement ce que je recherchais pour les boutons et c'est quoi la différence en xlsm et xlsb, il y a tellement de possibilité pour les formats.
petit question lors de l'enregistrement une fenêtre me pose si je veux enregistrer avec ou sans macro.
le top aurais été d'enregistrer au format pdf en ouvrant la fenêtre pour choisir le dossier toujours en gardant le nom de la cellule C2 type "A34" et la date du jour en B2
et merci encore pour les boutons
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
1- Chez moi, le xlsb ne pose pas la question. Enregistrez le en xlsm.
2- Pour un enreg en pdf, vous pouvez utiliser :
VB:
Sub Enreg_Pdf()
    Dim Nom$: Nom = [C2]
    FileSaveName = Application.GetSaveAsFilename(InitialFileName:=Nom & Format(Date, "dd_mmmm_yyyy") & ".pdf", filefilter:="Fichier PDF(*.pdf), *.pdf")
    If FileSaveName <> False Then
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FileSaveName, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
    End If
End Sub
Je ne l'ai pas introduit dans votre code, la macro est dans le module SauvegardePDF
3- Il suffit de modifier la ligne :
Code:
If N1 = "" Then
    MsgBox "Veuillez renseigner le cellule C2"
    Exit Sub
End If
 

Pièces jointes

  • KKnr5JeIqh7_loc-ng-2022_V2.xlsb
    647.8 KB · Affichages: 3

pelerin65

XLDnaute Occasionnel
Rebonsoir sylvanu
J espère que je t en demande pas trop
en finalisant, je m’aperçois que, vu l’onglet se renomme par la C2,
Sur la feuille tournée, j’ai crée un bouton pour naviguer entre les pages mais dès qu’elle es renommée,
Ça bug y a t il un solution à ce nouveau problème
Et désolé de te redemander de l aide
Merci 🙏
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Si on fait Sheets("A34") et que cette feuille n'existe plus, évidemment ça bug.
Par contre si vous regarder à gauche de la feuille de l'éditeur, vous avez :
1636907910333.png

A chaque feuille XL affecte un indice qui ne change jamais. Et ensuite son petit nom pour être plus explicite.
Donc ici Feuille 933 possède l'indice 2. Remplacer alors :
VB:
Sheets("933").Name = [C2]
par
Feuil2.Name = [C2]
Un exemple en PJ.
 

Pièces jointes

  • Classeur1.xlsm
    14.5 KB · Affichages: 6

pelerin65

XLDnaute Occasionnel
Bonjour Eric

et merci pour ta réponse mais l'adapté ca me semble compliqué mais je vais y arriver sinon je demanderai de l'aide

c est parfait mais c'est en exécutant une macro je vais joindre le fichier
l idée c est d une rechechev via le critère de la ville de départ ou arrivée ou les deux s affiche le lien
 

Pièces jointes

  • Classeur3.xlsb
    23.2 KB · Affichages: 2