'Subscript out of range', oui mais où ?

Résolu/Fermé
timgvz Messages postés 14 Date d'inscription mardi 5 juillet 2016 Statut Membre Dernière intervention 22 août 2016 - Modifié par timgvz le 22/08/2016 à 16:06
 Utilisateur anonyme - 22 août 2016 à 18:41
Bonjour,

Alors que mon programme est censé être très simple, je tente depuis un moment d'élucider un problème de ' Subscript out of range' .

Le but de ce programme est de comparer des lignes deux à deux, et de renvoyer "Yes" or "No" en fonction de leur concordance ou non.

Comme le nombre de ligne n'est pas fixe, j'ai donc créé no_ligne, qui me permet de fixer ce nombre.

Une idée?

Merci d'avance! :)


Sub Comparaison()
Dim no_ligne As Integer
Dim compteur As Integer
Dim C As Workbook
Dim O As Worksheet

Set C = ThisWorkbook
Set O = C.Worksheets("Limited_Data")

no_ligne = O.Range("BN" & Application.Rows.Count).End(x1Up).Row + 1

compteur = 1

O.Range("CM" & compteur) = "Yes"

While compteur < no_ligne
If O.Range("BX" & compteur) = O.Range("BW" & compteur) Then
O.Range("BY" & compteur) = "Yes"
Else
O.Range("BY" & compteur) = "No"
End If
If O.Range("CA" & compteur) = O.Range("CB" & compteur) Then
O.Range("CC" & compteur) = "Yes"
Else
O.Range("CC" & compteur) = "No"
End If
If O.Range("CD" & compteur) = O.Range("CE" & compteur) Then
O.Range("CF" & compteur) = "Yes"
Else
O.Range("CF" & compteur) = "No"
End If
compteur = compteur + 1
Wend

End Sub


1 réponse

Bonjour timgvz,

Essaye avec :

Dim no_ligne As Long
Dim compteur As Long

Car plage des nombres pour Integer : de -32 768 à +32 767 donc si
la dernière ligne de ton tableau est après : plantage assuré !  😉

Si ton problème est réglé, merci d'aller en haut de page
pour cliquer sur « Marquer comme résolu ».

Si ça ne vient pas de là, précise sur quelle ligne de code
ton erreur se produit.

Cordialement.  😊
 
0
timgvz Messages postés 14 Date d'inscription mardi 5 juillet 2016 Statut Membre Dernière intervention 22 août 2016
22 août 2016 à 16:58
Bonjour albkan,

merci pour ta réactivité et pour ta réponse, mais malheureusement, ce n'est visiblement pas le problème car la macro ne marche toujours pas, et avec le même message d'erreur...
0
Utilisateur anonyme > timgvz Messages postés 14 Date d'inscription mardi 5 juillet 2016 Statut Membre Dernière intervention 22 août 2016
22 août 2016 à 17:01
Et sur quelle ligne de code se produit cette erreur ? Je parle de la ligne
qui est mise en jaune dans la fenêtre de Microsoft Visual Basic.
0
timgvz Messages postés 14 Date d'inscription mardi 5 juillet 2016 Statut Membre Dernière intervention 22 août 2016
22 août 2016 à 17:02
Lorsque je mets le mode debug, c'est ok jusqu'à la boucle While, derrière ça bug...
Je pense que cela vient plutôt des conditions if, mais je ne suis pas sûr... Et s'il y a un moyen de voir où l'erreur se situe plus précisement, je suis preneur de l'astuce .)
0
Utilisateur anonyme > timgvz Messages postés 14 Date d'inscription mardi 5 juillet 2016 Statut Membre Dernière intervention 22 août 2016
Modifié par albkan le 22/08/2016 à 17:30
 
Tu n'as pas répondu à ma question ! Quelle ligne de code est en jaune ?
Est-ce la ligne « While compteur < no_ligne » ou une autre, plus bas ?

Car quand l'erreur se produit, VBA ouvre une boîte de dialogue où tu dois
cliquer sur le bouton « Debug » ; et là, ça va sur ton code et tu devrais avoir
une ligne de code surlignée en jaune. L'erreur ne provient pas forcément
de cette ligne et la cause peut être plus en amont, mais ça peut quand
même aider.

----------------------------------------------------

Pour le classeur, tu as mis : Set C = ThisWorkbook ; mais attention :
selon ton « environnement », ce n'est pas forcément ton classeur
en cours, auquel cas VBA ne trouvera pas ta feuille "Limited_Data".
D'ailleurs, est-ce que ce nom de feuille est bien orthographié ?

Tu peux aussi essayer avec ceci : Set O = Worksheets("Limited_Data")
donc sans C. devant.

Cela car tes lignes If font référence à O. À te lire.
 
0
timgvz Messages postés 14 Date d'inscription mardi 5 juillet 2016 Statut Membre Dernière intervention 22 août 2016
Modifié par timgvz le 22/08/2016 à 17:41
Re,

Désolé je n'ai jamais pris de cours sur VBA et ne connais pas encore tous les outils.
Comment fais-tu pour avoir cette ligne jaune? Debug, puis step into jusqu'à ce qu'un message apparaisse?

Oui, le workbook est bien celui sur lequel je travaille et le nom de la feuille est bien la bonne également...
J'ai cependant suivi ton conseil et mis Set O = Worksheets("Limited_Data"), mais rien n'y fait...

Mille mercis en tout cas :)
0