[VBA-E] macro avec fonction "TRANSPOSE"
Bonjour tout le monde !
Je dois faire une macro qui doit (entre autre) transposer trois valeurs qui se trouvent en colonnes, en lignes. Sans passer par la macro (dans la feuille excel toute bete), je peux utiliser la fonction Transpose qui fait ca a merveille. Le probleme, c'est que pour que cette fonction marche, on doit maintenir appuyees les touches ctrl+shift+enter lorsque l'on rentre la fonction...
Je me demande s'il est quand meme possible de l'utiliser dans mon VB ? et si oui comment ?
Ardeciel
pb de plage avec la fonction TRANSPOSE
bonjour !!!
voila, j'ai ce code :
Code:
1 2 3 4 5 6 7 8 9
| startColB=Range.Column("k1") ' colonne de depart dans la feuille
' qui va recevoir les resultat du transpose
EndCol=Range.column("AG1") 'derniere colonne a transposer dans la feuille des donnees
for startCol =Range.column("k1") to EndCol
Range(Cells(RowD,startColB),cells(RowD,StartColB+2)).select 'plage qui va recevoir le resultat
Selection.FormulaArray="=TRANSPOSE(R[countRow]C[startCol]:R[countRow+2]C[startCol])"
startColB=startColB+3
next |
countRow est la ligne qui contient les donnees a transposer, ces donnees sont en colonne
RowD est la ligne qui recoit les donnees tranposees, qui sont donc en lignes.
ce code marche, mais me fait n'importe quoi.
en fait je n'ai aucun moyen de savoir la position relative de la plage a tranposer, par rapport a la plage qui recois la transposition... l'ecart change tout le temps.
j'ai donc essaye ca :
Code:
selection.formulaArray="=TRANSPOSE" & range(cells(countRow,startCol),cells(countRow+2,startCol)) & ")"
et il me fait une :
Citation:
run-time error '13'
type mismatch...
comment faire pour que la plage du transpose ne depende pas de la plage qui recois les donnees ?
et au passage :
c'est quoi mismatch ???
merci !
Ardeciel
pb de plage avec la fonction TRANSPOSE (suite)
bonjour !
encore et toujours en train de me battre avec cette fonction TRANSPOSE...:roll:
Ouskel'n'or m'a dis d'utiliser
Code:
selection.FormulaArray="=TRANSPOSE(" & myRange.address & ")"
chose que fonctionne tres bien. j'utilise donc :
Code:
1 2 3 4 5 6 7 8
| dim myRange as Range
' range a transposer:
set myRange=Workbooks(name).Worksheets(reg).Range(cells(countRow,stCol),cells(countRow+2,stCol))
' range qui recois la transposition:
Range(cells(rowD,stCol2),cells(rowD,stCol2+2)).select
Selection.FormulaArray="=Transpose(" & myRange.address & ")" |
et la c'est le drame...
Citation:
Run-time error '1004'
Application-defined or object-defined error
je tiens a preciser que j'ai fait toutes les verifications possibles, toutes mes variables sont declaree et initialisee (avec les bonnes valeurs ).
pour voir, j'enregistre une macro bidon qui transpose dans une feuille bidon d'un classeur bidon1, une plage d'une autre feuille d'un autre classeur bidon2. ca donne ca :
Code:
1 2
| Range("A2:C2").select
selection.FormulaArray="=TRANSPOSE([tries3.xls]sheet2!R9C1:R11C1)" |
j'essaye donc la chose suivante :
Code:
1 2 3
| selection.fornulaArray="=TRANSPOSE([" & name & "]" & reg & "!R" & countRow & "C" & stCol & ":R" & inter & "C" & stCol & ")"
' inter =countRow +2 (as integer) |
la, re-drame :
Citation:
run-time error'1004'
unable to set the FormulaArray property of the Range class
je suis a cour d'idee la... vous en auriez pas une ou deux ?
Ardeciel