VBA: fonction LBound et fonction UBound [tutoriel]

Dans ce tutoriel, vous allez apprendre comment utiliser les fonctions LBound et UBound en VBA (Visual Basic for Applications). Ces fonctions sont essentielles pour manipuler efficacement les tableaux, car elles permettent de déterminer les limites inférieures et supérieures d'un tableau.

VBA - fonction LBound et fonction UBound

Introduction aux fonctions LBound et UBound

Les fonctions LBound et UBound permettent de déterminer les limites inférieures et supérieures d'un tableau en VBA. La fonction LBound renvoie la limite inférieure d'un tableau, tandis que la fonction UBound en renvoie la limite supérieure. Ces fonctions sont particulièrement utiles pour parcourir et manipuler les éléments d'un tableau, en évitant les erreurs liées à l'accès aux indices hors des limites du tableau.

Syntaxe et explication des arguments

Fonction LBound

Voici la syntaxe, assez simple, de la fonction LBound :
LBound(ArrayName, [Dimension])
Les arguments sont les suivants :

  • ArrayName: Il s'agit du nom du tableau dont vous souhaitez obtenir la limite inférieure.
  • Dimension (optionnel): Il s'agit de la dimension du tableau pour laquelle vous voulez obtenir la limite inférieure. Si cet argument n'est pas spécifié, la fonction renvoie la limite inférieure de la première dimension du tableau.

Fonction UBound

Voici la syntaxe de la fonction UBound. Qui correspond, à celle de sa "jumelle"…
UBound(ArrayName, [Dimension])
Et voici ses arguments:

  • ArrayName: Il s'agit du nom du tableau dont vous souhaitez obtenir la limite supérieure.
  • Dimension (optionnel): Il s'agit de la dimension du tableau pour laquelle vous voulez obtenir la limite supérieure. Si cet argument n'est pas spécifié, la fonction renvoie la limite supérieure de la première dimension du tableau.

Exemple d'utilisation des fonctions LBound et UBound

Voici un exemple d'utilisation des fonctions LBound et UBound pour parcourir et afficher les éléments d'un tableau unidimensionnel:

Cet exemple démontre comment utiliser les fonctions LBound et UBound pour déterminer les limites du tableau et parcourir ses éléments en toute sécurité.

Astuces pour une utilisation efficace

  • Utilisez toujours LBound et UBound pour déterminer les limites d'un tableau au lieu de supposer qu'il commence à 0 ou 1. Cela permet d'éviter les erreurs potentielles et de rendre votre code plus robuste face aux modifications futures.
  • Utilisez LBound et UBound dans les boucles For pour parcourir les éléments d'un tableau multidimensionnel en toute sécurité. Cela garantit que vous accéderez toujours aux éléments valides du tableau. Ainsi, votre code ne causera pas d'erreurs en essayant d'accéder aux éléments du tableau (de la liste,…) qui n'existent pas (la fameuse "erreur 9").VBA: erreur 9
  • Si vous travaillez avec des tableaux dynamiques, vous pouvez utiliser les fonctions LBound et UBound après avoir redimensionné le tableau avec la fonction ReDim. Cela vous permet de connaître les nouvelles limites du tableau après la "redimension".

Comment éviter les erreurs

  • Assurez-vous de toujours passer un tableau valide aux fonctions LBound et UBound. Si vous passez une variable non initialisée ou un type de données incompatible, VBA générera une erreur.
  • Si vous utilisez l'argument Dimension, assurez-vous qu'il est valide pour le tableau donné. Par exemple, si vous avez un tableau unidimensionnel, ne spécifiez pas une valeur de Dimension supérieure à 1. Si vous le faites, cela va déclencher une erreur.
  • Ne présumez pas que la limite inférieure d'un tableau est toujours 0 ou 1. Même si c'est tentant… Utilisez la fonction LBound pour déterminer la limite inférieure de manière fiable.

FAQ

Voici une liste des quelques questions qui revient fréquemment…

1. Comment puis-je déterminer la taille d'un tableau multidimensionnel avec UBound et LBound?

Pour déterminer la taille d'un tableau multidimensionnel, vous devez utiliser UBound et LBound pour chaque dimension. Par exemple, pour un tableau bidimensionnel :

2. Comment gérer l'erreur "Subscript out of range" lors de l'utilisation de UBound et LBound?

Cette erreur peut survenir lorsque vous essayez d'accéder à un élément en dehors des limites du tableau. Vous pouvez éviter cette erreur en vérifiant si les indices sont compris entre les bornes inférieures et supérieures à l'aide des fonctions LBound et UBound.

3. Puis-je utiliser UBound et LBound sur des tableaux dynamiques?

Oui, UBound et LBound fonctionnent également sur des tableaux dynamiques. Ils renvoient les limites du tableau après redimensionnement avec la fonction ReDim.

4. Comment parcourir un tableau en utilisant UBound et LBound?

Utilisez une boucle For pour parcourir un tableau en vous basant sur ces deux fonctions pour déterminer les limites du tableau.

5. Est-il possible d'utiliser UBound et LBound avec des tableaux de chaînes de caractères?

Oui, les deux fonctions peuvent être utilisés avec des tableaux de n'importe quel type de données, y compris des chaînes de caractères.

6. Est-ce que la fonction la fonction LBound peut renvoyer un résultat différent de 0 ou 1?

Oui, il existe des cas où ceci est possible…

Dans certaines situations, les indices du tableau peuvent correspondre à des valeurs réelles, telles que les années, les numéros de série ou les codes d'identification. En définissant un indice de départ personnalisé, vous pouvez simplifier la représentation des données et réduire les erreurs de calcul liées à la conversion d'indices.

Par exemple, supposons que vous ayez des données de température pour les années 1990 à 2000, et que vous souhaitiez stocker ces données dans un tableau où l'indice correspond à l'année :

Dans cet exemple, définir LBound à 1990 rend la manipulation des données plus intuitive, car les indices correspondent directement aux années.

Pour aller plus loin en VBA

Et pour terminer, voici quelques autres articles qui pourraient vous intéresser…

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Commentaire sur “VBA: fonction LBound et fonction UBound [tutoriel]”