Bonjour a tous,

voila je devient un peut fou...

je vous explique, mon but et de créer un UserForm qui me liste mes onglets, je peut selectioner les onglets que je souhaite et presser un boutons qui me permet de créer un nouveau fichier excel dans le quelle je vient copier mes onglet selectioner!

Le nom de ce nouveau fichier étant nouveau a chaque fois je souhaite pouvoir le rentrer dans une zone de texte de mon UserForm et le récupérer dans mon code.

Déja voici le code en question pour créer un fichier avec le nom que j'ai entré ( ce code fonctionne bien mon fichier ce crée et s'ouvre avec le bon nom!)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub CommandButton3_Click()
 
'Recuperation du nom de la commande
NomCommande = UserForm2.TBNom
'Création d'un autre fichier
Dim XL As New Excel.Application
Workbooks.Add
Sheets("Feuil1").Select
Sheets("Feuil1").Name = NomCommande
'ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & NomCommande & ".xlsx"
ActiveWorkbook.SaveAs Filename:="C:\Users\User1\Bureau\Gestion des com\" & NomCommande & ".xlsx"
'ActiveWorkbook.Close
Set exc = Nothing
End Sub
Voici pour info le code a l'initialisation de mon UserForm:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Dim O As Worksheet ''déclare la variable O (Onglets)
 
Set CS = ThisWorkbook 'définit le classeur source CS
 
For Each O In CS.Sheets 'boucle sur tous les onglets du classeur source CS
    Me.ListBox1.AddItem O.Name 'ajoute le nom d el'onglet à la ListBox1
Next O 'prochain onglet de la boucle
End Sub
et voici le code sur un deuxieme bouton pour copier les onglet

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Sub CommandButton1_Click() 'bouton "Copier"
Dim TOS() As Variant 'déclare la varaible TOS (Tableau des Ongles Sélectionnées)
 
 
 
'Recuperation du nom de la commande
Dim NomCommandeSimple As String
Dim NomCommande As String
NomCommandeSimple = UserForm2.TBNom
NomCommande = UserForm2.TBNom & ".xlsx"
 
'TEST
 
'TEST
 
Set CD = Workbooks(NomCommandeSimple & ".xlsx")   'définit le classeur destination
 
With Me.ListBox1 'prend en compte la ListBox1
    For i = 0 To .ListCount - 1 'boucle  sur tous les éléments
        If .Selected(i) = True Then 'condition : si l'élément est sélectionné
            ReDim Preserve TOS(J) 'redimensionne le tableau TOS
            TOS(J) = .List(i) 'récupère le nom de l'ong;et sélectionné
            J = J + 1 'incrémente J
        End If 'fin de la condition
    Next i 'prochain élément de la boucle
End With 'fin de la prise en compte de la ListBox1
'copie les onglets du tableau TOS après le dernier onglet du classeur de destination CD
 
Sheets(TOS).Copy After:=CD.Sheets(CD.Sheets.Count)
'Suppretion des feuille sur le fichier de base
CS.Sheets(TOS).Delete
Unload Me 'vide et ferme l'UserForm1
End Sub
Hors, la j'ai une erreur de type 9: L'indice n'appartien pas à la selection sur la ligne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Sheets(TOS).Copy After:=CD.Sheets(CD.Sheets.Count)
Si par contre a ma ligne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Set CD = Workbooks(NomCommandeSimple & ".xlsx")
je rentre le nom du fichier en tout lettre par exemple Test.xslx que je crée ce fichier et que je l'ouvre la copie fonctionne
Si je crée mon fichier avec le premier bouton, que je referme mon userform que je le réouvre et que je fait simplement le bouton copie en entrent le nom de mon fichier (Test) cela fonctionne aussi...

Je supose donc que le problème vient du fait que je ne doit pas bien entre le contenue de ma variable...
Ou alors que le fichier séléctionner n'est pas dans les fichiers actif mais je ne sais pas comment faire cela...

Ou est ce que vous savez d'ou cela peut venir??

Merci d'avance!!