Bonjour,
On ne met Set que pour attribuer un objet à une variable.
Or avec FilmLengths = Application.InputBox(Prompt:="Choose the lengths to convert", Type:=64), FilmLengths n'est pas un objet mais un tableau de valeurs à saisir sous cette forme : {65;222;38}.
Si tu avais mis Type:=8 tu aurais dû aller sélectionner une plage sur une feuille. Là tu aurais dû utiliser Set pour l'affecter à une variable.
Ton code aurait été :
Sub ReturnArray()
Dim FilmLengths() As Variant
Dim pl As Range
Dim LoopCounter As Long
Dim ResultRange As Range
Set pl = Application.InputBox(Prompt:="Choose the lengths to convert", Type:=8)
FilmLengths = pl.Value
For LoopCounter = LBound(FilmLengths, 1) To UBound(FilmLengths, 1)
FilmLengths(LoopCounter, 1) = Int(FilmLengths(LoopCounter, 1) / 60) & " hours" & (FilmLengths(LoopCounter, 1) Mod 60) & " minutes"
Next LoopCounter
Set ResultRange = Application.InputBox(Prompt:="Choose where to put the results", Type:=8)
ResultRange.Value = FilmLengths
End Sub
Remarque : en mettant les temps sous la forme "1 hours45 minutes" tu t'interdits tout calcul dessus.
Si tu veux pouvoir en faire la somme par exemple, il faut l'écrire sous la forme attendue par excel : 1:45 avec :
FilmLengths(LoopCounter, 1) = Format(FilmLengths(LoopCounter, 1) / 60 / 24, "h:mm")
eric