Partage un classeur

Bonjour à tous,

Je viens de créer ses petites macros qui pourront peut-être être utiles à certains cela concernent quand nous voulons créer un nouvel onglet il faut d’abord le créer et ensuite marquer le nom.

Je vous propose deux boutons le premier ouvre une petite fenêtre ou vous tapez le nom de l’onglet de votre souhait et ensuite vous le validez et le second à une liste déroulante et permet de supprimer l’onglet que nous souhaitons en cliquant sur supprimer.

Vous pourrez les installer soit dans votre barre accès rapide ou créer un nouvelle onglet à la suite de l’accueil et les autres si vous avez besoin de plus de précisions n’hésitez pas.

Pour les plus expérimentés cette petite chose peut vous paraître banale mais pour moi c’est la première création réaliser tout seul donc n’hésitait pas à me dire ce que vous en pensez si il y a une autre façon de faire plus facilement ou de l’améliorer je vais essayer dans le futur de voir si on peut sélectionner plusieurs onglet pour les supprimer en même temps.

Donc n’hésitai pas ce classeur est libre de droit j’espère que ce petit classeur pourra vous apporter.

Bonne continuation à tous et je tenais aussi à dire que ce forum est un endroit où les personnes nous aident énormément cordialement à tous.

Comment_créer_un_onglet_vba.xlsm (20,9 Ko)

Bonjour,

Une petite modification sur ta procédure d’ajout d’onglet
Si tu ne précises pas AFTER ou BEFORE dans l’ajout, l’onglet se place juste avant l’onglet sélectionné
et si tu ne vérifies pas si le nom existe, il va le créer, et au renommage, tu aura un message d’erreur avec un bug VBA)

Private Sub CommandButton1_Click()
  Dim onglet As Worksheet
    For Each onglet In Worksheets 'Boucle sur les onglets pour vérifier si le nom de la feuille existe
      If UCase(onglet.Name) = UCase(TextBox1.Value) Then
          MsgBox "Cette feuille existe déjà !" 'Si la feuille existe, affichage message et sortie de la procèdure avec le focus sur la textbox
          Exit Sub
          TextBox1.SetFocus
      End If
    Next onglet
  Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = Me.TextBox1.Value 'Ajout d'un onglet à la fin (After)
  Unload Me
End Sub

Pour ta procédure de suppression, ajoute les deux lignes comme sur mon exemple pour ne pas afficher le message d’alerte
Ensuite, il faut vider les données du Combobox, sinon, tu as toujours le nom de la feuille effacée, et tu relance l’initialisation.

Private Sub CommandButton1_Click()
  Worksheets(ComboBox1.Value).Activate
  
  Application.DisplayAlerts = False 'Annule l'affichage d'alerte d'Excel
  ActiveWindow.SelectedSheets.Delete
  Application.DisplayAlerts = True  'rajoute l'affichage d'alerte d'Excel (A remettre impérativement)
  ComboBox1.Clear 'Je vide les données du Combobox
  UserForm_Initialize ' Je le recharge pour ne pas avoir l'onglet déjà supprimé
End Sub

Bonjour à tous,

Comme quoi je ne connais pas tout encore merci pour ce que tu proposes je n’avais pas pensé à faire la boucle pour le second c’est vrai que je n’ai pas pensé à nettoyer la combo box petite question est-ce que vous avez un lexique entre guillemets qui pourraient montrer un peu comment on doit penser pour créer une macro ou autre.

Bonjour,
Lorsque l’on créé un programme sous EXCEL ou autres, la bonne méthode est de faire un « cahier des charges »
J’explique:
On note ce que l’on veut faire et on marque ou dessine pas à pas, cela permet de placer les erreurs qui pourraient se produire et la ou les exceptions. Notez en progressant dans le déroulement du programme
Si le programme est important, on le découpe en morceaux individuels.

Ou bout d’un moment, des macros se ressemblent, d’où la bonne solution de bien les programmer et de les sauvegarder sur un dossier que tu gardes précieusement (ils resserviront ultérieurement pour d’autres projet)

A force de créer des macros, tu augmenteras tes connaissances

Tu peut jeter un oeil dans la partie exercices de ce forum ou il y a des exemples que j’avais mis en place

Bonjour le Fil,

Si écrire une procédure qui supprime un onglet est relativement simple, créer un nouvel onglet est bien plus compliqué :

  • Tout d’abord, il ne faut pas confondre onglet et feuille de calcul. Il existe 4 types d’onglets, pour créer un onglet il faut aussi définir son type (et donc le demander).
  • Il n’y a pas que l’existence du nom qui peut faire avorter la création du nouvel onglet (nom interdit, classeur protégé, …)
  • Je pense que créer un nouvel onglet est un excellent exercice pour apprendre à coder un gestionnaire d’erreur.
  • Dans ce contexte, on voit qu’utiliser un raccourci tel que Sheets.Add.Name = … est une très mauvaise méthode car selon l’erreur, l’onglet sera ou ne sera pas créé lorsqu’elle se produit. Il faut séparer chaque instruction susceptible de créer une erreur.

Si on se contente de créer une nouvelle feuille de calcul, voici une ébauche de code, qu’il faut bien évidemment développer pour traiter plus finement chaque cas :

Option Explicit
Private Sub CommandButton1_Click()
Dim feuilleDeCalcul As Worksheet
  On Error GoTo Add_Error
  Set feuilleDeCalcul = Worksheets.Add(After:=Worksheets(Worksheets.Count))
  On Error GoTo Name_Error
  feuilleDeCalcul.Name = Me.TextBox1.Value
  On Error GoTo 0
  Unload Me
Exit Sub
Name_Error:
  Application.DisplayAlerts = False
  feuilleDeCalcul.Delete
  Application.DisplayAlerts = True
  MsgBox "Error " & Err.Number & " (" & Err.Description & ")"
Exit Sub
Add_Error:
  MsgBox "Error " & Err.Number & " (" & Err.Description & ")"
End Sub

Bonjour à tous,

Patrice 33740 pour que je puisse comprendre plus précisément dans le code suivant qu’est-ce que cela actionne et quand est-ce qu’on peut l’utiliser sur différents codes s’il te plaît.

Ça actionne un gestionnaire d’erreur personnalisé.
Voir : Éléments de gestion des erreurs d’exécution | Microsoft Docs
et La gestion des erreurs dans Excel