Bonjour,
de ce que je sais, un tableau permet de stocker des variables, pas des objets... est-ce que cible contient quelque chose une fois que tu passes la ligne? tu peux regarder ça avec l'espionneur si le tableau n'est pas initialisé tu sauras que ça vient de sa déclaration, si il contient quelque chose, il faudra voir pour la suite...
Sinon je crois que tu as fait une faute ici :
For Each cible(i - 1) In cible(i - 1)
pour une boucle For Each il faut écrire: For Each nomDeMaVariable in MaCollectionDobjets, ici tu mets cible(i-1) en nom de variable et je pense que c'est aussi ça qui fait planter ton code. D'ailleurs après réflexion, la ligne d'initialisation de ton tableau ne semble pas faire planter ton code, donc c'est sûrement le deuxième point que j'ai soulevé
Essaye avec cette correction pour voir
Set fichier = fso.getfolder(chemin).Files
Set dossier = fso.getfolder(chemin).subfolders
cible = Array(dossier, fichier)
For i = 1 To 2
If Me.Controls("optionbutton" & i) = True Then
For Each machin In cible(i - 1) ' cette ligne n'est pas acceptée par le compilateur
ListBox1.AddItem Mid(machin, Len(chemin) + 2, Len(chemin))
Next
End If
Next
End If