Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Créer une feuille excel nommé en l'écrasant si elle existe déjà

  • Initiateur de la discussion Initiateur de la discussion Sophie11
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Sophie11

XLDnaute Occasionnel
Bonjour à tous 🙂

J'ai créer une macro qui me permet de creer une nouvelle feuille nommé "blabla".
dont le code est le suivant:
Sub blabla()
ActiveWorkbook.Worksheets.Add
ActiveSheet.Name = "blabla"
End Sub


Mon probleme c'est que quand je veux réitéré l'opération ca m'indique une erreur ce qui est logique puisque ma feuille existe deja.. Je souhaite que quand je refais cette operation ca re-créer ma feuille blabla en écrasant la précédente?
Merci d'avance pour votre aide précieuse 🙂🙂🙂

ps: je précise que je veux ecraser et pas supprimer la feuille et recréer car je fais un vlookup sur cette feuille..
 
Re : Créer une feuille excel nommé en l'écrasant si elle existe déjà

bonjour Sophie11

Une solution:

Code:
Sub blabla()
On Error Resume Next
Set f = Sheets("blabla")
If Err.Number <> 0 Then Sheets.Add.Name = "blabla"
On Error GoTo 0
Sheets("blabla").Cells.Clear
End Sub
 
Re : Créer une feuille excel nommé en l'écrasant si elle existe déjà

Bonjour Sophie11,

Voici un code qui fonctionne par gestion d'erreur :
Code:
Sub blabla()
    Application.DisplayAlerts = False
    ActiveWorkbook.Worksheets.Add
    On Error GoTo Existe
        ActiveSheet.Name = "blabla"
    On Error GoTo 0
Existe:
    If Err.Number <> 0 Then
        Sheets("blabla").Delete
        Resume
    End If
    Application.DisplayAlerts = True
End Sub
A+
 
Re : Créer une feuille excel nommé en l'écrasant si elle existe déjà

Bonjour à tous
Une variante paramétrée :
Code:
[COLOR="DarkSlateGray"][B]Sub tutu()
   ajouterUneFeuille "Nouvelle_Feuille"
End Sub

Private Sub ajouterUneFeuille(sh$)
   ActiveWorkbook.Worksheets.Add
   On Error GoTo E
   ActiveSheet.Name = sh
   On Error GoTo 0
Exit Sub
E:
   Application.DisplayAlerts = False
   Sheets(sh).Delete
   Application.DisplayAlerts = True
   Resume
End Sub[/B][/COLOR]
ROGER2327
#3033
 
Re : Créer une feuille excel nommé en l'écrasant si elle existe déjà

Re

Commençant à vous connaitre cher ROGER , je subodore avoir commis quelque erreur dans le code que j'ai proposé mais je ne vois vraiment pas !!!
Auriez vous l'amabilité de m'eclairer S.V.P
 
Re : Créer une feuille excel nommé en l'écrasant si elle existe déjà

Bonjour pierrejean
À mon avis, pas le moindre problème avec votre procédure !
Elle présente la particularité de récupérer la feuille existante le cas échéant, et de n'en créer une nouvelle que si elle n'existe pas déjà.
Les deux autres solutions (celles de Fred0o et la mienne) suppriment l'éventuelle feuille existante avant d'en créer systématiquement une nouvelle.
Simple affaire de goût.
J'ai ajouté ma variante pour rendre la solution plus polyvalente : la procédure ajouterUneFeuille prend le nom de la feuille en paramètre, ce qui permet de la rendre indépendante du nom de la feuille à créer. Il suffit de l'appeler comme le montre la procédure tutu.
Voilà tout.
Heureux de vous avoir croisé.
Cordialement,
ROGER2327
#3034


_______________
Ajout : j'ai oublié de dire que votre solution est strictement conforme à la demande :
(...) je précise que je veux ecraser et pas supprimer la feuille et recréer car je fais un vlookup sur cette feuille.. (...)
Ce n'est pas le cas des autres propositions.
 
Dernière édition:
Re : Créer une feuille excel nommé en l'écrasant si elle existe déjà

Bonjour à toi, à tous et à ceux qui passeront par là.

Moi, je tenterais simplement:

