bien vu docmarti je l'avais zappé celle la
re edit:
et l'inverse c'est possible
intégré une colonne tout du moins instruire une colonne avec un array ????
Version imprimable
bien vu docmarti je l'avais zappé celle la
re edit:
et l'inverse c'est possible
intégré une colonne tout du moins instruire une colonne avec un array ????
et ben non!!!
vecteur reste un tableau a 2 dim mais pas un array
puisque
debug.print vecteur(x) plante
mais
vecteur(x,1) donne bien l'élément
il y a toujours incompatibilité de dimension
l'avantage c'est vrai pour copier une seule colonne d'un tableau est intéressant tout de même
Bonjour patricktoulon
Non. Je ne crois pas que l'inverse soit possible.
et oui c'est bien ca le problème demandé
il veux injecter dans un tableau 1 dim la colonne k d'un tableau 2 dim sans boucle et ca j'ai tourné dans tous les sens et je ne crois que sans boucle se soit possible
cela dit intéressant tout de même la worksheetfunction
Re,
C'est exactement ce que je recherchais, merci beaucoup à toi Docmarti et à tout ceux qui ont pris le temps de me répondre.
EDIT:
En effet le vecteur a bien deux dimensions mais dans mon cas je pense que cela va fonctionner, j'explique l’intérêt de ce vecteur.Citation:
vecteur(x,1) donne bien l'élément
J'ai des tableaux de paramètres à n itérations pour k, appelons les X et Y pour l'exemple.
J'ai donc X(n,k) et Y(n,k) et je souhaite utiliser la fonction worksheetfunction.forecast de vba pour déterminer une interpolation pour cas donné :
Imaginons que je suis dans le cas 1 : X(n,1) et Y(n,1)
Je connais une valeur X que j'appelle Xknown, je vais chercher la valeur Yval correspondant en appelant la fonction :
Ce qu'idéalement je souhaiterai faire :
Or durant l'appel de cette fonctions je ne pense pas qu'il soit possible de préciser les colonnes, pour que ça marche il faut passer le tableau entier en argument :Code:Yval = worksheetfunction.forecast(Xknown,Y(n,1),X(n,1))
L'interpolation sera alors réalisée sur l'ensemble des valeurs des deux tableaux et cela ne me convient pas. =xCode:Yval = worksheetfunction.forecast(Xknown,Y,X)
Sur ce je vous souhaite de passer un excellent weekend ! :D
Cdlt Dude,
non dude!!
ca n'est pas ce que tu cherchais!!
pour preuve ton dernier exempleici vecteur est un array 1 dim et tableau est un tableau 2 dimCode:
1
2
3
4 For L = 0 To 8 Vecteur(L) = Tableau(L, 2) Next L
dans une variable variant() la virgule sépare les dimensions
dans ton exemple tableau a 2 dim
tableau(ligne,nombre de colonne)
tandis que vecteur n'a qu'1 dim vecteur (elements)
Bonjour,
Pour avoir Vecteur à 1 seule dimension :
ericCode:Vecteur = Application.Transpose(Application.Index(tableau, , 2))
salut eriic je viens juste de le découvrir en faisant des essais a la louche hihihihihi!!!!
voila maintenant on sait
:plusser: pour toi et docmarti
et de ce fait l'inverse devarit etre possible aussi avec transpose
vecteur=array(1,2,3,4,5,6,7,8,9)
tablo(,3)=application.transpose(vecteur) ou un truc dans le genre
Bien vu eriiic pour le coup la transposition permet d'avoir réellement un vecteur.
Problem resolved ! THANKS big time :D
re
tiens tiens !! intéressant j'ai pas d'erreur mais pas le résultat souhaité
allez on tiens le bon bout !! qui a la réponse ???Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Sub tt() newarray = Array(100, 200, 300, 400, 500, 600, 700, 800, 900, 1100, 1200, 1300, 1400, 1500) tableau = Range("A1:C15").Value 'Récupérer la colonne 3 dans un tableau a 2 dim 'Vecteur = Application.WorksheetFunction.Index(tableau, , 3) 'Récupérer la ligne 3 dans un tableau a 2 dim 'Vecteur = Application.WorksheetFunction.Index(Tableau, 3, 0) 'récupérer une colonne d'un tableau dans un array a 1 dimention " exemple pour dude" Vecteur = Application.Transpose(Application.Index(tableau, , 2)) Debug.Print Join(Vecteur, ",") ' 1 er essai 'injecter un array 1 dim dans un colonne d'un tableau a 2 dim colonne = Application.Index(tableau, 0, 3) colonne = Application.Transpose(newarray) Debug.Print tableau(1, 3)' donne rien mais pas d'erreur déclenchée End Sub
En initialisant un tableau à partir du tableur excel les indices commencent à 1 donc dans ce cas la colonne n°3 n'est pas hors dimension.
En essayant ton code j'ai bien le contenu de la troisième colonne du tableau dans le vecteur "colonne", es-tu sur que la range utilisée pour initialiser le tableau dans ton cas n'est pas vide ?
si!! elle est vide je veux la remplir avec nearray
Re,
A noter qu'avec Type on a directement le vecteur à 1 dimension :
PS : quand tu écris Dim L, C As Integer seul C est Integer, il faut typer toutes les variables.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Type tabl Vecteur() As Long End Type Sub test() Dim Vecteur() As Long, tableau() As tabl Dim L As Integer, C As Integer, i As Long L = 8 C = 4 ReDim tableau(0 To C) For i = 0 To C ReDim tableau(i).Vecteur(0 To L) Next i Vecteur = tableau(2).Vecteur End Sub
En effet je viens de vérifier et seule la variable avant le "As" est prise en compte, merci de me l'avoir signalé.Citation:
PS : quand tu écris Dim L, C As Integer seul C est Integer, il faut typer toutes les variables.
en attendant voici comment ajouter une colonne a un tableau avec le contenu d'un array 1 dim
vraiment bonnard !!!Code:
1
2
3
4
5
6
7
8
9
10
11
12 Sub tt2() dim newarray, i as long,texte as string,vecteur newarray = Array("", 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500) tableau = Range("A1:B15").Value 'on prend que 2 colonne For i = 1 To UBound(newarray) 'on boucle sur le newarray Vecteur = Application.WorksheetFunction.Index(tableau, i, 0) ' on recupere la ligne entiere du tableau texte = texte & Join(Vecteur, ",") & "," & newarray(i) & ";" ' on la transforme en string puis ajoute "," et l'element de newarray(i) Next texte = Mid(texte, 1, Len(texte) - 1) ' on enleve le dernier piont virgule à la fin du texte tableau = Evaluate("{" & texte & "}") ' on le retransforme en tableau avec evaluate MsgBox tableau(2, 3)'message avec l'élément ligne 2 colonne 3) End Sub