OVH Cloud OVH Cloud

Séparer texte selon le nombre d'éspace avant le texte

20 réponses
Avatar
Zorojunior
Bonjour,

pourriez vous SVP m'aider sur ce sujet ?
j'ai une colonne qui contient des données en texte mais pas le même type de données, (Classe thérapeutique / produit / fournisseurs / dosage) et pour distinguer chaque type il y a un nombre d’espace avant le texte Ex:
_infectiologie
__Amlodapine
___Sanofi
____comprimé
_____50 mg
"_" = espace

maintenant je veux renvoyer chaque types vers une colonne donc :
le texte après un espace vers la colonne B
le texte après deux espaces vers la colonne C
le texte apres trois espaces vers la colonne D


d'avance merci

10 réponses

1 2
Avatar
Michd
Bonjour,
Ce que j'ai compris de ta question,
A ) Dans la même colonne, une liste regroupée par 5 items espacés d'une ligne vide.
B ) Tu veux mettre ces données (5 items) sur une même ligne.
Adapte le nom de la feuille "Feuil1" et l'adresse de la plage où sont les données.
'-----------------------------------------------------------
Sub test()
Dim Rg As Range, A As Long, Compteur As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
Compteur = 1
For A = 1 To Rg.Rows.Count Step 6
Rg(Compteur).Offset(, 1) = Trim(Rg(A))
Rg(Compteur).Offset(, 2) = Trim(Rg(A).Offset(1))
Rg(Compteur).Offset(, 3) = Trim(Rg(A).Offset(2))
Rg(Compteur).Offset(, 4) = Trim(Rg(A).Offset(3))
Rg(Compteur).Offset(, 5) = Trim(Rg(A).Offset(4))
Compteur = Compteur + 1
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'-----------------------------------------------------------
MichD
Avatar
zorojunior
Le dimanche 20 Mai 2018 à 15:16 par Zorojunior :
Bonjour,
pourriez vous SVP m'aider sur ce sujet ?
j'ai une colonne qui contient des données en texte mais pas le
même type de données, (Classe thérapeutique / produit /
fournisseurs / dosage) et pour distinguer chaque type il y a un nombre
d’espace avant le texte Ex:
_infectiologie
__Amlodapine
___Sanofi
____comprimé
_____50 mg
"_" = espace
maintenant je veux renvoyer chaque types vers une colonne donc :
le texte après un espace vers la colonne B
le texte après deux espaces vers la colonne C
le texte apres trois espaces vers la colonne D
d'avance merci
Merci MichD
es ce possible que les items gardent la même ligne initiale ?
Avatar
Michd
Comme ceci :
'------------------------------------------
Sub test()
Dim Rg As Range, A As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
Compteur = 1
For A = 1 To Rg.Rows.Count Step 6
Rg(A).Offset(, 1) = Trim(Rg(A))
Rg(A).Offset(, 2) = Trim(Rg(A).Offset(1))
Rg(A).Offset(, 3) = Trim(Rg(A).Offset(2))
Rg(A).Offset(, 4) = Trim(Rg(A).Offset(3))
Rg(A).Offset(, 5) = Trim(Rg(A).Offset(4))
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'------------------------------------------
Avatar
zorojunior
Le lundi 21 Mai 2018 à 12:25 par Michd :
Comme ceci :
'------------------------------------------
Sub test()
Dim Rg As Range, A As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A" &
.Rows.Count).End(xlUp).Row)
End With
Compteur = 1
For A = 1 To Rg.Rows.Count Step 6
Rg(A).Offset(, 1) = Trim(Rg(A))
Rg(A).Offset(, 2) = Trim(Rg(A).Offset(1))
Rg(A).Offset(, 3) = Trim(Rg(A).Offset(2))
Rg(A).Offset(, 4) = Trim(Rg(A).Offset(3))
Rg(A).Offset(, 5) = Trim(Rg(A).Offset(4))
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'------------------------------------------
Ainsi la macro met les 06 items dans la même ligne,
comment je peut joindre un fichier excel example pour bien expliquer le but
d'avance merci
Avatar
Michd
Utilise le cite web "Cjoint.com". Tu vas obtenir une adresse que tu nous retournes ici.
MichD
Avatar
zorojunior
Le lundi 21 Mai 2018 à 13:13 par Michd :
Utilise le cite web "Cjoint.com". Tu vas obtenir une adresse que tu
nous retournes ici.
MichD
https://www.cjoint.com/c/HEvmwjAjOFE
j'espére que l'objectif est réalisable
great thank to you MichD
Avatar
Michd
Qu'est ce que tu veux, passer de la feuille "Initial" au résultat "Objectif final" ? Est-ce
suffisant?
As-tu besoin des feuilles "objectif 1-2", "Objectif 2-2" ?
MichD
Avatar
zorojunior
Le lundi 21 Mai 2018 à 15:42 par Michd :
Qu'est ce que tu veux, passer de la feuille "Initial" au
résultat "Objectif final" ? Est-ce
suffisant?
As-tu besoin des feuilles "objectif 1-2", "Objectif 2-2" ?
MichD
Oui passer de l'initial vers l'objectif finale,
objectif 1 et 2 c'était juste pour expliquer comment j'ai attérri,
le fichier de base contient 31 000 ligne,
l'objectif de cette exercice est d'exploiter le fichier en croisé dynamique.
Great thank to you for your precious help
Avatar
Michd
Même fichier au format .xls
https://www.cjoint.com/c/HEvtugSx81i
MichD
Avatar
Michd
Bonjour,
J'ai fait un petit fichier à partir du tien à titre d'exemple, format xlsm
https://www.cjoint.com/c/HEvtnfbQGoi
Attention, dans mon application, la feuille de "Résultat" s'appelle "Résultat" et non "objectif
final". En fait, tu peux lui donner le nom que tu désires... mais il faudra faire quelques
substitutions dans le code.
J'espère que les 31000 lignes respectent scrupuleusement la présentation de fichier exemple.
MichD
1 2