VBA - Variable tableau - PB de Valeur
StellaG
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
StellaG Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
StellaG Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je me lance enfin pour poser une question.
Voici un code tout simple.
Seulement, lorsque je l'execute, j'ai cette erreur qui apparait à la ligne Tabl(I) = Tabl(I) * 2:
"Run-Time error '9':
Subscirip ou of range
Je désespère de trouver POURQUOI, il ne veut pas faire cette boucle toute simple !!
Merci de votre aide
Voici mon code:
----------------------------------------
Sub autre_immo()
Dim Tabl() As Variant
Dim I As Integer, J As Integer
Tabl = Range("A1:A100").Value
For I = 1 To 100
Tabl(I) = Tabl(I) * 2
Next I
Application.ScreenUpdating = False
Range("O1:O100").Value = Tabl
End Sub
----------------------------------------
Stella
Je me lance enfin pour poser une question.
Voici un code tout simple.
Seulement, lorsque je l'execute, j'ai cette erreur qui apparait à la ligne Tabl(I) = Tabl(I) * 2:
"Run-Time error '9':
Subscirip ou of range
Je désespère de trouver POURQUOI, il ne veut pas faire cette boucle toute simple !!
Merci de votre aide
Voici mon code:
----------------------------------------
Sub autre_immo()
Dim Tabl() As Variant
Dim I As Integer, J As Integer
Tabl = Range("A1:A100").Value
For I = 1 To 100
Tabl(I) = Tabl(I) * 2
Next I
Application.ScreenUpdating = False
Range("O1:O100").Value = Tabl
End Sub
----------------------------------------
Stella
Configuration: Windows XP Internet Explorer 6.0
2 réponses
-
Bonjour,
Exemple type :
Option Explicit Sub autre_immo() Dim Tabl As Range, Cellule As Range Set Tabl = Range("A1:A100") For Each Cellule In Tabl Cellule.Value = Cellule.Value * 2 Next Boite Application.ScreenUpdating = False Range("O1:O100").Value = Tabl.Value Application.ScreenUpdating = True End Sub '
Lupin
-
Bonjour,
Ton pb vient surtout du fait que lorsque tu écris
Range("A1:A100")=tabl
tabl a 2 dimensions Tabl(N,N)
pour t'en convaincre installe un espion sur tabl (déboguage-ajouter un espion)
d'autre part, le but d'utiliser les tableaux est le gain de temps important par rapport à
la manipulation de cellules (for each cellule...) sur de grandes plages ( pour A1:A65536, gain de temps:20 fois + vite; source:developpez.com magazine N°12)
Voici une démo (source FAQ Excel de developpez.com ou magazine cité + haut)Sub autre_immo() Dim Tabl As Variant Dim cptr1 As Byte, cptr2 As Byte Tabl = Range("A1:A100").Value For cptr1 = LBound(Tabl, 1) To UBound(Tabl, 1) For cptr2 = LBound(Tabl, 2) To UBound(Tabl, 2) Tabl(cptr1, cptr2) = Tabl(cptr1, cptr2) * 2 Next Next Application.ScreenUpdating = False Range("O1:O100").Value = Tabl End Sub
edit: si par hasard, c'était pour un exercice de formation à VBA, tu connais maintenant les sources des exos de ton prof et de ses corrigés,mais chut!... ;-)