'Subscript out of range', oui mais où ?
Résolu
timgvz
Messages postés
15
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
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! :)
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
A voir également:
- 'Subscript out of range', oui mais où ?
- Out of range écran ✓ - Forum Matériel & Système
- Input signal out of range - Forum Matériel & Système
- Problème signal out of range - Forum Windows
- Input signal out of range. (Problème Difficile) ✓ - Forum Matériel & Système
- Hdmi out - Forum Format et connectique vidéo
1 réponse
Bonjour timgvz,
Essaye avec :
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. 😊
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. 😊
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...
qui est mise en jaune dans la fenêtre de Microsoft Visual Basic.
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 .)
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.
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 :)