Création d'un onglet avec nomination variable

zoanthaire -  
biboupifa Messages postés 54 Statut Membre -
Bonjour,

Je n'arrive pas à trouver de solution pour ce que je souhaite faire :
L'objectif étant que la macro une fois activée crée un onglet avec le nom d'une cellule déterminée (ça j'ai réussi). Par contre si je réactive cette macro, il y a forcément un problème car l'onglet existe déjà. De ce fait je souhaite prévenir par le biais d'un message box pour prévenir l'utilisateur que l'onglet existe déjà et qu'il puisse avoir le choix de pouvoir le remplacer ou de créer une version (2) et là, malheureusement ça devient compliqué pour moi. Quelqu'un peut -il m'aider...

merci d'avance

3 réponses

  1. scinarf Messages postés 1183 Statut Membre 294
     
    dim i as integer
    dim NomOnglet as String

    nomOnglet = "ManouvelleFeuille"

    for i = 1 to sheets.counter
    if (sheets(i).name == nomOnglet) then
    MSGbox "Le nom que vous proposez existe déjà il sera changé en " & nomOnglet & " (2)"
    nomOblget = nomonglet & "(2)"
    end if
    next i

    Dites moi si ca marche, logiquement il ne devrait pas y avoir d'erreur.
    0
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    En supposant que le nom de la feuille se trouve en cellule A2 de la feuille active

    Sub InsereFeuille()
    Dim n As Integer, trouve As Boolean
    For n = 1 To Sheets.Count
    If Sheets(n).Name = [A2].Value Then
    trouve = True
    MsgBox "La feuille " & [A2].Value & " existe déjà"
    Exit For
    End If
    Next n
    If Not trouve Then Sheets.Add.Name = [A2].Value
    End Sub
    0
    1. zoanthaire
       
      J'ai essayé, mais cela ne fonctionne pas. j'ai noté ci-dessous le code que j'ai fait pour le moment. peut être que ce sera plus explicite.

      Sub Renommer_onglet()

      'avant il faudrait une condition qui ouvre la message box que dans le cas où l'onglet existe déjà
      'ensuite :
      If MsgBox("Cette préparation existe déjà, Voulez vous la remplacer", vbYesNo) = vbYes Then
      Sheets("prepa_type").Select
      Sheets("prepa_type").Copy After:=Sheets("prepa_type")
      ActiveSheet.Name = Sheets("preparation").Range("D1") + " (V" + ")" + 'ici il me manque un code pour créer une numérotation pour chaque onglet identique : V1, V2, V3...
      End If
      Next
      End Sub


      J'espère que cela est assez explicite.
      0
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    et une 3ème proposition : une fonction.
    Function existSheet(nomFeuille As String) As Long
        On Error Resume Next
        existSheet = Sheets(nomFeuille).Index
    End Function

    retourne 0 (False) si la feuille n'existe pas.

    eric

    0
    1. biboupifa Messages postés 54 Statut Membre
       
      Bonjour eriiic,

      je n'arrive pas a comprendre ta fonction:

      Dim NomFeuille As String
      NomFeuille = "BDD_valeurs"
      If Not existSheet(NomFeuille) Then
      ActiveSheet.Name = NomFeuille
      End If

      c'est au niveau du code que je n'arrive pas a l'utiliser
      cela me renvoi vrai ou faux et je n'arrive pas a m'en sortir

      merci par avance
      0
    2. biboupifa Messages postés 54 Statut Membre
       
      nan c'est bon j'ai compris pourquoi ca ne marchait pas :)
      0