VBA écriture variable tableau
Résolu/Fermé
ed555
Messages postés
61
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
26 octobre 2018
-
16 nov. 2011 à 15:07
ed555 Messages postés 61 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 26 octobre 2018 - 17 nov. 2011 à 10:54
ed555 Messages postés 61 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 26 octobre 2018 - 17 nov. 2011 à 10:54
A voir également:
- Variable tableau vba
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Trier tableau excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
2 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
Modifié par michel_m le 16/11/2011 à 17:59
Modifié par michel_m le 16/11/2011 à 17:59
Bonjour
Tout dépend comment tu as rentré les valeurs dans ton tableau
par ex=
Tablo=range(A1"A10").value
te renvoie une variable tableau à 2 dimensions (10,1)
nota: par cette instruction, on a toujours des tableaux base 1
si tu emploie=
Tablo=application.transpose(range(A1"A10").value)
tablo est alors de dimension 10 + pratique à manipuler dans la plupart des cas cas
en mémoire les lignes du tablo alors - à cause du transpose- "sont rangées " horizontalement"
donc pour retrouver ta disposition verticale, il faut réécrire par ex
range("D10").resize(ubound(tablo),1)=application.transpose(tablo)
maintenant si tu as un tablo à 2 dimensions par ex
Tablo=range(A1"A10").value
tu as pas besoin de transpose
Range("D10").Resize(UBound(tablo), 1) = tablo
transpose serait utilisé si on voulait "tourner" le tableau à 90°
Range("D10").Resize(1,UBound(tablo)1) = application.transpose(tablo )
PS: la déclaration n'a rien à voir dans ce cas :-)
Michel
Tout dépend comment tu as rentré les valeurs dans ton tableau
par ex=
Tablo=range(A1"A10").value
te renvoie une variable tableau à 2 dimensions (10,1)
nota: par cette instruction, on a toujours des tableaux base 1
si tu emploie=
Tablo=application.transpose(range(A1"A10").value)
tablo est alors de dimension 10 + pratique à manipuler dans la plupart des cas cas
en mémoire les lignes du tablo alors - à cause du transpose- "sont rangées " horizontalement"
donc pour retrouver ta disposition verticale, il faut réécrire par ex
range("D10").resize(ubound(tablo),1)=application.transpose(tablo)
maintenant si tu as un tablo à 2 dimensions par ex
Tablo=range(A1"A10").value
tu as pas besoin de transpose
Range("D10").Resize(UBound(tablo), 1) = tablo
transpose serait utilisé si on voulait "tourner" le tableau à 90°
Range("D10").Resize(1,UBound(tablo)1) = application.transpose(tablo )
PS: la déclaration n'a rien à voir dans ce cas :-)
Michel
chossette9
Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 308
16 nov. 2011 à 15:08
16 nov. 2011 à 15:08
Bonjour,
comment as-tu déclaré ta variable tableau dans ton code ?
Cordialement.
comment as-tu déclaré ta variable tableau dans ton code ?
Cordialement.
ed555
Messages postés
61
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
26 octobre 2018
17 nov. 2011 à 00:41
17 nov. 2011 à 00:41
Bonjour chossette9,
Merci pour ta réponse. J'ai tenté différentes déclaration, notamment:
dim Tableau() as Variant
dim Tableau(1 To 10) as Integer
Cdt
Merci pour ta réponse. J'ai tenté différentes déclaration, notamment:
dim Tableau() as Variant
dim Tableau(1 To 10) as Integer
Cdt
17 nov. 2011 à 00:48
Merci pour ta réponse, si j'ai bien compris VBA range par défaut les valeurs du tableau dans une ligne et plusieurs colonnes ? (cas de la dimension 1)
Pour alimenter les valeurs de mon tableau de 10 valeurs (dans l'exemple - plus de 8500 en réalité) j'ai utilisé une boucle avec lecture dans feuille excel :
For i = 1 to n
Application.Calculate ' itérations pour faire converger mon système
Tableau(i) = Sheets(1).Range("A1").Value ' je récupère la valeur qui m'intéresse
Next
Mon fichier calcule en ce moment, j'essaierai ton code dès que ce sera fini :-)
Merci encore !
ed
Modifié par michel_m le 17/11/2011 à 07:31
VBA range par défaut les valeurs du tableau dans une ligne et plusieurs colonnes ? (cas de la dimension 1)
Non, c'est le "transpose" qui fait tourner de 90°, par défaut le rangement est vertical: 10 lignes 1 colonne
Pour alimenter ton tableau tu n'as pas besoin de boucler; je t'ai passer la syntaxe:
rappel
conseil: fais des essais sur une maquette pour te pénétrer du pourquoi du comment :o)
application.calculate ne me parait pas indispensable
tuto sur les variables tableaux
https://silkyroad.developpez.com/vba/tableaux/
17 nov. 2011 à 07:45
En fait si : j'ai effectivement besoin de boucler pour alimenter mon tableau car il s'agit d'une simulation en conduction instationnaire (algorithme de gauss seidel inclus dans excel et schéma numérique explicite de l'équation de la chaleur). à intervalles de temps donnés je récupère des données, et comme l'intervalle est défini par mon pas de temps qui est constitué par le nombre d'itérations, c'est absolument indispensable.
mais bref, en alimentant le tableau ainsi, je me retrouve avec un vecteur ligne, et non pas avec un vecteur colonne, ce que m'ont confirmé les essais réalisés.
cordialement,
ed
17 nov. 2011 à 07:51
hé bé!
17 nov. 2011 à 10:54