Bonsoir le fIl, bonsoir le forum,
Une proposition VBA. Je hais les formulistes !... Il sont trop forts.
En piece jointe ton fichier modifié avec la macro événementielle Change ci-dessous :
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onget
Dim O As Worksheet 'déclare la variable O (Onglet)
If Target.Address <> "$B$1" Then Exit Sub 'si le changement a lieu ailleurs que dans B1, sort de la procédure
If Target = "" Then Target.Offset(0, 1).Value = "": Exit Sub 'si B1 est effacée, C1 est effacée aussi puis, sort de la procédure
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set O = Sheets(Target.Value) 'définit l'onglet O (génère une erreur si cet onglet n'existe pas
If Err <> 0 Then 'condition : si une erreur a été générée
Err.Clear 'supprime l'erreur
MsgBox "L'onglet " & Chr(34) & Target.Value & Chr(34) & " n'existe pas !" 'message
Target.Select 'selectionne B1
Exit Sub 'sort de la procédure
End If 'fin de la conditon
Range("C1").Value = O.Range("D4").Value 'récupère an C1 la valaur de D4 de l'onglet O
End Sub
Franchement Ferrand. Pourquoi faire si simple alors qu'on peut faire très compliqué ?!...