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 |