bonjour,

J'ai une macro avec un userform qui m'insérer des fichiers qui sont déjà ouverts. Mes fichiers ont toujours le même nom mis à part la fin par exemple le fichier peu s'appeler macro123456 et quand j'en sors un autre il s'appelle macro987654. En fait je voudrais modifier mon code afin qu'il ne m'ouvre que les fichiers qui commence par macroxxx. Pourriez vous m'aider?

merci d'avance

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
34
35
36
37
38
39
40
41
Private Sub ListBox1_Click()
 
End Sub
 
Private Sub UserForm_Initialize()
Dim c As Workbook 'déclare la variable o (Classeur)
 
For Each c In Workbooks 'boucle sur tous les claeeurs ouverts
    'alimente la ListBox1 du nom des classeurs ouverts sauf le nom de ce classeur et "PERSO.XLS"
    If Not c.Name = ThisWorkbook.Name And Not c.Name = "PERSO.XLS" Then Me.ListBox1.AddItem c.Name
Next c 'prochain classeur ouvert de la boucle
End Sub
 
Private Sub OK_Click()
Dim cc As Workbook 'déclare la variable cc (Classeur Cible)
Dim oc As Object 'déclare la variable oc (Onglet Cible)
Dim x As Integer 'déclare la variable x (incrément)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
Dim cs As Workbook 'déclare la variable cs (Classeur Source)
Dim os As Object 'déclare la variable os (Onglet Source)
 
Set cc = ThisWorkbook 'définit le classeur cible
Set oc = cc.Sheets("Feuil2") 'définit l'onglet cible
With Me.ListBox1 'prend en compte la ListBox1
    For x = 0 To .ListCount - 1 'boucle sur tous les éléments de la ListBox1
        If .Selected(x) = True Then 'condition : si l'élément est sélectionné
            'définit la cellule de destination (A1 de l'onglet cible si A1 est vide, sinon la première cellule vide de la colonne A)
            Set dest = IIf(oc.Range("A1") = "", oc.Range("A1"), oc.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
            Set cs = Workbooks(.List(x)) 'définit le classeur source
            Set os = cs.Sheets(1) 'définit l'onglet source
            os.UsedRange.Copy dest 'copie la plage des cellules éditées de l'onglet source et la copie dans dest
        End If 'fin de la condition
    Next x 'prochain élément séolectionné de la boucle
End With 'fin de la prise en compte de la ListBox1
Unload Me 'vide et ferme l'Userform
oc.Activate 'sélectionne l'onglet cible
End Sub
 
Private Sub ANNULER_Click()
Unload Me 'vide et ferme l'Userform
End Sub