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
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
- 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
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 699
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
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 699 > 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
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 699 > PbOnglet
17 févr. 2015 à 11:02
as tu consulté mon lien ci-dessus???
0
PbOnglet > pijaku
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021

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
16601
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 juin 2022
1 647
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