Suppression de feuilles par VBA [Résolu]

Signaler
Messages postés
153
Date d'inscription
samedi 16 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2020
-
Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020
-
Bonjour,
J'ai utilisé un code trouvé sur le Net pour supprimer des feuilles si existantes dans mon fichier, mais ça n'a aucun effet, voici le script
Public Function FeuilExiste(F As String) As Boolean
    On Error GoTo Err_FeuilExiste
    FeuilExiste = False
    FeuilExiste = Not ActiveWorkbook.Worksheets(F) Is Nothing
Err_FeuilExiste:
End Function
Sub Suppression()
    If FeuilExiste("Alpha(2)") Then
            Application.DisplayAlerts = False
            Sheets("Alpha(2)").Select
            Sheets("Alpha(2)").Delete
            Application.DisplayAlerts = True
    Else
    End If
    If FeuilExiste("Beta(2)") Then
            Application.DisplayAlerts = False
            Sheets("Beta(2)").Select
            Sheets("Beta(2)").Delete
            Application.DisplayAlerts = True
    Else
    End If
End Sub


Merci


Configuration: Windows / Firefox 81.0

4 réponses

Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020
703
bonjour,
à ta place, je ferais plutôt ainsi:
    If FeuilExiste("Alpha(2)") Then
            Application.DisplayAlerts = False
            Sheets("Alpha(2)").Delete
            Application.DisplayAlerts = True
    Else
            msgbox "Alpha(2) est absent"
    End If
Messages postés
153
Date d'inscription
samedi 16 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2020

C'est comme ça que je l'avais d'abord écrit (sans la partie Else, qui, dans mon cas, n'est pas nécessaire), et comme ça ne fonctionnait pas, j'ai supposé qu'il fallait ajouter la sélection de la feuille. Hélas, ça ne suffit toujours pas.
Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020
703
que se passe-t'il quand tu testes ceci?
Sub Suppression()
    If FeuilExiste("Alpha(2)") Then
            Application.DisplayAlerts = False
            Sheets("Alpha(2)").Delete
            Application.DisplayAlerts = True
            MsgBox "Alpha(2) est supprimé"
    Else
            MsgBox "Alpha(2) est absent"
    End If
    If FeuilExiste("Beta(2)") Then
            Application.DisplayAlerts = False
            Sheets("Beta(2)").Delete
            Application.DisplayAlerts = True
            MsgBox "Beta(2) est supprimé"
    Else
        MsgBox "Beta(2) est absent"
    End If
End Sub
Messages postés
153
Date d'inscription
samedi 16 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2020

merci yg, grâce à ton post, j'ai compris ce qui n'allait pas: quand on fait une copie de feuille, le nouveau nom n'est pas Alpha(2) mais Alpha (2) (avec un espace), d'où le fait que la macro ne détectait pas la feuille.
Merci encore
Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020
703
en effet, penser "sans la partie Else, qui, dans mon cas, n'est pas nécessaire", c'est la meilleure manière de ne pas progresser.
en plus, persister à ne pas essayer, ...
Messages postés
153
Date d'inscription
samedi 16 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2020
>
Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020

Qui vous dit que je n'ai pas essayé ?
C'est comme ça que j'ai vu mon erreur justement puisque la Box renvoyait "Alpha(2) est absent".
Il le semble même avoir dit merci pour cela.
Attention à ne pas décourager les novices, c'est la meilleure façon de les écarter du monde des participants à un forum. En se montrant présomptueux, on risque le braquage (heureusement, j'ai passé l'âge).
Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020
703 >
Messages postés
153
Date d'inscription
samedi 16 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2020

Il me semble clair, dans ton message du 29 sept. 2020 à 20:00, que tu n'avais pas essayé ma suggestion de 13h.

Tenant compte du comportement que j'ai parfois observé chez certains novices, je t'ai donné une seconde et dernière chance, et t'ai donc demandé plus explicitement de tester ma suggestion.
Trouves-tu présomptueux d'attendre un peu de respect, et que les suggestions faites soient prises au sérieux, et testées?
Que de plus présomptueux, presque arrogant, que d'écrire "dans mon cas, n'est pas nécessaire", alors que c'était la première chose à faire. En tous cas, de l'aveuglement caractérisé.
Je pense que l'humilité aide à progresser, tout autant que se poser des question et se remettre en cause.
Messages postés
153
Date d'inscription
samedi 16 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2020

Je ne comprends pas cette colère qui n'a aucun sens ni sa place dans un échange cordial.
Ce qui m'a fait "bondir" c'est cette remarque :
"en plus, persister à ne pas essayer, ... "
qui est fausse et déplacée, car présomptueuse (vous ne saviez même pas si j'avais essayé).
En plus elle a un côté agressif (persister) qui ne pouvait que susciter chez moi une réaction négative.
C'est dommage car vous m'avez pourtant sorti d'une impasse, mais ce comportement hautain vient nettement polluer un échange qui se voulait courtois.
Je suis déçu

un dernier mot concernant "Il me semble clair, dans ton message du 29 sept. 2020 à 20:00, que tu n'avais pas essayé ma suggestion de 13h." Je ne sais pas pour vous, mais après une journée de travail, à 20h, je n'avais effectivement pas eu le temps de tester. Mais de là à s'emporter avec une attitude agressive à mon égard ...
Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020
703
Je suggère, quand tu reçois une suggestion, de la tester avant d'écrire "Hélas, ça ne suffit toujours pas".
Par respect.