Microsoft 365 créer nouvelle feuille avec une adition dans son nom

ALBAN34LA

XLDnaute Nouveau
Bonjour à tous,

je suis à la recherche d'un code pour:

je suis sur ma feuille nommée "01".
je souhait ajouter une nouvelle feuille nommée comme la précédente +1, soit en l'occurrence ici elle s'appellerait donc "02" et aller sur cette nouvelle feuille.
si la feuille "02" existe déjà alors aller directement sur la feuille "02".
de plus il vaut que cette nouvelle feuille recopie le feuille "matrice".

si je me trouve sur la feuille "34", la précédente sera donc la "35" ... etc

je vous remercie par avance 😊
 
Solution
Bonjour,
VB:
Feuille visible : Sheets("Matrice").Visible = True
Feuille masquée : Sheets("Matrice").Visible = xlVeryHidden
Le statur xlVeryHidden rend la feuille invisible même dans la liste Afficher quand on clic droit sur un nom d'onglet. Elle n'est visible qu'en VBA.

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @ALBAN34LA, bienvenue sur XLD :),

Voici une proposition avec une macro VBA. La macro est dans le module "Module1".
Pour activer la macro, tapez la combinaison des trois touches Contrôle+Majuscule+w
Cette macro ne fonctionne que pour les feuilles ayant un nom entre "01" et "98".
Si la feuille a un autre nom (yc "99"), la macro ne fait rien.

edit : bonjour @sylvanu :)

Le code de la macro :
VB:
Sub Select_Ajouter_Feuil()
Dim n, s, i&
   On Error Resume Next: n = CDbl(ActiveSheet.Name): On Error GoTo 0
   If n <> Int(n) Then Exit Sub
   If n < 1 Or n > 98 Then Exit Sub
   n = n + 1: s = Format(n, "00")
   On Error GoTo ERR_new
   Application.Goto Sheets(s).Range("a1")
   Exit Sub
ERR_new:
   For i = Sheets.Count To 1 Step -1
      If Sheets(i).Name Like "##" Then Sheets("Matrice").Copy after:=Sheets(i): ActiveSheet.Name = s: Exit Sub
   Next i
End Sub
 

Pièces jointes

  • ALBAN34LA- Ajout ou activer feuille- v1.xlsm
    19.6 KB · Affichages: 1

xUpsilon

XLDnaute Accro
Bonjour,

Voir ci-joint, rajouter un bouton avec la macro disponible dans le classeur sur les feuilles sur lesquelles tu souhaites l'avoir.

Bonne journée,

PS : Bonjour mapomme, Sylvanu :)
 

Pièces jointes

  • ALBAN34LA.xlsm
    18.3 KB · Affichages: 2
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re, bonjour Mapomme, xUpsilon,
Un essai pour le fun avec :
VB:
Sub Suivant()
Dim Nom$, NouveauNom$
Nom = ActiveSheet.Name                                      ' Récupération nom onglet
If Nom = "Matrice" Then Exit Sub                            ' Si c'est Matrice, on sort
NouveauNom = CStr(1 + CInt(Nom))                            ' Nouveau nom = Numéro onglet +1, en chaine caractères
If FeuilleExiste(NouveauNom) Then                           ' Si cette feuille existe
    Sheets(NouveauNom).Select: Exit Sub                     ' On y va
Else                                                        ' Sinon
    Sheets("Matrice").Copy After:=Worksheets(Sheets.Count)  ' On duplique Matrice à la fin
    ActiveSheet.Name = NouveauNom                           ' On la renomme
    Sheets(NouveauNom).Select                               ' On y va
End If
End Sub
Function FeuilleExiste(Nom As String) As Boolean            ' Répond True si la feuille Nom existe
  On Error Resume Next
  FeuilleExiste = Sheets(Nom).Name <> ""
  On Error GoTo 0
End Function
 

Pièces jointes

  • PageSuivante.xlsm
    20.7 KB · Affichages: 1

ALBAN34LA

XLDnaute Nouveau
Merci pour votre retour si rapide.

@mapomme , ton code fonctionne parfaitement.
mais lorsque que je protège ma feuille "Matrice"
voila l'erreur qui s'affiche

1699613511159.png

1699613540217.png
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
VB:
Feuille visible : Sheets("Matrice").Visible = True
Feuille masquée : Sheets("Matrice").Visible = xlVeryHidden
Le statur xlVeryHidden rend la feuille invisible même dans la liste Afficher quand on clic droit sur un nom d'onglet. Elle n'est visible qu'en VBA.
 

Pièces jointes

  • PageSuivante V3.xlsm
    28.9 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
315 080
Messages
2 116 010
Membres
112 636
dernier inscrit
fred 1969