XL 2013 Extraction de caracteres avec creation de colones

sz-gsi

XLDnaute Nouveau
Bonjour,

Je cherche un moyen d'extraire des noms séparés par des \ et se trouvant dans une meme cellule . Pour chaque noms il faudrait creer une colone .

Ci dessous un exemple de ce que contient une cellule dans la colonne A :

Partages\Annexe\GU\DEJES\0-ALL ARCHIVES\ARCHIVE 2013-14\2012-2013 - sondages

Mon souhait serait de pouvoir séparer ce qui se trouve entre les \ tout en créant une colonne pour chaque extraction .
Ainsi on aurait dans la colonne B Partages
colonne C Annexe
colonne D GU

Je n'ai besoin d'extraire que les 3 premiers noms .

Merci d'avance !
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Sz-Gsi, bonjour le forum,

pour une seule donnée en A1 :

VB:
Sub Macro1()
Dim O As Worksheet
Dim J As Byte

Set O = Worksheets("Feuil1")
For J = 0 To 2
    O.Cells(1, J + 2).Value = Split(O.Cells(1, "A"), "\")(J)
Next J
End Sub

Pour plusieurs lignes dans la colonne A commençant en A1 :
Code:
Sub Macro2()
Dim O As Worksheet
Dim TV As Variant
Dim I As Integer
Dim J As Byte

Set O = Worksheets("Feuil1")
TV = O.Range("A1").CurrentRegion
For I = 1 To UBound(TV, 1)
    If UBound(Split(TV(I, 1), "\")) > 0 Then
        For J = 0 To 2
            O.Cells(I, J + 2).Value = Split(TV(I, 1), "\")(J)
        Next J
    End If
Next I
End Sub
 

CISCO

XLDnaute Barbatruc
Bonjour à tous, bonjour Robert et Pierrejean

Cf. en pièce jointe.

La formule dans C1 est compliquée pour que l'on puisse facilement la tirer (copier-coller) vers la droite sans avoir à la modifier à chaque fois, pour chaque nouvelle colonne.

Si tu ne veux que les 3 premiers "noms", tu ne la mets que dans 3 colonnes.

@ plus
 

Pièces jointes

  • Classeur1 sz.xlsx
    9.4 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Sz-gsi, Robert, PierreJean, Cisco,
En PJ un essai. C'est un cas typique de la fonction Split.
VB:
Sub test()
Taille = [A65000].End(3).Row
For i = 2 To Taille
    tablo = Split(Range("A" & i), "\")
    For N = 0 To UBound(tablo)
        Cells(i, N + 2) = tablo(N)
    Next N
Next i
End Sub
 

Pièces jointes

  • EssaiSplit.xlsm
    15 KB · Affichages: 2

patricktoulon

XLDnaute Barbatruc
bonjour
avec une toute petite fonction perso utilisable en vba ou formule

dans un module tu met
VB:
Option Explicit
Function partoffstring(cel As String, separator As String, Optional index As Long = 0)
    Dim T
    T = Split(cel, separator)
    If UBound(T) = 0 Then
        partoffstring = "Invalid Chaine!!)"
    Else
        If UBound(T) >= index - 1 Then partoffstring = T(index - 1) Else partoffstring = ""
    End If
End Function

exemple d'utilisation:
dans A2 il y a "blablabla\truc\bidule\machin"
en B2 tu mettra =SI($A2<>"";partoffstring($A2;"\";1);"")
en C2 tu mettra
=SI($A2<>"";partoffstring($A2;"\";2);"")
en D2 tu mettra =SI($A2<>"";partoffstring($A2;"\";3);"")

bien faire attention au "$" devant la colonne

ensuite tu étends la formule vers le bas jusqu’où tu veux sans te soucier de ce qu'il y a en "A"!!!

démonstration
demo3.gif


si il y en a 3 tu les aura
si il y en a que 2 tu aura que les deux
si il y en a pas tu aura invalid Chaine!!!

bien entendu si c'est vide tu aura rien même si il y a la formule en B:D
 

jmfmarques

XLDnaute Accro
Ah ... et tu échappes comment à cela, avec split ?

Pour mémoire et éviter de s'égarer "ailleurs" (et discuter d'autre chose) :
Je cherche un moyen d'extraire des noms séparés par des \ et se trouvant dans une meme cellule . Pour chaque noms il faudrait creer une colone .

Ci dessous un exemple de ce que contient une cellule dans la colonne A :


Partages\Annexe\GU\DEJES\0-ALL ARCHIVES\ARCHIVE 2013-14\2012-2013 - sondages

Mon souhait serait de pouvoir séparer ce qui se trouve entre les \ tout en créant une colonne pour chaque extraction .
Ainsi on aurait dans la colonne B Partages
colonne C Annexe
colonne D GU
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87