Boucle sur tableau et Erreur 9 : l'indice n'appartient pas à la sélection

Bonjour à tous,

Après avoir cherché sur le forum, je ne trouve rien qui m'aide dans mon problème : voilà plusieurs fois que je suis bloqué avec l'erreur 9 lorsque je fais des boucles sur un tableau.

Il y a quelque chose dans le fonctionnement des boucles VBA que je ne dois pas comprendre...

Voilà mon bout de code (tiré de l'exercice sur les tableaux du cours VBA, disponible ici : https://www.excel-pratique.com/fr/vba/tableaux_vba_exercice.php):

Sub tableau() Dim derniere_ligne As Integer, derniere_colonne As Integer Dim valeur_recherchee As String, taille As Integer, oui_non As String If OptionButton_oui = True Then valeur_recherchee = "OUI" Else valeur_recherchee = "NON" End If derniere_ligne = Sheets("BD").Range("A1").End(xlDown).Row derniere_colonne = Sheets("BD").Range("A1").End(xlDown).Column taille = 0 Dim tab_bd() ReDim tab_bd(derniere_ligne - 2, derniere_colonne - 1) For i = 2 To derniere_ligne For j = 1 To derniere_colonne tab_bd(i - 2, j - 1) = Sheets("BD").Cells(i, j) Next Next For k = 2 To derniere_ligne If tab_bd(k - 2, 2) = valeur_recherchee Then taille = taille + 1 End If Next End Sub

L'erreur 9 concerne la 2eme boucle qui itère sur mon tableau, soit celle-ci :

For k = 2 To derniere_ligne If tab_bd(k - 2, 2) = valeur_recherchee Then taille = taille + 1 End If Next

Je suis preneur de tout conseil!

Merci d'avance !

bonjour,

cette instruction n'est pas correcte,

derniere_colonne = Sheets("BD").Range("A1").End(xlDown).Column

Elle renverra toujours 1 pour range("A1"), qui sera la limite de la 2ème dimension de ton tableau or dans l'instruction en erreur tu veux accéder l'indice 2 qui n'existe donc pas, d'où le message d'erreur.

ce devrait être

derniere_colonne = Sheets("BD").Range("A1").End(xlToRight).Column

Bonjour,

comme me le fait remarquer ric (Merci à lui), xlRight devrait être xlToRight

Coquille

Envoyé : il y a 4 minutes

De : ric

À : h2so4

Bonjour,

End(xlRight)

Gauche et droite sont End(xlToLeft) et End(xlToRight)

je corrige dans la "correction"

Merci beaucoup à vous deux pour vos réponses et votre rapidité. C'est très sympa.

Effectivement, je comprends bien mon erreur.

De plus, j'ajoute (je ne sais pas si d'autres sont dans le même cas) : dans mon éditeur, la graphie du '1' et du 'l' (la 1ère lettre de 'lion') sont identiques. Cela me générait des erreurs quand j'écrivais end(X1down) au lieu de end(Xldown).

Bonjour,

De plus, j'ajoute (je ne sais pas si d'autres sont dans le même cas) : dans mon éditeur, la graphie du '1' et du 'l' (la 1ère lettre de 'lion') sont identiques. Cela me générait des erreurs quand j'écrivais end(X1down) au lieu de end(Xldown).

Pour éviter ce type de problème, tu peux modifier la police de caractères de l'éditeur VBA (dans VBE, via outils->options->editeur)

Rechercher des sujets similaires à "boucle tableau erreur indice appartient pas selection"