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

Soyez le premier à donner votre avis sur cette source.

Vue 36 367 fois - Téléchargée 518 fois

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

Ajouter un commentaire

Commentaires

Squall____
Messages postés
65
Date d'inscription
mercredi 7 janvier 2004
Statut
Membre
Dernière intervention
11 septembre 2012
-
Salut Adeynack,

J'ai bien compris ton problème. Mais je ne connais pas la solution pour l'intant. Mais je te promet de chercher lundi !
Je reviens vers toi dès que j'ai du nouveau.

à lundi !
Adeynack
Messages postés
1
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
16 juin 2006
-
Bonjour Squall (surement un fan des mêmes jeux que moi)

Petite question ici, j'en demande à ton expérience en VBA. J'utilise la méthode "Delete" pour supprimer une feuille (un onglet) Excel à l'intérieur de mon application (si on peut appeller du Excel/VBA une "application") et je me retrouve avec un problème un peu enmerdant. Voici la séquence d'opération:

- Une feuille cachée sert de "template" pour la création de nouveaux bordereaux d'expédition.

- À la création d'un nouveau bordereau, je copie cette feuille, le rend visible, en change le nom et le remplis. L'onglet copié contiens du code pour une raison très précise et est ainsi copié.

- Quand j'annule un de ces bordereau, j'utilise la méthode "Delete" pour l'onglet...

Le problème surviens alors: la feuille Excel est réèlement supprimé en bonne et due forme, mais le module de code créé pour cette feuille demeure et DE PLUS il n'est pas supprimable manuellement dans l'éditeur VBA.

Aurait-tu déjà fait face à ce problème? Si oui: connais-tu une facon de le contourner?

Merci :)
Squall____
Messages postés
65
Date d'inscription
mercredi 7 janvier 2004
Statut
Membre
Dernière intervention
11 septembre 2012
-
Salut Migmag1,

Pour intégrer le module dans ton projet, tu clique sur :
Fichier > Importer un fichier...
Et tu sélectionne le module. Il sera ainsi intégré à ton projet.
MIGMAG1
Messages postés
3
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
24 février 2007
-
Bonjour et MERCI pour l'effort fourni

Cependant je suis débutant en vb et je n'ai pas su comment exécuter cette phrase :
"Il vous suffit d'intégrer ce module dans votre projet VB ou VBA"

merci de bien vouloir me répondre..
migmag1
Squall____
Messages postés
65
Date d'inscription
mercredi 7 janvier 2004
Statut
Membre
Dernière intervention
11 septembre 2012
-
De rien Morsi.

Seulement 6 ??? ok ok c'est pas un code révolutionnaire mais quand même ! Ne soyez pas trop sévères !

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.