Code:
Application.DisplayAlerts = False

   For Each FEUILLE In ThisWorkbook.Worksheets
   
    If FEUILLE.Name = "blabla" Then
    FEUILLE.Delete
    End If
    
    Next

Application.DisplayAlerts = True

Bonne fin de fin de semaine à vous

Yann
 
Re : Créer une feuille excel nommé en l'écrasant si elle existe déjà

Re

@ YANN-56

Sauf erreur de ma part ton code ne fait que supprimer la feuille blabla
Or la demande est de la creer si elle n'existe pas ou de 'l'ecraser ' si elle existe
pour generaliser mon code (dans le sens proposé par ROGER)
Code:
Sub nouvelle_feuille(nom$)
On Error Resume Next
Set f = Sheets(nom)
If Err.Number <> 0 Then Sheets.Add.Name = nom
On Error GoTo 0
Sheets(nom).Cells.Clear
End Sub
 
sub blabla()
nouvelle_feuille("blabla")
end sub
 
Re : Créer une feuille excel nommé en l'écrasant si elle existe déjà

Re-re-bonjour pierrejean
En fait, modestie mise à part, nous formons une excellente équipe, ne trouvez-vous pas ?​
ROGER2327
#3037
 
Re : Créer une feuille excel nommé en l'écrasant si elle existe déjà

A Pierrejean et l'excellent équipe 🙂:

Je rectifie le tir:

Code:
Application.DisplayAlerts = False

   For Each FEUILLE In ThisWorkbook.Worksheets
   
    If FEUILLE.Name = "blabla" Then
    FEUILLE.Delete
    End If
    
    Next

Application.DisplayAlerts = True

ActiveWorkbook.Worksheets.Add
ActiveSheet.Name = "blabla"

J'ai dit une bêtise? 😕

Amicalement, avec respect pour ce que vous savez faire.

Yann
 
Re : Créer une feuille excel nommé en l'écrasant si elle existe déjà

Re

Pas de bêtise non
tout au plus

excellente équipe ou excellent equipier

Par ailleurs (et pour le cas exceptionnel ou la feuille blabla serait une feuille graphique)

Code:
For Each FEUILLE In ThisWorkbook.Sheets
  au lieu de
For Each FEUILLE In ThisWorkbook.Worksheets
 
Re : Créer une feuille excel nommé en l'écrasant si elle existe déjà

Re...
A Pierrejean et l'excellent équipe 🙂:
(...)
Merci, merci, j'en ai déjà les chevilles qui enflent...

(...)
J'ai dit une bêtise? 😕
(...)
Absolument pas.
Votre code fonctionne parfaitement.

En voici une version paramétrée comme il a été dit plus haut.
Code:
[COLOR="DarkSlateGray"][B]Sub tutu()
   toto "blabla"
End Sub

Sub toto(nom$)
Dim FEUILLE As Object
   Application.DisplayAlerts = False
   For Each FEUILLE In ThisWorkbook.Worksheets
      If FEUILLE.Name = nom$ Then
      FEUILLE.Delete
      End If
   Next FEUILLE
   Application.DisplayAlerts = True
   ActiveWorkbook.Worksheets.Add.Name = nom$
End Sub[/B][/COLOR]
Bonne soirée.
ROGER2327
#3039
 
Re : Créer une feuille excel nommé en l'écrasant si elle existe déjà

Et si sa Feuille est une "Matrice" existante dans un Classeur
qu'il aurait mis dans un coin comme base de données.

Elle pourrait piquer dans ce petit exemple joint; comment l'importer.
(Sans oublier la phase de suppression de celle ayant éventuellement
le même nom, ainsi que vous le montrez ci-dessus)

C'est fou comme on s'amuse! 🙂

J'espère que Sophie11 va s'y retrouver…

Au plaisir.

Yann
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

T
Réponses
2
Affichages
891
thsoulard
T
T
Réponses
13
Affichages
1 K
V
Réponses
3
Affichages
985
V
L
Réponses
2
Affichages
848
Laura01
L
S
Réponses
10
Affichages
6 K
A
Réponses
33
Affichages
4 K
Aurel60540
A
S
Réponses
3
Affichages
2 K
O
Réponses
8
Affichages
1 K
Optimal
O
Z
Réponses
9
Affichages
2 K
Zangief
Z
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…