Bonjour CHRIS1945, Arturo83 et JFL,
Tout d'abord merci de vous être intéressé à ce sujet.
En revanche ma demande concernait particulièrement l'utilisation simultanée de la formule =CHOISIR avec une plage nommée de cellules disjointes...
J'ai refait un fichier pour appuyer cette demande.
Au vu de mes connaissances parcellaires, j'ai pris aussi une déviation et utilise la formule =INDEX avec une plage nommée créée par VBA (je ne sais pas faire un array directement dans la formule du gestionnaire de nom ...). A propos j'en ai profité pour y glisser un total des jours ouvrés.
Option Explicit
Sub SetJoursOuvrés()
Dim nm As Name, temp
'*** Suppression plage nommée "Liste_jours_ouvrés"
For Each nm In ActiveWorkbook.Names
On Error Resume Next
If nm.Name = "Liste_jours_ouvrés" Then nm.Delete
On Error GoTo 0
Next nm
'*** Ajout plage nommée "Liste_jours_ouvrés"
temp = GetJoursOuvrés 'fonction perso
With ActiveWorkbook.Names
.Add Name:="Liste_jours_ouvrés", RefersTo:=temp
End With
End Sub
Function GetJoursOuvrés()
Dim nm As Name, temp
Dim i&, total&
'*** Liste Jours_ouvrés
For Each nm In ActiveWorkbook.Names
On Error Resume Next
If nm.Name = "Jours_ouvrés" Then
temp = nm.Value
temp = Split(Mid(nm.Value, 2), ",")
ReDim Preserve temp(0 To 12)
For i = LBound(temp) To UBound(temp)
temp(i) = Range(temp(i)).Value
total = total + temp(i)
Next i
temp(12) = total
GetJoursOuvrés = temp
End If
On Error GoTo 0
Next nm
End Function
Si jamais vous avez des astuces pour compléter mes connaissances, je vous suis bien reconnaissant.
Je regrette de ne pouvoir utiliser la formule =CHOISIR qui m'apparaissait pourtant évidente ici...