XL 2019 duplication onglet

Did25

XLDnaute Occasionnel
Bonjour le forum ,je finalise actuellement un fichier de suivi de congés pour des employés ,basé sur un planning annuel avec formules matricielles et mise en forme conditionnelle ,plusieurs boutons de colorisation de cellules ,j'utilise une formule sur un bouton de création de sauvegarde avec ceci :
Private Sub CommandButton7_Click()
'création nouvel onglet pour suivi congés d'une nouvelle année
Dim Sh As Worksheet, Ws As Worksheet
Set Ws = ActiveSheet
Set Sh = Worksheets.Add(AFTER:=Sheets(Sheets.Count))
Ws.Cells.Copy
With Sh.Range("A1")
.PasteSpecial xlPasteAll
.Range("A1").Select
End With
Sh.Name = "Sauvegarde"
End Sub

Ma formule ne prend pas en compte mes bouton de colorisation de cellule et ne respecte pas exactement la mise en forme (taille des colonnes de tableau) ,je souhaiterais aussi sur demande par msgbox ,mettre le nom que je veux du nouvel onglet .Merci de votre aide
 

job75

XLDnaute Barbatruc
Bonjour didier Costille, eriiiic,

Même solution qu'Eric mais avec une boucle si le nom entré ne va pas :
VB:
Private Sub CommandButton7_Click()
'création nouvel onglet pour suivi congés d'une nouvelle année
Dim nom$
ActiveSheet.Copy After:=Sheets(Sheets.Count)
On Error Resume Next
Do
    nom = InputBox("Nom de la feuille :", "Entrez", nom)
    ActiveSheet.Name = nom
Loop While ActiveSheet.Name <> nom
End Sub
A+
 

Did25

XLDnaute Occasionnel
Bonjour Eric et Job75 ,merci pour vos réponses les deux solutions fonctionnent ,j'ai une autre questions ,est -il possible de choisir les boutons qui seront copiés car je souhaiterais que deux boutons soient absent sur la nouvelle feuille .
 

Did25

XLDnaute Occasionnel
Bonjour Eric après plusieurs essais ,je sèche avec un bouton sur la feuille que je ne veux pas copier ,j'ai fais une macro pour connaitre son nom exact ,je l'ai reporté sur la formule suivante mais sans succès
Private Sub CommandButton6_Click()
'sauvegarde et creation onglet
Dim nom$
ActiveSheet.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Shapes.Range(Array("CommandButton6")).Delete
ActiveSheet.Shapes.Range(Array("Button48")).Delete
On Error Resume Next
Do
nom = InputBox("Nom de la feuille :", "Entrez", nom)
ActiveSheet.Name = nom
Loop While ActiveSheet.Name <> nom
End Sub

Bonne journée
 

eriiic

XLDnaute Barbatruc
Bonjour,

Tiens, ça me rappelle qq chose ce calendrier...
Désolé pour le délai, je n'ai pas beaucoup de temps libre en ce moment.

Tu demandes au CommandButton6 de se suicider, il n'est pas trop d'accord.
Met-le à la fin :
VB:
Private Sub CommandButton6_Click()
    'sauvegarde et creation onglet
    Dim nom$
    ActiveSheet.Copy After:=Sheets(Sheets.Count)
    ActiveSheet.Shapes.Range(Array("Bouton48")).Delete
    On Error Resume Next
    Do
        nom = InputBox("Nom de la feuille :", "Entrez", nom)
        ActiveSheet.Name = nom
    Loop While ActiveSheet.Name <> nom
    ActiveSheet.Shapes.Range(Array("CommandButton6")).Delete
End Sub
Comme ça tu seras sûr que tout ce qui précède a été réalisé, et tu profiteras du On Error Resume Next toujours en cours.

Quand au reste je me demande pourquoi tu n'es pas parti sur une feuille modèle comme je te l'avais suggéré dès le premier post.
Tant qu'à faire, autant copier une feuille qui est exactement ce que tu as besoin, avec le minimum à reprendre dessus.
Tu demandes année et équipe et tu les retranscris sur la feuille vierge copiée.
eric
 
Dernière édition:

Did25

XLDnaute Occasionnel
Merci pour ta réponse Eric ,pas de soucis pour l'attente ,je n'ai pas de caractère d'urgence ,le fichier évolue et gagne en maturité grâce à vous et je vous en remercie ,pour ce qui est de ta proposition de la feuille modèle ,la feuille de suivi de congés est la feuille modèle ,mais peut-être que le choix année et équipe pourrait ce choisir via une boite de dialogue lors de la copie de la feuille ?.
 

eriiic

XLDnaute Barbatruc
Bonjour non ?

Tu demandes à l'utilisateur de nettoyer sa feuille avant.
Une feuille modèle doit être vierge, prête à l'emploi, et de préférence masquée.

Comme tu ne voulais plus de bouton, c'est un double-clic sur An_Ref (O45) qui ouvre une boite de dialogue de création d'une nouvelle feuille.
Tu pourrais aussi faire une feuille accueil avec un bouton, ou bien en mettre un sur Bdd, à toi de voir.
J'ai mis quelques contrôles de validité sur les saisies, à toi de voir s'il faut les modifier.
Si tu ne veux plus des toupies, les supprimer de la feuille Modèle (masquée)
A tester...
eric
 

Pièces jointes

  • Planning+suivi congés.xlsm
    111.4 KB · Affichages: 3

Did25

XLDnaute Occasionnel
Merci Eric ,j'ai testé c'est très bien ,j'ai décidé de tout enlever sur la page principale et de laisser le double click pour la création du nouvel onglet ,j'ai également enlevé les toupies et bloquer les cellules de choix sur le modèle pour qu'une fois le formulaire crée ,il ne puisse pas y avoir de changement .Cela donne une page d'accueil avec une notice d'explication mais du coup il n'y a que les imbéciles qui ne changent pas d'avis ,je suis maintenant plutôt interessé par un bouton que le double click mais là pour le coup je cherche pour modifier cela .
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Sh.Name = "Bdd" Then Exit Sub
If Not Intersect(Target, [An_Ref]) Is Nothing Then Cancel = True: UserForm1.Show
End Sub

Bonne journée
 

Pièces jointes

  • Planning+suivi congés (1).xlsm
    92.7 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 153
Membres
103 137
dernier inscrit
Billly