Table des matières
Tout en travaillant avec VBA Dans Excel, nous devons souvent concaténer une chaîne (s) et une variable (s) dans une feuille de calcul. La concaténation d'une chaîne (s) et d'une variable (s) est largement utilisée dans presque tous les secteurs de notre travail, depuis le résumé des résultats des étudiants jusqu'à l'analyse d'une entreprise complexe. Dans cet article, je vous montrerai comment concaténer une chaîne (s) et une variable (s) dans une feuille de calcul à l'aide de la fonction VBA Je vais expliquer les choses avec des exemples et des illustrations appropriés.
Concaténation de chaîne(s) et de variable(s) dans Excel VBA (vue rapide)
Télécharger le cahier d'exercices
Téléchargez ce cahier d'exercices pour vous entraîner pendant que vous lisez cet article.
Concaténation de chaînes et de variables.xlsmConcaténation de chaîne(s) et de variable(s) dans Excel VBA (analyse pas à pas)
Tout d'abord, voyons comment nous pouvons concaténer une chaîne de caractères (s) et une variable (s) en VBA étape par étape.
⧪ Concaténation de chaîne(s) :
Pour concaténer deux ou plusieurs chaînes de caractères en VBA vous pouvez utiliser les deux méthodes arithmétiques. addition (+) et le symbole esperluette (& ; ) symbole.
Par exemple, pour concaténer les chaînes de caractères "Great Expectations" et "Un conte de deux villes" avec un virgule vous pouvez l'utiliser :
NouvelleChaîne = "Les Grandes Espérances" + ", " + "Un Conte de deux villes".
Ou,
Nouvelle_String = "Great Expectations" & ; ", " & ; "A Tale of Two Cities" (Un conte de deux villes)
Exécutez l'un des codes ci-dessus. Il affichera la sortie concaténée, Grandes espérances, Un conte de deux villes .
⧪ Concaténation de variables (s)
Si toutes les variables contiennent des valeurs de type chaîne, vous pouvez utiliser les deux méthodes arithmétiques suivantes addition (+) et le symbole esperluette (& ;) symbole.
Mais si ce n'est pas le cas, alors vous pouvez utiliser uniquement la fonction esperluette (& ;) pour concaténer.
Par exemple, nous avons deux variables, A et B .
A contient une chaîne de caractères, "Un conte de deux villes" et B contient une autre chaîne de caractères, "Les quarante règles de l'amour" .
Vous pouvez utiliser à la fois le addition (+) et esperluette (& ;) pour les concaténer.
A = "Un conte de deux villes" B = "Les quarante règles de l'amour" Nouvelle_String = A + ", " + B
Ou,
A = "Un conte de deux villes" B = "Les quarante règles de l'amour" Nouvelle_String = A & ; ", " & ; B
Dans les deux cas, ils renverront la chaîne concaténée.
Mais si A est une chaîne de caractères ( " Un conte de deux villes " ) et B est un nombre entier ( 27 ), vous devez utiliser l'option esperluette (& ;) pour concaténer.
A = "Un conte de deux villes" B = 27 Nouvelle_String = A & ; ", " & ; B
Il retournera la sortie concaténée.
Exemples de concaténation de chaînes de caractères et de variables dans Excel VBA (impliquant une macro, un UDF et un formulaire utilisateur)
Nous avons appris à concaténer une chaîne (s) et une variable (s) avec VBA Cette fois-ci, nous allons explorer quelques exemples impliquant la concaténation de chaînes de caractères (s) et de variables (s) à l'aide de la fonction VBA .
Exemple 1 : Développement d'une macro pour concaténer une (des) chaîne(s) et une (des) variable(s) dans Excel VBA
Nous avons appris à concaténer des chaînes de caractères et des variables avec VBA Cette fois, nous allons développer un Macro pour concaténer les chaînes de caractères et les variables de plusieurs colonnes dans une feuille de calcul.
Ici, nous avons un ensemble de données avec noms de livres , auteurs et prix de quelques livres d'une librairie appelée Martin Bookstore.
Développons un Macro pour concaténer des colonnes 1, 2, et 3 de l'ensemble des données B4:D14 en cellule F4 .
Le site VBA Le code sera :
⧭ Code VBA :
Sub Concatenate_String_and_Variable() Dim Rng As Range Set Rng = Range("B4:D14") Dim Column_Numbers() As Variant Column_Numbers = Array(1, 2, 3) Separator = ", " Output_Cell = "F4" For i = 1 To Rng.Rows.Count Output = "" For j = LBound(Column_Numbers) To UBound(Column_Number If j UBound(Column_Numbers) Then Output = Output & ; Rng.Cells(i, Int(Column_Numbers(j)))& ; Separator Else Output = Output & ; Rng.Cells(i, Int(Column_Numbers(j))) End If Next j Range(Output_Cell).Cells(i, 1) = Output Next i End Sub
⧭ Sortie :
Exécutez ce code. Vous obtiendrez le 3 colonnes concaténées dans l'intervalle F4:F14.
Lire la suite : Macro pour concaténer plusieurs colonnes dans Excel (avec UDF et UserForm)
Exemple 2 : création d'une fonction définie par l'utilisateur pour concaténer une chaîne de caractères (s) et une variable (s) dans Excel VBA
Nous avons appris à développer une Macro pour concaténer plusieurs colonnes d'un ensemble de données. Cette fois, nous allons créer un fichier Fonction définie par l'utilisateur pour concaténer des chaînes de caractères ou des variables dans Excel.
L'intégralité VBA Le code sera :
⧭ Code VBA :
Function ConcatenateValues(Value1, Value2, Separator) If VarType(Value1) 8204 And VarType(Value2) 8204 Then ConcatenateValues = Value1 & ; Separator & ; Value2 ElseIf VarType(Value1) = 8204 And VarType(Value2) 8204 Then Dim Output1() As Variant ReDim Output1(Value1.Rows.Count - 1, 0) For i = 1 To Value1.Rows.Count Output1(i - 1, 0) = Value1.Cells(i, 1) & ;Separator & ; Value2 Next i ConcatenateValues = Output1 ElseIf VarType(Value1) = 8204 And VarType(Value2) = 8204 Then Dim Output2() As Variant ReDim Output2(Value1.Rows.Count - 1, 0) For i = 1 To Value1.Rows.Count Output2(i - 1, 0) = Value1.Cells(i, 1) & ; Separator & ; Value2.Cells(i, 1) Next i ConcatenateValues = Output2 End If End Function
⧭ Sortie :
Sélectionnez la colonne où vous voulez concaténer la plage et entrez cette formule :
=ConcaténateValues("Elle", "H. Rider Haggard",", ")
Il reviendra Elle, H. Rider Haggard comme sortie.
Encore une fois, entrez la formule :
=ConcaténateValues(B4:B14,30,", ")
[ Formule Array N'oubliez donc pas d'appuyer sur CTRL + SHIFT + ENTER à moins que vous ne soyez dans Office 365 .]
Il va concaténer 30 avec toutes les valeurs de l'intervalle B4:B14 .
Enfin, entrez :
=ConcaténateValues(B4:B14,C4:C14,", ")
[Encore Formule Array N'oubliez donc pas d'appuyer sur CTRL + SHIFT + ENTER à moins que vous ne soyez dans Office 365 .]
Il va concaténer toutes les valeurs de l'intervalle B4:B14 avec ceux de C4:C14 .
Lire la suite : Comment concaténer dans Excel (3 façons adaptées)
Lectures similaires :
- Comment combiner le texte de deux ou plusieurs cellules en une seule cellule dans Excel (5 méthodes)
- Combiner des lignes dans une seule cellule dans Excel
- Concaténation de nombres dans Excel (4 formules rapides)
- Combiner du texte dans Excel (8 méthodes efficaces)
- Comment concaténer les apostrophes dans Excel (6 façons simples)
Exemple 3 : Développement d'un formulaire utilisateur pour concaténer une (des) chaîne(s) et une (des) variable(s) dans une feuille de calcul différente en Excel VBA.
Nous avons appris à développer une Macro et un Fonction définie par l'utilisateur pour concaténer des chaînes de caractères et des valeurs. Enfin, nous développerons un fichier Formulaire utilisateur pour concaténer des chaînes de caractères et des valeurs à l'emplacement souhaité de la feuille de calcul désirée.
⧪ Étape 1 : Insertion du formulaire utilisateur
Allez à la Insérer> ; Formulaire utilisateur dans l'option VBA pour insérer une nouvelle Formulaire utilisateur .
⧪ Étape 2 : glisser des outils vers le formulaire utilisateur
A Formulaire utilisateur appelé Formulaire d'utilisateur 1 sera ouvert, ainsi qu'un Boîte à outils appelé Contrôle .
Déplacez votre souris sur le e et faites glisser 2 ListBoxes, 5 TextBoxes, 7 Labels et 1 CommanButtons dans le UserForm. .
Modifier l'affichage des Étiquettes comme indiqué sur la figure.
De même, modifiez l'affichage de l'écran Bouton de commande à OK .
⧪ Étape 3 : Écriture du code pour TextBox1
Double-cliquez sur TextBox1 . A Sous-procédure privée appelé TextBox1_Change s'ouvrira et vous pourrez y entrer le code suivant.
Private Sub TextBox1_Change() On Error GoTo Task Range(UserForm1.TextBox1.Text).Select UserForm1.ListBox1.Clear For i = 1 To Range(UserForm1.TextBox1.Text).Columns.Count UserForm1.ListBox1.AddItem Range(UserForm1.TextBox1.Text).Cells(1, i) Next i Exit Sub Task : x = 5 End Sub
⧪ Étape 4 : Écriture du code pour TextBox3
De même, double-cliquez sur TextBox3 . un autre Sous-procédure privée appelé TextBox3_Change s'ouvrira et vous pourrez y entrer le code suivant.
Private Sub TextBox3_Change() On Error GoTo Task Starting_Cell = UserForm1.TextBox3.Text For i = 1 To Len(Starting_Cell) If Asc(Mid(Starting_Cell, i, 1))>= 48 And Asc(Mid(Starting_Cell, i, 1)) <= 57 Then Col = Left(Starting_Cell, i - 1) Row = Right(Starting_Cell, Len(Starting_Cell) - i + 1) End_Range = Col + Right(Str(Int(Row) +Range(UserForm1.TextBox1.Text).Rows.Count - 1), Len(Str(Int(Row) + 10)) - 1) Set Rng = Range(Starting_Cell + " :" + End_Range) Rng.Select Exit For End If Next i Rng.Cells(1, 1) = UserForm1.TextBox4.Text Exit Sub Task : x = 5 End Sub
⧪ Étape 5 : Écriture du code pour TextBox4
Aussi, double-cliquez sur TextBox3 . un autre Sous-procédure privée appelé TextBox3_Change s'ouvrira et vous pourrez y entrer le code suivant.
Private Sub TextBox4_Change() If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub
⧪ Étape 6 : Écriture du code de ListBox2
Ensuite, double-cliquez sur ListBox2 Lorsque le Sous-procédure privée appelé ListBox2_Click s'ouvre, entrez ce code là.
Private Sub ListBox2_Click() Reserved_Address = Selection.Address For i = 0 To UserForm1.ListBox2.ListCount - 1 If UserForm1.ListBox2.Selected(i) = True Then Worksheets(UserForm1.ListBox2.List(i)).Activate Range(Reserved_Address).Select Exit For End If Next i If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End Sub
⧪ Étape 7 : Écriture du code pour CommanButton1
Aussi, double-cliquez sur Bouton de commande 1 Après le Sous-procédure privée appelé CommandButton1_Change s'ouvre, insérez-y le code suivant.
Private Sub CommandButton1_Click() On Error GoTo Message Dim Rng As Range Set Rng = Worksheets(UserForm1.TextBox5.Text).Range(UserForm1.TextBox1.Text) Dim Column_Numbers() As Variant Count = 0 For i = 0 To UserForm1.ListBox1.ListCount - 1 If UserForm1.ListBox1.Selected(i) = True Then ReDim Preserve Column_Numbers(Count) Column_Numbers(Count) = i + 1 Count = Count + 1End If Next i Separator = UserForm1.TextBox2.Text Output_Cell = UserForm1.TextBox3.Text For i = 0 To UserForm1.ListBox2.ListCount-1 If UserForm1.ListBox2.Selected(i) = True Then Sheet_Name = UserForm1.ListBox2.List(i) Exit For End If Next i Worksheets(Sheet_Name).Range(Output_Cell).Cells(1, 1) = UserForm1.TextBox4.Text For i = 2 To Rng.Rows.Count Output = "" For j= LBound(Column_Numbers) To UBound(Column_Numbers) If j UBound(Column_Numbers) Then Output = Output & ; Rng.Cells(i, Int(Column_Numbers(j)) & ; Separator Else Output = Output & ; Rng.Cells(i, Int(Column_Numbers(j)) End If Next j Worksheets(Sheet_Name).Range(Output_Cell).Cells(i, 1) = Output Next i Unload UserForm1 Exit Sub Message :MsgBox "Choisissez toutes les options correctement.", vbExclamation End Sub
⧪ Étape 7 : Écriture du code pour l'exécution du UserForm
Voici la dernière étape. Insérez un nouveau Module de la VBA et insérez le code suivant.
Sub Run_UserForm() UserForm1.Caption = "Concaténate Values" UserForm1.TextBox1.Text = Selection.Address UserForm1.TextBox5.Text = ActiveSheet.Name UserForm1.ListBox1.ListStyle = fmListStyleOption UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle UserForm1.ListBox1.MultiSelect = fmMultiSelectMulti UserForm1.ListBox1.Clear For i = 1 To Selection.Columns.Count UserForm1.ListBox1.AddItemSelection.Cells(1, i) Next i UserForm1.ListBox2.ListStyle = fmListStyleOption UserForm1.ListBox2.BorderStyle = fmBorderStyleSingle For i = 1 To Sheets.Count UserForm1.ListBox2.AddItem Sheets(i).Name Next i Load UserForm1 UserForm1.Show End Sub
⧪ Étape 8 : Exécution du formulaire d'utilisateur
Votre Formulaire utilisateur Pour l'exécuter, sélectionnez l'ensemble de données dans la feuille de calcul (y compris l'icône de l'ordinateur). En-têtes ) et exécutez le Macro appelé Exécuter_Formulaire d'utilisateur .
Le site Formulaire utilisateur se chargera avec toutes les options. L'adresse de la plage sélectionnée s'affichera sur TextBox1 ( B3:D4 Si vous le souhaitez, vous pouvez le modifier. La plage sélectionnée dans la feuille de calcul sera modifiée.
Sélectionnez les colonnes que vous voulez concaténer à partir de l'écran Colonnes à concaténer ListBox. Ici, j'ai sélectionné Nom du livre et Prix .
Saisissez le Séparateur Ici, j'ai entré un virgule ( , ).
Sélectionnez le nom de la feuille de calcul dans laquelle vous souhaitez placer la plage concaténée dans la liste des feuilles de calcul. Concaténés dans Ici, j'ai entré Feuille 3 .
(Dès que vous sélectionnez la feuille, elle sera activée, même si ce n'est pas la feuille active).
Ensuite, insérez le Emplacement de sortie C'est la référence de la première cellule de la plage concaténée. Ici j'ai mis B3 .
(Le moment où vous entrez dans le Emplacement de sortie la gamme de sortie sera sélectionnée).
Et enfin, saisissez le nom du En-tête de sortie (En-tête de la plage de sortie). Ici j'ai mis Gamme concaténée .
(Le moment où vous mettez le En-tête de sortie l'en-tête de la colonne de sortie sera défini).
Cliquez sur OK Vous obtiendrez le résultat souhaité à l'endroit souhaité.
Lire la suite : Comment concaténer une chaîne et un nombre entier à l'aide de VBA ?
Conclusion
Voici donc quelques exemples dans lesquels vous pouvez utiliser Excel VBA pour concaténer des chaînes de caractères et des variables. J'espère que les exemples ont été clairs pour vous. Vous avez des questions ? N'hésitez pas à nous les poser. Et n'oubliez pas de visiter notre site ExcelWIKI pour plus d'articles et de mises à jour.