1 pièce(s) jointe(s)
Macro ou code VBA pour effacer des caracteres et aller a la ligne dans un meme cellule
Bonjour a tous les amis,
J'ai utilise la formule suivante que l'on m'a gentillement explique sur ce super site:
Code :
Code:
1 2 3 4
| Function remove_aprespointvirgule(Rng As Range)
Application.Volatile
remove_aprespointvirgule= Left(Rng.Value, InStr(Rng.Value, ";")-1)
End Function |
Qui me permet de supprimer tous les caractères après le ; (point virgule) dans toute ma colonne A.
A | B
Aer12 |Aer12;#17
Aer12 |Aer12;#17
Aer12 |Aer12;#17
All Program |All Program;#14
All Program |All Program;#14
All Program |All Program;#14
Mais en fait, je souhaiterai mettre en place une autre Macro ou en VBA pour faire quelque chose d'un peu plus complexe.
L’idée est de retirer tous les caractères inutile de la colonne E dans la colonne D.
Autrement dit de retirer les point virgules
les # ainsi que les chiffres entre ;#1;
Puis enfin de faire un retour a la ligne dans la même cellule.
Comme cela:
D |E
Aer12
Ber12
Ghi41 |Aer12;#1;Ber12;#2;Ghi41;#5
Aer12
Ber12 |Aer12;#1;Ber12;#2
Aer12
Ber12
Ghi41 |Aer12;#1;Ber12;#2;Ghi41;#5
Aer12
Ber12 |Aer12;#1;Ber12;#2
Aer12
Ber12
Ghi41 |Aer12;#1;Ber12;#2;Ghi41;#5
All Program
Aer12
Ber12
Ghi41 |All Program;#14;Aer12;#1;Ber12;#2;Ghi41;#5
All Program
Ber12
Ghi41 |All Program;#14;Ber12;#2;Ghi41;#5
J'ai mi le fichier Excel si ça peut aider.
N'hesiter pas a me dire si ma demande n'est pas claire.
Merci d'avance pour votre aide les amis.
Ciao
Ghis
[Toutes versions] Macro ou code VBA pour effacer des caracteres et aller a la ligne dans un meme cellule
Merci beaucoup BlueMonkey.
J'ai essaye ton code celui ci fonctionne bien
J'ai juste ajouter le caractere # en rouge car en fait ma cellule a mettre en forme est de la forme suivante:
D |E
Aer12
Ber12
Ghi41 |Aer12;#1;#Ber12;#2;#Ghi41;#5
Les deux seul problemes que j'ai;
-c'est que j'ai un caractère de saut ligne qui s'affiche dans ma colonne D qui ressemble a ça: [?]
- Puis en fait mon fichier fait près de 2000 lignes par conséquent la macro met au moins 1 minute pour mettre en forme toutes les cellules de la colonnes D.
Par conséquent est-il possible de passer par une function a la place d'une macro (Sub)?
Merci d'avance pour votre aide les amis
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Sub TransformeColEenColD()
Dim r As Range
Dim vals() As String
For Each r In Range("E1:E" & Range("E1").End(xlDown).Row)
vals = Split(r.Value, ";#")
Dim i As Integer
With r.Offset(0, -1)
.Value = ""
For i = 0 To UBound(vals) Step 2
.Value = IIf(i + 1 < UBound(vals), .Value & vals(i) & Chr$(10) & Chr$(13), .Value & vals(i))
Next i
End With
Next r
End Sub |