Transposer des données

Comment en VBA affecter à une table les valeurs d'une plage tout en transposant les données ? Ainsi, les données d'une plage de taille L x C seraient affectées à une table de taille C x L.

c = Application.Transpose(Range("A1:C4"))
Pour transposer C vers la plage E10 ...
Range("E10").Resize(UBound(c, 1), UBound(c, 2)) = c

Auteur :

Mots clefs associés à cette page : , , , , ,

Fonction renvoyant un vecteur

quelques commentaires pour retourner un vecteur à partir d'une fonction VBA

Exemple de fonction:

Public Function Valeurs_Uniques(Sel1 As Range) As Variant
Dim Tableau() As Variant
Dim I As Integer
Dim J As Integer
Dim Deja As Boolean

For I = 1 To Sel1.Rows.Count
If Sel1(I) <> "" Then
Deja = False
For J = 1 To UBound(Tableau)
If Tableau(J) = Sel1(I) Then
Deja = True
Exit For
End If
Next J
If Not Deja Then
ReDim Preserve Tableau(UBound(Tableau) + 1)
Tableau(UBound(Tableau)) = Sel1(I)
End If
End If
Next I
Valeurs_Uniques = Tableau
end function

Cette fonction renvoie un vecteur contenant que les valeurs uniques dans les cellules sélectionnées.
Par défaut ce vecteur est horizontal.

Pour renvoyer un vecteur vertical, il faut utiliser l'expression suivante:

Valeurs_Uniques = Application.Transpose(Tableau)

T Bertrand