Bonsoir,
Je voudrais parvenir à faire à peu près la même chose pour traiter des données séparées par des tirets mais en utilisant des textboxs.
En effet, le code ci-dessous traite des données sur des feuilles. Soit en feuille "Source" les données à traiter, en colonne A des intitulées et en colonne B des données séparées par des tirets (-). Après exécution de la macro "SeparationEnLignes", en feuille "Cible" l'intitulé est repris en colonne A autant de fois qu’il y de valeurs séparées par des tirets et en colonne B les valeurs séparées sur chaque ligne de l'intitulé.
ex:sur la feuille Source en A1: Voiture et en B1: Peugeot-Renault-BMW
résultat sur la feuille Cible en A1:Voiture---->en B1: Peugeot, en A2:Voiture---->en B2: Renault, en A3:Voiture---->en B3:BMW, c'est ce que j'obtiens avec ce codeJe voudrais donc obtenir la même chose avec un userform, les données de la feuille Cible seront remplacées par TextBox1(colonne A=intitulé) et TetxBox2(colonne B=valeurs séparées par des tirets).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Option Explicit Sub SeparationEnLignes() Dim feuilleSource As Worksheet Dim feuilleCible As Worksheet Dim iSource, iCible, i As Integer Dim currentA, currentB As String Dim currentSplit() As String Set feuilleSource = Worksheets("Source") 'A modifier, la feuille contenant les données originales Set feuilleCible = Worksheets("Cible") 'A modifier, la feuille où l'on veut le résultat 'Initialisation des compteurs de lignes iSource = 1 iCible = 1 Do While feuilleSource.Cells(iSource, "A").Value <> "" 'Tant qu'il y a qq chose en colonne A currentA = feuilleSource.Cells(iSource, "A").Value currentB = feuilleSource.Cells(iSource, "B").Value 'On décompose la chaine par les virgules currentSplit = Split(currentB, "-") 'Pour chaque élément, on l'écrit dans la feuille cible For i = 0 To UBound(currentSplit) feuilleCible.Cells(iCible, "A").Value = currentA feuilleCible.Cells(iCible, "B").Value = LTrim(currentSplit(i)) 'En enlevant les espaces à gauche iCible = iCible + 1 Next i iSource = iSource + 1 Loop End Sub
En vous remerciant par avance.
Partager