Renommer feuille

JORDAN

XLDnaute Impliqué
Bonjour le Forum,

Avec le code ci-dessous, je fais la copie de la feuille 'COMMANDE' puis je la renomme avec la valeur de la ComboBox (CdeFournisseur)

Donc voici mon problème : Comment faire pour ne pas créer une nouvelle feuille si elle existe déjà, actuellement j'ai une erreur puisque je renomme une feuille avec le nom d'une déjà existante.



Code:
NomFeuille = CdeAuto.CdeFournisseur.Value
Sheets('COMMANDE').Copy after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = NomFeuille

J'espère avoir été assez clair.
Merci pour vos idées.
 

Jacques87

XLDnaute Accro
Bonjour Jordan

Ajoute ce petit bout de code avant de créer ta feuille
C'est un petit test qui regarde si la feuille n'existerait pas déjà (je teste dans mon exemple sur la feuille 3)

Dim f As Worksheet
Dim NonFeuille As String

NomFeuille = 'Feuil3'

For Each f In Worksheets
If f.Name = NomFeuille Then MsgBox ('la feuille existe déjà')
Exit Sub
Next

Bon courage
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour jordan

une astuce simple est de gérer l'erreur mais on peut aussi tester l'existence de la feuille

gestion d'erreur
Code:
On Error Resume Next
Sheets(Sheets.Count).Name = NomFeuille
On Error Goto 0

pour tester si une feuille existe avant de renommer avec un nom existant, j'ai fait une fonction dans ce fil
Lien supprimé

Cordialement, A+

Salut Jacques, je ne t'avais pas vu.

Message édité par: yeahou, à: 24/01/2006 15:19

Message édité par: yeahou, à: 24/01/2006 15:23
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Euh Jacques tu as une petite erreur sur ton code

il ne testera que la première feuille et sortira (exit sub)

Je pense à modiifer ainsi :

Dim f As Worksheet
Dim NonFeuille As String

NomFeuille = 'Feuil3'

For Each f In Worksheets
If f.Name = NomFeuille Then
MsgBox ('la feuille existe déjà')
Exit Sub
end if
Next

Bonne journée
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re

salut Pascal

voila le code fonction
Code:
Function Test_Feuille(ByVal NomFeuille$) As Boolean
Dim Wsh As Worksheet
On Error GoTo Fin
Set Wsh = Worksheets(NomFeuille)
Test_Feuille = True
Fin:
End Function
ce qui donnera dans ton code
Code:
NomFeuille = CdeAuto.CdeFournisseur.Value
Sheets('COMMANDE').Copy after:=Sheets(Sheets.Count)
If Not Test_Feuille(NomFeuille) Then Sheets(Sheets.Count).Name = NomFeuille

A+

Message édité par: yeahou, à: 24/01/2006 15:34
 

Jacques87

XLDnaute Accro
Bonjour Yeahou, Bonjour Pascal

Yeahou, il n'y a aucun problème, cela arrive fréquemment et c'est normal quand nous sommes plusieurs à prendre la question en main

Mon ami Pascal, je suis heureux de te rencontrer d'autant plus qu'une fois de plus ma précipitation m'induit à créer une grosse bourde que tu as heureusement tout de suite réparée.
Cette bourde est due au fait qu'en me relisant, je me suis dit : 'il faudrait peut être qu'en cas de test positif, ne pas terminer la procédure en queue de poisson, donc j'ai ajouté un Exit Sub (ligne supplémentaire donc mon Then demandait un passage à la ligne).
Erreur inadmissible ....

je te souhaite une excellente journée et au plaisir de te croiser une prochaine fois sur XLD, lors d'un rappel à l'ordre consécutif à une écriture de code trop rapide sans relecture sérieuse. Avant je testais toujours avant de soumettre, maintenant je suis un grand (lol) et m'en dispense .... est-ce raisonable ?
 

Discussions similaires

Statistiques des forums

Discussions
312 428
Messages
2 088 340
Membres
103 821
dernier inscrit
Lorient56