Texte VBA en colonnes

Table des matières

Ce didacticiel vous montrera comment convertir une chaîne de texte dans une seule cellule en plusieurs colonnes à l'aide de la méthode Range TextToColumns dans VBA

Texte aux colonnes

Les Varier.TexteVersColonnes La méthode en VBA est un outil puissant pour nettoyer les données qui ont été importées à partir de fichiers texte ou csv par exemple.

Considérez la feuille de travail suivante.

Les données sont entrées dans Excel dans une seule colonne et sont séparées par des guillemets.

Vous pouvez utiliser la méthode Range TextToColumns pour séparer ces données en colonnes.

Syntaxe TextToColumns

expression.TexteVersColonnes (Destination, Type de données, TextQualifier, Délimiteur Consécutif, Languette, Point-virgule, Virgule, Espacer, Autre, AutreChar, FieldInfo, Séparateur décimal, Séparateur de milliers, À la traîneMoinsNombres)

Expression

Il s'agit de la plage de cellules que vous souhaitez diviser - par exemple : plage ("A1:A23").

Tous les arguments de la méthode TextToColumns sont facultatifs (ils sont entourés de crochets).

Destination

Où vous voulez que le résultat soit placé - souvent, vous remplacez les données et les divisez au même endroit.

Type de données

Le type d'analyse de texte que vous utilisez - il peut être soit xlDelimited (par défaut si omis), ou xlFixedWidth.

TextQualifier

Si vous avez des guillemets (simples ou doubles) autour de chaque champ du texte que vous divisez, vous devez indiquer s'ils sont simples ou doubles.

Délimiteur Conséquent

C'est soit vrai, soit faux et indique à VBA de considérer 2 des mêmes délimiteurs ensemble comme s'il s'agissait d'un seul délimiteur.

Languette

C'est soit Vrai de Faux, la valeur par défaut est Faux - cela indique à VBA que les données sont délimitées par une tabulation.

Point-virgule

C'est soitVrai de Faux, la valeur par défaut est Faux - cela indique à VBA que les données sont délimitées par un point-virgule.

Espacer

C'est soit Vrai de Faux, la valeur par défaut est Faux - cela indique à VBA que les données sont délimitées par un espace.

Autre

C'est soit Vrai de Faux, la valeur par défaut est Faux. Si vous définissez ceci sur True, alors l'argument suivant, AutreChar doit être précisé.

AutreChar

C'est le caractère par lequel le texte est séparé (c'est-à-dire : ou | par exemple).

FieldInfo

Il s'agit d'un tableau contenant des informations sur le type de données qui sont séparées. La première valeur du tableau indique le numéro de colonne dans les données et la deuxième valeur indique la constante que vous allez utiliser pour décrire le type de données dont vous avez besoin.

Un exemple de pour 5 colonnes avec des types de données de texte, de nombres et de dates pourrait être :

Tableau(Tableau(1, xlFormatTexte), Tableau(2, xlFormatTexte), tableau(3, xlFormatGénéral), tableau(4, xlFormatGénéral), tableau(5, xlMDYFormat))

Une autre façon de le présenter est :

Tableau(Tableau(1, 2), Tableau(2, 2), Tableau(3, 1), Tableau(4, 1), Tableau(5, 3))

Les nombres dans la deuxième colonne sont les valeurs des constantes où la constante xlTextFormat a une valeur de 2, le xlGeneralFormat (par défaut) a une valeur de 1 et le xlMDYFormat a une valeur de 3.

Séparateur décimal

Vous pouvez spécifier le séparateur décimal que VBA doit utiliser s'il y a des nombres dans les données. S'il est omis, il utilisera le paramètre système, qui est généralement un point.

Séparateur de milliers

Vous pouvez spécifier le séparateur de milliers que VBA doit utiliser s'il y a des nombres dans les données. S'il est omis, il utilisera le paramètre système, qui est généralement une virgule.

À la traîneMoinsNombres

Cet argument est en grande partie pour la compatibilité des données générées à partir de systèmes plus anciens où un signe moins était souvent après le nombre et pas avant. Vous devez définir ce paramètre sur True si les nombres négatifs ont le signe moins derrière eux. Le défaut est faux.

Conversion de texte en colonnes

La procédure suivante convertira les données Excel ci-dessus en colonnes.

12345678910111213141516 Sous TextToCol1()Plage("A1:A25").TextToColumns _Destination :=Plage("A1:A25"),Type de données : =xlDélimité, _TextQualifier :=xlDoubleQuote, _Délimiteur Consécutif : = Vrai, _Tabulation :=Faux, _Point-virgule :=Faux, _Virgule : = Faux,Espace :=Vrai, _Autre :=Faux, _FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _DecimalSeparator:="." , _Séparateur de milliers : = ",", _TrailingMinusNumbers:=TrueFin du sous-marin

Dans la procédure ci-dessus, nous avons rempli tous les paramètres. Cependant, de nombreux paramètres sont définis sur false ou sur le paramètre par défaut et ne sont pas nécessaires. Une version plus propre de la procédure ci-dessus est présentée ci-dessous. Vous devez utiliser les noms de paramètres pour indiquer quels paramètres nous utilisons.

1234567 Sous TextToCol2()Plage("A1:A25").TextToColumns _Type de données : =xlDélimité, _TextQualifier :=xlDoubleQuote, _Délimiteur Consécutif : = Vrai, _Espace : = vrai,Fin du sous-marin

Il n'y a que 4 paramètres qui sont réellement requis - les données sont délimitées par un guillemet double, vous voulez que les guillemets consécutifs soient traités comme un seul et les données sont séparées par un espace !

Pour une ligne de code encore plus rapide, nous pourrions omettre les noms des paramètres, mais nous aurions alors besoin de mettre des virgules pour enregistrer la place du paramètre. Vous n'avez qu'à renseigner le dernier paramètre que vous utilisez - dans ce cas l'espace qui sépare les données qui est le 8ème paramètre.

123 Sous TexteVersCol3()Range("A1:A25").TextToColumns , xlDelimited, xlDoubleQuote, True, , , , TrueFin du sous-marin

Une fois que vous avez exécuté l'une des procédures ci-dessus, les données seront séparées selon le graphique ci-dessous.

wave wave wave wave wave