Envoyé par
Ben_L
Bonjour,
TextToColumns est une méthode de l'objet Range. Comme vous l'avez compris, cette méthode vient modifier directement la valeur de la cellule et transforme une chaîne de caractères en un type de données choisi par l'utilisateur.
TextToColumns permet entre autre de transformer des fichiers texte en fichiers Excel. Par exemple un fichier CSV peut être ouvert directement dans Excel, qui interprète nativement chaque ligne du fichier texte comme le contenu d'une cellule de la colonne A.
L'application de TextToColumns à cette colonne A permet alors à Excel de transformer le contenu texte de la colonne A en un ensemble de valeur (qui peuvent être numériques, textuelles ou dates) réparties sur les colonnes A, B, C etc.
Pour transformer une chaîne de caractères en une série de cellules Excel, la fonction doit savoir comment est formaté le texte initial. C'est le rôle de l'argument DataType.
Pour reprendre mon exemple d'un fichier CSV, il s'agit généralement de texte de longueur variable délimité par des points-virgules (ou un autre séparateur selon le format exact). On utilisera alors xlDelimited (en fournissant en plus le caractère qui sert de délimiteur).
Mais on peut également imaginé du texte constitué d'un ensemble de valeurs numériques qui sont toutes écrites sur 10 caractères exactement. Dans ce cas, on utilisera l'argument xlFixedWidth pour préciser à Excel quelle façon il doit interpréter les chaînes de caractères qu'on lui fournit (et normalement, on donne aussi à Excel la longueur de chaque valeur textuelle).
Ce que j'ai écrit ci-dessus n'est qu'une explication générique.
Dans le cas qui vous intéresse, on utilise TextToColumns sur une cellule qui ne contient qu'une seule valeur. Utiliser xlFixedWidth ou xlDelimited est sans impact, et il n'est même pas nécessaire de préciser à Excel le 2ème argument (à savoir la longueur de chaque élément ou le délimiteur à utiliser). Excel va parser l'intégralité du contenu de la cellule et essayer de l'interpréter comme une unique valeur.
Comme j'ai essayé de le dire maladroitement dans mon texte ci-dessus, TextToColumns prend une chaîne de caractère et essaie de la transformer en une série de valeurs. Ce sont ces différentes valeurs qui correspondent aux "colonnes" de la documentation Microsoft.
Prenons le cas d'un texte délimité par des virgules : «123,14/10/2020,iVBAveADream»
Excel va convertir ce texte en 3 valeurs, c'est-à-dire 3 colonnes.
La première (numérotée 0) doit être interprétée comme un nombre, la deuxième (numérotée 1) doit être interprétée comme une date, et la dernière (numérotée 2) doit être interprétée comme une chaîne de caractère.
L'argument FieldInfo permet d'indiquer tout cela à Excel.
Dans le cas qui vous intéresse, la cellule à convertir ne contient qu'une seule valeur. Il n'y a donc qu'un seul format de colonne à spécifier : celui de la colonne '0'. Et ce format est une date, écrite sous la forme Jour Mois Année (on utilise donc xlDMYFormat pour l'indiquer à Excel).
Pour finir, il peut être intéressant de vous renseigner sur la fonction DateSerial. Elle fonctionne assez différemment de TextToColumn et chacune a donc ces avantages et inconvénients.
N'hésitez à échanger sur le sujet avec d'autres membres du forums, qui pourront vous donner un point de vue différent du mien.
Cdt
Partager