Problème de création de nom de nouvel onglet

Résolu/Fermé
PbOnglet - Modifié par pijaku le 17/02/2015 à 09:15
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 18 févr. 2015 à 11:16
Bonjour à tous,

je m'adresse à vous car j 'ai un problème en vba et n'étant pas expert( loin de la) j'ai besoin d'une petite aide dans la mesure du possible. J'ai créer un code qui permet de créer un nouvel onglet en le renommant.
tout d'abord j'ouvre une combobox qui permet de sélectionner ou de créer des nom de projet via une base de données, puis cela ouvre un nouveau document et le projet sélectionné ou créer devient le nouvel onglet du document ouvert. (je ne sais pas si c'est très clair). voici mon code peut-être que ce sera plus clair :

Private Sub OK_Click()
Dim i As Integer
nom_fichier = "C:\Users\PERSO\recapcommandes.xlsm"

Me.Hide

If Me.Projet.ListIndex = -1 Then _

Workbooks("Commande fournisseur.xlsm").Sheets("Base").Cells(28, 6500).End(xlToLeft).Offset(0, 1).Value = Me.Projet.Value

Set wb = Workbooks.Open(nom_fichier)

        For i = 1 To Worksheets.Count
                If Worksheets(i).Name = Me.Projet.Value Then
                    Sheets(Me.Projet.Value).Select

                Else
                    With Workbooks("recapcommandes.xlsm")
                            Sheets.Add.Move After:=Sheets(Sheets.Count)
                            Sheets(Sheets.Count).Name = Me.Projet.Value
                          
                    End With
                    End If
        Next i
Else
Set wb = Workbooks.Open(nom_fichier)

    For i = 1 To Worksheets.Count
                If Worksheets(i).Name = Me.Projet.Value Then
                   Sheets(Me.Projet.Value).Select

                Else
                    With Workbooks("recapcommandes.xlsm")
                       Sheets.Add.Move After:=Sheets(Sheets.Count)
                        Sheets(Sheets.Count).Name = Me.Projet.Value     
                    End With
                End If
        Next i


L'erreur qui m'est affiché est : Erreur d'exécution 1004, ce nom est déjà attribué, veuillez utilisez un autre nom. Cette erreur concerne la ligne
Sheets(Sheets.Count).Name = Me.Projet.Value

Je ne vois pas quel est le problème,j'espère que quelqu'un pourra m'aider, je vous remercie de votre aide.


2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
17 févr. 2015 à 09:22
Bonjour,

Que veux tu faire?
- Vérifier que la feuille Me.Projet.Value existe,
- Si oui => on la sélectionne,
- Si non => on la crée.

OK?

Ce que tu fais :
Tu boucles sur toutes les feuilles :
For i = 1 To Worksheets.Count
    If Worksheets(i).Name = Me.Projet.Value Then
        Sheets(Me.Projet.Value).Select
    Else
        With Workbooks("recapcommandes.xlsm")
            Sheets.Add.Move After:=Sheets(Sheets.Count)
            Sheets(Sheets.Count).Name = Me.Projet.Value
        End With
    End If
Next i


Que fait exactement ta boucle?
Si la feuille(1) (appelons là "Feuil1") a le même nom que Me.Projet.Value, alors on la sélectionne. Mais si cette feuille (Feuil1) a un nom différent, alors on créé une nouvelle feuille...
Tu vois pourquoi cela ne fonctionne pas?
0
Bonjour Pijaku,

Je te remercie pour ta disponibilité et ta rapidité de réponse.
Oui je crois comprendre pourquoi cela ne fonctionne pas, il faut que je vérifie l'existence de la feuille Me.Projet.Value et non vérifier si elle a le même nom.
Mais comment faire du coup pour vérifier si elle éxiste?
Je cherche en effet à faire :

Vérifier que la feuille Me.Projet.Value existe,
- Si oui => on la sélectionne,
- Si non => on la crée.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > PbOnglet
17 févr. 2015 à 10:31
Regarde cette fiche pratique.

ps : bonjour @ f894009
0
PbOnglet > PbOnglet
17 févr. 2015 à 10:32
Ah, je sui un peu long à la détente, ... je viens de comprendre le problème, le nom de ma nouvelle feuille est le même que la feuille existante, cependant il me faut ce nom pour l'attribuer au nom qui a été entrer dans la combo box. ( en début de code) comment faire ???
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > PbOnglet
17 févr. 2015 à 11:02
as tu consulté mon lien ci-dessus???
0
PbOnglet > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
17 févr. 2015 à 11:11
Oui, je suis en train, mais je t'avoue que je ne m'en sors pas trop avec cette histoire de nom. En effet si la feuille n'a pas le nom Me.Projet.Value, je veux la créer et lui donner ce nom, pour qu'elle obtienne le même nom que celui de la combobox que je viens de rentrer.

Dans les codes du lien que tu m'as transmis, je ne trouve malheureusement pas de choses qui pourrait coller à première vue :(
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
17 févr. 2015 à 09:40
Bonjour Pijaku,

de plus le message est claire:

L'erreur qui m'est affiché est : Erreur d'exécution 1004, ce nom est déjà attribué,
0