Option Explicit
'Déclaration du nom de la table dédiée aux variables à conserver comme constante,
'plus facile à modifier en tête de module que dans le code
Const Konst_NomTableDesVariables As String = "T_Variables_T"
'----------------------------------------------------------------------------------
'Fonction qui permet de lire/ecrire la variable dans la table
'-----------------------------------------------------------------------------------
Function Fn_Variable(NomVariable As String) As Range
Dim TableVariables As Worksheet, idx As Integer
' Référencement de la table des variables
Set TableVariables = Worksheets(Konst_NomTableDesVariables)
'recherche du nom de variable dans la 1ere ligne
idx = Application.Match(NomVariable, TableVariables.Rows(1), 0)
'renvoi de l'objet "range" qui correspond à la cellule qui contient la valeur de la variable, ou "nothing" si elle n'existe pas
Set Fn_Variable = IIf(idx = 0, Nothing, TableVariables.Cells(2, idx))
End Function
'---------------------------------------
' Macro pour tester la fonction
'----------------------------------------
Sub test_FonctionVariable()
' Ecriture de la valeur " prenom" dans la table (On utilise ici la proprité par défaut d'un objet range :Value)
Fn_Variable("prenom") = InputBox("Entrez votre prénom")
' Ecriture de la valeur " nom" dans la table
Fn_Variable("nom") = InputBox("Entrez votre nom")
' Ecriture de la valeur " age" dans la table
Fn_Variable("age") = InputBox("Entrez votre âge")
'lecture des 3 variables et renvoi dans le msgbox
MsgBox "Vous vous appelez " & Fn_Variable("prenom") & " " & Fn_Variable("nom") & " et vous avez " & Fn_Variable("age") & " ans."
'Worksheets("T_Variables_T").Visible = xlSheetVeryHidden
End Sub
'---------------------------------------------------------------------------------
' Macro de démonstration du principe, F5 pour la lancer
'---------------------------------------------------------------------------------
Sub CreationExemple()
Dim NewWks As Worksheet
'Ajout d'une feuille au classeur pour la démo
Application.DisplayAlerts = False
On Error Resume Next
Worksheets("T_Variables_T").Delete
Set NewWks = Worksheets.Add
With NewWks
.Name = "T_Variables_T"
'création de 3 titres de variables dans la table
.Cells(1.1) = "nom"
.Cells(1, 2) = "prenom"
.Cells(1, 3) = "age"
Range("A1:D1").Font.Bold = True
End With
'Appel de la procédure de test
Call test_FonctionVariable
Application.DisplayAlerts = true
End Sub