Finalement, j'essaie d'écrire une plage dans un fichier texte. Lorsque j'obtiens la valeur de la plage, elle renvoie un tableau de variantes 2d. Cependant, si j'essaie de le passer à la fonction de conversion, cela me donne une erreur d'incompatibilité de type.Essayer de convertir un tableau variant en chaîne délimitée et obtenir toujours une incompatibilité de type
Le code est:
Dim Data As String
Set ts = fso.CreateTextFile("testfile.txt", True)
Data = ArrayToDelimitedString(wksMyWorkSheet.Range("rngMyRange").Value)
ts.Write (Data)
ts.Close
Public Function ArrayToDelimitedString(variantArray() As Variant) As String
Dim delimitedString As String, index As Integer
For index = 1 To UBound(variantArray(1))
delimitedString = delimitedString & CStr(variantArray(1, index)) & ","
Next
ArrayToDelimitedString = Left(delimitedString, Len(delimitedString) - 1)
End Function
Je me demande pourquoi le .Value retourne un tableau 2d et pourquoi est-il me donner cette erreur de décalage.
wksMyWorkSheet.Range ("rngMyRange"). Valeur retourne un tableau 3D (une variante contenant des objets Variant). Quel type de plage utilisez-vous? Une rangée? Une colonne? une zone? –
La plage est une rangée. Est-ce un tableau 3D? Lorsque je parcours le code, les sections locales montrent qu'il s'agit d'une variante/variante (1 à 1, 1 à 7). Désolé, je n'utilise VBA que depuis un mois, donc je ne le connais pas trop. – rcell
Eh bien, la méthode Range renvoie toujours un tableau 3D. Si vous essayez d'utiliser la méthode Transpose avec le tableau 3D, il va transposer votre matrice d'éléments (ce qui n'est pas ce dont vous aviez besoin). Mais pour des lignes ou des colonnes uniques, le type de données sera déplacé de Variant/Variant (1 à 1, 1 à 7) To Variant/String. –