Matrice en vba

Résolu/Fermé
sultanga Messages postés 3 Date d'inscription samedi 16 août 2014 Statut Membre Dernière intervention 25 août 2014 - 17 août 2014 à 00:09
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 - 19 août 2014 à 18:30
Bonjour,
Je n'arrive pas à coprendre le code que je dois appliquer à mon "problème". Je dois convertir les "rows to columns" avec les données de mes matrices. Je suis novice en vba, je viens juste de comprendre comment marche les macros mais pour faire les code, c'st un peu dur...
en espérat que quelqu'un peut m'aider..
merci beaucoup en avance
le code:
Sub tt()
Dim a(), i&, ii&, x&
a = [a1].CurrentRegion.Value
ReDim b(1 To UBound(a) * UBound(a, 2), 1 To 3)
For i = 2 To UBound(a)
For ii = 2 To UBound(a, 2)
x = x + 1
b(x, 1) = a(i, 1)
b(x, 2) = a(1, ii)
b(x, 3) = a(i, ii)
Next
Next
Workbooks.Add(1).Sheets(1).[a1].Resize(x, 3) = b
End Sub

4 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
17 août 2014 à 13:07
bonjour,

Pour convertir les lignes en colnnes, pas besoin de macro, utilises la formule TRANSPOSE()
0
sultanga Messages postés 3 Date d'inscription samedi 16 août 2014 Statut Membre Dernière intervention 25 août 2014
18 août 2014 à 20:34
Bonjour,
j'ai compris comment le marche le code. En fait, j'ai 5 matrices pour les années de 2004 à 2009 et pour chaque année il y a des trimestres, c'est pour ça je pense que c'est mieux d'appliquer le code.
Mais maintenant, j'ai un autre problème, le code ne se copie pas et je suis obligée de faire plusieurs classeurs eu lieu de garder toujours le même classeur..est ce qu'il y a une solution?
Merci d'avance,
A
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
Modifié par ccm81 le 19/08/2014 à 14:17
Bonjour

Comme dit Patrice que je salue au passage, pourquoi t'embêter à coder la transposition
Si tu tiens absolument à faire ça en vba peut être t'inspirer de ceci

Public Sub TR()
Dim nbli As Long, nbco As Long
Dim adrmat As String, adrcible As String, M As Range
adrmat = InputBox("adresse matrice à transposer")
Set M = Range(adrmat)
adrcible = InputBox("adresse cellule cible ")
nbli = M.Rows.Count
nbco = M.Columns.Count
Range(adrcible).Resize(nbco, nbli) = Application.Transpose(M)
End Sub

Cdlmnt
0
merci beaucoup!!!
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
19 août 2014 à 18:30
Si c'est fini, peux tu mettre le sujet à Résolu (en haut à droite de ton premier message)

Bonne soirée
0