Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Affectation d'un range à une table avec transposition

4 réponses
Avatar
Trirème
Bonsoir M'sieurs Dames,

En VBA, je cherche à faire concis pour affecter à une table les valeurs d'une plage tout
en transposant les données.
Y-a-t'il moyen, de la même façon que l'on écrit : Infos = Range("Infos")
de faire un truc du genre : Infos = Range("Infos").Transpose
ou bien Infos = Transpose(Range("Infos"))
(bien sûr j'ai essayé)

Ainsi, les données d'une plage de taille L x C seraient affectées à une table de taille
C x L.
Sinon il faudra je pense passer par des boucles, nan ?

Cordialement,
--
Trirème

4 réponses

Avatar
Daniel
"> Sinon il faudra je pense passer par des boucles, nan ?

Bonsoir.
Ou par une plage de cellules intermédiaire ?
Cordialement.
Daniel
Avatar
Daniel
Remarque que ta méthode est la bonne :
toto = Application.Transpose(Range("A1:B5"))
Daniel
"Trirème" a écrit dans le message de news:

Bonsoir M'sieurs Dames,

En VBA, je cherche à faire concis pour affecter à une table les valeurs
d'une plage tout en transposant les données.
Y-a-t'il moyen, de la même façon que l'on écrit : Infos = Range("Infos")
de faire un truc du genre : Infos = Range("Infos").Transpose
ou bien Infos = Transpose(Range("Infos"))
(bien sûr j'ai essayé)

Ainsi, les données d'une plage de taille L x C seraient affectées à une
table de taille
C x L.
Sinon il faudra je pense passer par des boucles, nan ?

Cordialement,
--
Trirème


Avatar
MichDenis
c = Application.Transpose(Range("A1:C4"))

Pour transposer C vers la plage E10 ...
Range("E10").Resize(UBound(c, 1), UBound(c, 2)) = c



"Trirème" a écrit dans le message de news:

Bonsoir M'sieurs Dames,

En VBA, je cherche à faire concis pour affecter à une table les valeurs d'une plage tout
en transposant les données.
Y-a-t'il moyen, de la même façon que l'on écrit : Infos = Range("Infos")
de faire un truc du genre : Infos = Range("Infos").Transpose
ou bien Infos = Transpose(Range("Infos"))
(bien sûr j'ai essayé)

Ainsi, les données d'une plage de taille L x C seraient affectées à une table de taille
C x L.
Sinon il faudra je pense passer par des boucles, nan ?

Cordialement,
--
Trirème
Avatar
Trirème
Merci Daniel et MichDenis,

Y a pas à dire, c'est toujours le petit plus qui fait la différence et qui justifie de
passer faire un tour ici.

Le complément de réponse de Mich m'a incité à me poser la question complémentaire :
C'est en fait la question inverse (résolue), comment faire pour écrire le contenu de ma
table C x L (après quelques traitements) vers la plage initiale de taille L x C ?
Pourquoi pas essayer aussi la fonction Transpose() ?
Alors là je suis sur le c.. ! Ça marche aussi. La fonction Transpose() n'est-elle pas
qu'une fonction de feuille de calcul ?

' J'ai donc au final :
Infos = Application.Transpose(Range("Infos")) ' C x L <-- L x C
' Traitements
Range("Infos") = Application.Transpose(Infos) ' L x C <-- C x L

Cool,
Bon dimanche et merci encore,
Trirème

PS J'ai d'autres questions sur l'usage des tables, des listes... qui feront l'objet
d'autres fils.

c = Application.Transpose(Range("A1:C4"))

Pour transposer C vers la plage E10 ...
Range("E10").Resize(UBound(c, 1), UBound(c, 2)) = c



"Trirème" a écrit dans le message de news:

Bonsoir M'sieurs Dames,

En VBA, je cherche à faire concis pour affecter à une table les valeurs d'une plage tout
en transposant les données.
Y-a-t'il moyen, de la même façon que l'on écrit : Infos = Range("Infos")
de faire un truc du genre : Infos = Range("Infos").Transpose
ou bien Infos = Transpose(Range("Infos"))
(bien sûr j'ai essayé)

Ainsi, les données d'une plage de taille L x C seraient affectées à une table de taille
C x L.
Sinon il faudra je pense passer par des boucles, nan ?

Cordialement,