VBA - Variable tableau - PB de Valeur
StellaG
Messages postés
5
Statut
Membre
-
StellaG Messages postés 5 Statut Membre -
StellaG Messages postés 5 Statut Membre -
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
A voir également:
- VBA - Variable tableau - PB de Valeur
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
2 réponses
Bonjour,
Exemple type :
Lupin
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
StellaG
Messages postés
5
Statut
Membre
Merci Lupin pour votre réponse, mais comme l'a si bien dit Michel, je souhaitais utiliser le système avec des tableaux pour un gain de temps.
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)
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!... ;-)
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!... ;-)