IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Supprimer une feuille si elle existe, sinon la créer [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut Supprimer une feuille si elle existe, sinon la créer
    Bonjour,

    Voila je souhaite à l'aide d'une macro vérifier l'existance d'une feuille nomé paye, si celle ci existe je souhaite la supprimer, sinon je souhaite la créer.

    Voilà mon code qui fonctionne uniquement si ma feuille existe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        nom = ComboBox1.Value
     
        If Worksheets(nom).Name = nom Then
        Sheets(nom).Select
        Application.DisplayAlerts = False
        ActiveWindow.SelectedSheets.Delete
        Application.DisplayAlerts = True
        Else
        'Creation de la feuille de données
         Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = nom
        End If
    Lorsque la feuille n'existe pas le code se bloque dés la condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Worksheets(nom).Name = nom Then
    Comme la feuille n'existe pas il ne continu pas la suite du code.

    Merci pour votre aide je bloque dessus depuis ce matin.

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim ws as worksheet
    nom = ComboBox1.Value
    for each ws in worksheets
      if ws.name=nom then
        ws.delete
        exit for
      end if
    next ws
    Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = nom

  3. #3
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Option Explicit
     
    Private Function FeuilleExiste(ByVal sNom As String) As Boolean
    Dim Ws As Worksheet
        On Error Resume Next
        Set Ws = Worksheets(sNom)
        If Err.Number <> 0 Then FeuilleExiste = False Else FeuilleExiste = True
    End Function
     
    Sub Tst()
    Dim sNomFeuille As String
        On Error GoTo erreurs
        sNomFeuille = "Feuil555"
        If FeuilleExiste(sNomFeuille) Then
            Application.DisplayAlerts = False
            Sheets(sNomFeuille).Delete
            Application.DisplayAlerts = True
        Else
            Worksheets.Add(After:=Worksheets(Sheets.Count)).Name = sNomFeuille
        End If
        Exit Sub
    erreurs:
        MsgBox Err.Number & vbCrLf & Err.Description
    End Sub

  4. #4
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim ws as worksheet
    nom = ComboBox1.Value
    for each ws in worksheets
      if ws.name=nom then
        ws.delete
        exit for
      end if
    next ws
    Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = nom
    Merci mercatog, ton code fonctionne à merveille

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer un graphique s'il existe, sinon le créer
    Par Vincent32 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/01/2012, 13h36
  2. supprimer une table si elle existe.
    Par dddd86 dans le forum SQL
    Réponses: 3
    Dernier message: 18/06/2009, 09h49
  3. suppression d'une feuille si elle existe
    Par benoi dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/12/2008, 20h56
  4. Supprimer une colonne d'une feuille si elle est vide dans une autre
    Par xave dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 27/02/2008, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo