Renommer feuille par valeur cellule si nom existe pas deja

Bonjour à tous,

je suis tout nouveau membre du fofo et c'est mon 1er poste même si j'y ai deja trouvé moulte reponses et tutos. merci

desolé le laius est un peu long mais j'vais essayer de donner le max de details pour pas vous obliger à me demander 15 trucs que j'aurais oublié

j'aimerais ajouter, à une macro qui marche deja, un pavé afin de renommer la feuille active (nouvellement créée provisoirement appelée "feuill1") par le texte de ma cellule "c1" (date au format jj-mm-aaaa, j'ai pensé aux caracteres speciaux interdit / ...)

ca j'y arrive avec : ActiveSheet.Name = Range("c1").Text

ceux que j'arrive pas à faire c'est ajouter un if then else tout bete afin d'ajouter la condition :

verifier dans le classeur que les feuilles ne portent pas le nom de "c1", si nom existe alors renommer la feuille active "date existe deja", si nom pas connu, alors renommer la feuille active par texte de la cellule "C1"

mon code marche a moitier...

si la date est pas connue comme nom de feuille , ca renomme bien par texte de "C1"

si un doublon existe alors j'ai le message d'erreure 1004 - impossible de renommer nom existant...et le debug surligne en jaune la ligne que j'ai identifiée dans la code par '(***)

on dirait que ca fait pas l'alternative is then else...

voila ceux que j'ai ecris :

Sub Macro1()

Dim cherche2 As String

Dim Feuille As Worksheet

'Ce que je veux rechercher

cherche2 = Range("c1").Text

'cherche2 = Range("c1").Value '(j'ai essayer mais marche pas)

'Boucle dans les feuilles du classeur

For Each Feuille In Worksheets

'si pas connu renomme "C1"

If InStr(1, Feuille.Name, cherche2) = False Then '(j'ai essayé = 0)

ActiveSheet.Name = Range("c1").Text '(***) (debug surligne jaune cette ligne)

' si existant appeler existe deja

ElseIf InStr(1, Feuille.Name, cherche2) > 0 Then '(j'ai essayé = true)

MsgBox "date existe déjà - renommer à la main"

ActiveSheet.Name = "date existe deja"

Else

End If

Next

End Sub

j'ai tourné dans tous les sens mais je trouve pas...merci de votre aide

Noisy

29classeur2.xlsm (18.75 Ko)

Bonjour noisy et bienvenue sur le forum,

Voilà une proposition qu'il te faudra adapter (parties surlignées) mais qui vérifie que le nom de feuille n'est pas utilisé.

Sub proposition()
Dim feuille As Worksheet
Dim nouveauNom As String
Dim feuilleExiste As Boolean

nouveauNom = "Feuil1"

feuilleExiste = False
For Each feuille In ActiveWorkbook.Sheets
    If nouveauNom = feuille.Name Then
        feuilleExiste = True
        Exit For
    End If
Next feuille

If feuilleExiste = True Then
    MsgBox "Le nom existe déjà"
Else
   'ce que tu souhaites faire
End If

End Sub

bonjour d3d9x,

quelle rapidité ! merci ca marche parfaitement !

au passage sais-tu pourquoi le miens marchait pas ?

a+

Je n'ai pas regardé en détail mais une chose est tout de suite sortie, voilà la structure que tu fais:

For each feuille in liste des feuilles
si le nom de cette feuille ne correspond pas au nom que je veux donner alors je renomme la feuille active
Next

Donc en faisant tourner ton code, tu vas potentiellement renommer autant de fois ta feuille active que tu as de feuilles dans ton classeur. Cela ajouté à un test qui n'est pas correct -> code qui ne fonctionnera pas ^^

Rechercher des sujets similaires à "renommer feuille valeur nom existe pas deja"