copier un matrice dans une feuille

A

annie

Guest
Bonjour,

Je n'arrive pas à copier les valeur d'une martice memorisé dans une feuille excel.

Merci pour vetre aide

Annie
 
A

annie

Guest
Je m'explique :


par exemple, j'ai une martice :

(125 122)
(168 483)
(095 543)

elle est saisie avec VBA : dim mat(3,2) as double

je souhaite avoir une commande pour "coller" cette matrice dans une feuille excel :

range("A1") = mat(1,1)
range("B1") = mat(1,2)

...


Voilà, mais comment rendre ceci moins manuel, pour que l'opération puisse se reproduire quelque soit la taille de la matrice ...


Merci

Annie
 
T

Ti

Guest
alors là, rien de plus simple, Excel est prévu pour. Pour cela il suffit que ta matrice soit du type Matrice(NbLignes, Nbcols)
donc en VBA tu peux faire :

Matrice = Range("A2:D7") 'si tu veux récupérer les données directement
travail sur ta matrice...

ensuite, tout simplement pour la réinjecter :

Range("A2:D7") = Matrice

et voilà
 
A

annie

Guest
voici mon code .... et mon problème :


Sub edition_xls()
Dim i, j As Integer

For i = 1 To nb_pt_cam '\ nb_pt_cam variable du programme
For j = 1 To 2
MsgBox "coord i " & i & " et j " & j & " nombre : " & coord_pixel_cam(i, j), vbInformation, "test" '\ pour verifier qu'il y a ce que je veux dans la matrice
Next
Next

Range("A1:B" & nb_pt_cam) = coord_pixel_cam

Range("A1").Select


End Sub

en lui rentrant nb_pt_cam = 2, et

1 2
3 4 comme matrice, Excel écrit :



0 0
0 1 ......


Savez vous résoudre ceci ?

Merci

Annie
 
T

Ti

Guest
tout d'abord, il y a une chose dont tu dois t'assurer, c'est que ton tableau coord_pixel_cam soit bien de base 1 (c'est à dire que les indices commencent à 1 et non pas à 0 comme c'est le cas par défaut dans VBA, mais pas dans Excel)

Ainsi, si tu définis explicitement la taille de ta matrice (comme dans le premier exemple que tu as donné), tu dois le faire comme ceci :

Dim coord_pixel_cam(1 To 3, 1 To 2)

par la suite, je te conseille de définir une variable Range que tu initialiseras à la taille de ta matrice :

Dim Plage As Range

Set Plage = Range("A1").Resize(Ubound(coord_pixel_cam,1),Ubound(coord_pixel_cam,2))
Plage = coord_pixel_cam
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Tri et Import
Réponses
4
Affichages
163

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16