Module pour créer et supprimer des onglets dans un fichier excel en vb ou vba

Description

Ce module contient deux fonctions qui permettent de créer et de supprimer facilement des onglets dans un fichier Excel déjà ouvert. Il vous suffit d'intégrer ce module dans votre projet VB ou VBA et de faire appel à ses fonctions comme cela est décris dans le module. Les fonctions renvoient une valeur True ou une valeur False pour prévenir votre programme que la création ou la suppression c'est bien déroulée ou non.

Source / Exemple :


'Module créé par Squall____ pour VBFrance.com
'
'Si vous voullez me contacter, faites le à partir du site www.vbfrance.com
'------------------------------------------------------------------------------------------------
'
'Utilisation du module :
'
'Méthode pour créer un onglet :
'
'If CreerOnglet(Nom_Du_Fichier_Excel, Nom_De_Longlet_A_Creer, False) = True Then
'   Action à faire quand l'onglet est bien créé
'else
'   Action à faire quand l'onglet n'as pas été créé
'end if
'
'Si vous ne voullez pas gérer les erreurs, vous pouvez toujours créer l'onglet en utilisant simplement cette commande :
'
'Call CreerOnglet(Nom_Du_Fichier_Excel, Nom_De_Longlet_A_Creer, False)
'
'Le dernier argument de la fonction CreerOnglet étant à False, le programme ne demanderas pas à l'utilisateur si il donne son accord pour écraser l'onglet déjà existant qui porte le même nom que l'onglet qu'on lui demande de créer (si il en existe un bien sur)
'Le nom du fichier Excel que l'on donne comme premier argument n'est pas le chemin complet de celui-ci mais juste son nom de type "Toto.xls"
'
'------------------------------------------------------------------------------------------------
'
'Méthode pour supprimer un onglet :
'
'If SupprimerOnglet(Nom_Du_Fichier_Excel, Nom_De_Longlet_A_Supprimer, False) = True Then
'   Action à faire quand l'onglet est bien supprimé
'else
'   Action à faire quand l'onglet n'as pas été supprimé
'end if
'
'Si vous ne voullez pas gérer les erreurs, vous pouvez toujours créer l'onglet en utilisant simplement cette commande :
'
'Call SupprimerOnglet(Nom_Du_Fichier_Excel, Nom_De_Longlet_A_Creer, False)
'
'Le dernier argument de la fonction CreerOnglet étant à False, le programme ne demanderas pas à l'utilisateur si il donne son accord pour supprimer l'onglet visé.
'Le nom du fichier Excel que l'on donne comme premier argument n'est pas le chemin complet de celui-ci mais juste son nom de type "Toto.xls"
'Le nom de l'onglet à supprimer peut être aussi bien son nom comme "Feuil3" mais aussi son index, c'est à dire son numéro. Il faut savoir que les onglets son en fait indexé et numérotés par excel de gauche à droite. L'onglet numéro 1 sera donc le premier onglet le plus à gauche.
'
'------------------------------------------------------------------------------------------------
Public Function CreerOnglet(Nom_Classeur, Nom_Onglet, ModeSilence As Boolean) As Boolean
    CreerOnglet = False
    On Error GoTo ErreurCreation
    Workbooks(Nom_Classeur).Activate
    For i = 1 To Workbooks(Nom_Classeur).Sheets.Count
        If Workbooks(Nom_Classeur).Sheets(i).Name = Nom_Onglet Then
            If ModeSilence = False Then
                If MsgBox("L'onglet " & Nom_Onglet & " existe déjà." & Chr(10) & "Voulez-vous écraser l'onglet existant ?", vbYesNo, "Ecraser ?") = vbNo Then
                    MsgBox "Action annulée.", vbInformation, "Annulé"
                    Exit Function
                Else
                    Application.DisplayAlerts = False
                    Workbooks(Nom_Classeur).Sheets(Nom_Onglet).Delete
                    Application.DisplayAlerts = True
                    Exit For
                End If
            Else
                Application.DisplayAlerts = False
                Workbooks(Nom_Classeur).Sheets(Nom_Onglet).Delete
                Application.DisplayAlerts = True
                Exit For
            End If
        End If
    Next
    Workbooks(Nom_Classeur).Sheets.Add , Workbooks(Nom_Classeur).Sheets(Workbooks(Nom_Classeur).Sheets.Count)
    Workbooks(Nom_Classeur).Sheets(Workbooks(Nom_Classeur).Sheets.Count).Name = Nom_Onglet
    CreerOnglet = True
ErreurCreation:
End Function

Public Function SupprimerOnglet(Nom_Classeur, Nom_Onglet, ModeSilence As Boolean) As Boolean
    SupprimerOnglet = False
    On Error GoTo ErreurSuppression
    Workbooks(Nom_Classeur).Activate
    For i = 1 To Workbooks(Nom_Classeur).Sheets.Count
        If Workbooks(Nom_Classeur).Sheets(i).Name = Nom_Onglet Then
            If ModeSilence = False Then
                If MsgBox("L'onglet " & Nom_Onglet & " vas être supprimé." & Chr(10) & "Voulez-vous vraiment supprimer cet onglet ?", vbYesNo, "Supprimer ?") = vbNo Then
                    MsgBox "Action annulée.", vbInformation, "Annulé"
                    Exit Function
                Else
                    Application.DisplayAlerts = False
                    Workbooks(Nom_Classeur).Sheets(Nom_Onglet).Delete
                    Application.DisplayAlerts = True
                    Exit For
                End If
            Else
                Application.DisplayAlerts = False
                Workbooks(Nom_Classeur).Sheets(Nom_Onglet).Delete
                Application.DisplayAlerts = True
                Exit For
            End If
        End If
    Next
    SupprimerOnglet = True
ErreurSuppression:
End Function

Conclusion :


J'attend vos commentaires et vos appréciations !

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.