![](https://codky.com/wp-content/uploads/2024/11/2759-1024x576.png)
La fonction `CallByName` en VBA (Visual Basic for Applications) permet d’appeler une propriété ou une méthode d’un objet en utilisant son nom sous forme de chaîne de caractères. C’est particulièrement utile lorsque vous souhaitez accéder à des propriétés ou des méthodes dont le nom n’est déterminé qu’au moment de l’exécution du code.
Voici comment utiliser `CallByName` :
Syntaxe
CallByName(object, procname, calltype, [arguments()])
- object : L’objet qui possède la propriété ou la méthode que vous souhaitez appeler.
- procname : Une chaîne de caractères représentant le nom de la propriété ou de la méthode.
- calltype : Une constante qui détermine si vous appelez une méthode, lisez une propriété ou attribuez une valeur à une propriété. Les constantes possibles sont :
- `VbMethod` : Pour appeler une méthode.
- `VbGet` : Pour lire la valeur d’une propriété.
- `VbLet` : Pour affecter une valeur à une propriété non-objet.
- `VbSet` : Pour affecter une valeur à une propriété objet.
- arguments() : Optionnel. Un tableau d’arguments à passer à la méthode ou à la propriété (s’il y en a).
Exemple d’utilisation
Voici un exemple simple qui montre comment utiliser `CallByName` pour appeler des méthodes et accéder à des propriétés :
Sub ExempleCallByName()
Dim o As Object
Set o = CreateObject("Scripting.Dictionary")
' Utiliser CallByName pour ajouter une clé et une valeur au Dictionary
CallByName o, "Add", VbMethod, "clé1", "valeur1"
' Utiliser CallByName pour récupérer la valeur associée à "clé1"
Dim valeur As Variant
valeur = CallByName(o, "Item", VbGet, "clé1")
MsgBox "La valeur pour 'clé1' est : " & valeur
' Utiliser CallByName pour définir un nouvel élément
CallByName o, "Item", VbLet, "clé1", "nouvelleValeur"
' Récupérer la nouvelle valeur
valeur = CallByName(o, "Item", VbGet, "clé1")
MsgBox "La nouvelle valeur pour 'clé1' est : " & valeur
End Sub
Dans cet exemple, nous utilisons un objet `Dictionary` pour démontrer les appels de méthodes et de propriétés dynamique avec `CallByName`. Cette technique est particulièrement utile pour la programmation générique et lorsque vous devez déterminer dynamiquement quelle propriété ou méthode appeler.