VBA le texte ne se sépare pas correctement avec SPLIT

  • Initiateur de la discussion Initiateur de la discussion fb62840
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

fb62840

XLDnaute Impliqué
Bonjour à toutes et à tous,

Voilà un problème qui m'étonne vraiment car il me semble bien que la macro qui s'exécute à l'ouverture du fichier devrait parvenir à séparer le texte contenu sur la feuille Base en colonne A en 2 colonnes sur la feuille Result le séparateur utilisé étant : " / "

Voici le code et le fichier en pièce-jointe.
Code:
Option Explicit

Private Sub Workbook_Open()
Dim tablo, i As Long, t As String, s
Base!.[A:A].Copy Result!.[A:B]
tablo = [Métiers]
For i = 1 To UBound(tablo)
  t = tablo(i, 1)
  If InStr(t, " / ") Then
    s = Split(t)
    tablo(i, 1) = Replace(t, " / " & s(2), "")
    tablo(i, 2) = Replace(t, s(0) & " / ", "")
  End If
Next
Result!.[A2:B2].Resize(UBound(tablo)) = tablo
End Sub

Merci beaucoup pour votre aide.
 
Re : VBA le texte ne se sépare pas correctement avec SPLIT

Bonjour,

déjà ceci ne fonctionne pas chez moi... erreur de compilation...
Code:
Base!.[A:A].Copy Result!.[A:B]
essaye peut être d'exécuter ton code pas à pas touche de fonction F8 dans l'éditeur vba...

bon après midi
@+
 
Re : VBA le texte ne se sépare pas correctement avec SPLIT

Bonjour,

déjà ceci ne fonctionne pas chez moi... erreur de compilation...
Code:
Base!.[A:A].Copy Result!.[A:B]
essaye peut être d'exécuter ton code pas à pas touche de fonction F8 dans l'éditeur vba...

bon après midi
@+

Effectivement cette rédaction est incorrecte

Voici comment je la corrige mais cela ne change rien je n'arrive toujours pas à exécuter le split correctement
Code:
Feuil1.[A:A].Copy Feuil2.[A:B]
 
Re : VBA le texte ne se sépare pas correctement avec SPLIT

Re,

comprends pas trop ton code, tu parles de séparateur " / "(espace slash espace) mais aucun séparateur n'indiqué dans ton "split" donc par défaut une espace....

Le code déposé doit donc être complètement faux.

En fait ce que je cherche à faire, c'est à balayer la colonne A, et lorsqu'il y a le caractère " / " (espace slash espace) alors je voudrais obtenir la séparation de ce qui se trouve avant et ce qui se trouve après le caractère " / " afin de le recopier sur l'autre feuille

Merci pour votre aide.
 
Re : VBA le texte ne se sépare pas correctement avec SPLIT

Re,

essaye peut être ceci, enfin si j'ai bien compris... pas sûr colonnes A et B identiques dans le fichier que tu as joint...
Code:
Option Explicit
Sub test()
Dim t() As Variant, s() As String, i As Integer
With Sheets("Base")
    t = .Range("A2", .Range("A65536").End(xlUp)).Value
End With
With Sheets("Result")
    For i = LBound(t) To UBound(t)
        s = Split(t(i, 1), " / ")
        .Range("A65536").End(xlUp)(2) = s(0)
        If UBound(s) = 1 Then .Range("B65536").End(xlUp)(2) = s(1)
    Next i
End With
End Sub
 
Dernière édition:
Re : VBA le texte ne se sépare pas correctement avec SPLIT

Bonjour à tous


Un autre essai...​



ROGER2327
#6534


Jeudi 26 Pédale 140 (Saint Pâle, mineur - fête Suprême Quarte)
30 Ventôse An CCXXI, 5,8049h - plantoir
2013-W12-3T13:55:54Z
 

Pièces jointes

Re : VBA le texte ne se sépare pas correctement avec SPLIT

Re,

essaye peut être ceci, enfin si j'ai bien compris... pas sûr colonnes A et B identiques dans le fichier que tu as joint...
Code:
Option Explicit
Sub test()
Dim t() As Variant, s() As String, i As Integer
With Sheets("Base")
    t = Range("A2", Range("A65536").End(xlUp))
End With
With Sheets("Result")
    For i = LBound(t) To UBound(t)
        s = Split(t(i, 1), " / ")
        .Range("A65536").End(xlUp)(2) = s(0)
        If UBound(s) = 1 Then .Range("B65536").End(xlUp)(2) = s(1)
    Next i
End With
End Sub

J'ai testé ce code mais à l'exécution j'ai une erreur de type "L'indice n'appartient pas à la sélection).
Elle est due au fait que parfois certaines cellules sur la feuille Base ne contiennent pas le caractère " / "
 
Re : VBA le texte ne se sépare pas correctement avec SPLIT

Re,

oui, normal, j'ai édité le code du post précédent, sin une autre version :
Code:
Sub test2()
Dim t() As Variant, s() As String, i As Integer
With Sheets("Base")
    t = .Range("A2", .Range("A65536").End(xlUp)).Value
    ReDim Preserve t(1 To Range("A65536").End(xlUp).Row - 1, 1 To 2)
End With
For i = LBound(t) To UBound(t)
    s = Split(t(i, 1), " / ")
    t(i, 1) = s(0)
    If UBound(s) = 1 Then t(i, 2) = s(1)
Next i
Sheets("Result").Range("A65536").End(xlUp)(2).Resize(UBound(t, 1), UBound(t, 2)) = t
End Sub

Edition bonjour Roger
 
Re : VBA le texte ne se sépare pas correctement avec SPLIT

Bonjour le fil, bonjour le forum,

Peut-être comme ça :

Code:
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim sp0 As String 'déclare la variable spo (SPlit(o))
Dim sp1 As String 'déclare la variable sp1 (SPlit(1))
Dim dest As Range 'déclare la variable dest (cellule de DESTination)


Sheets("Result").Range("A1").CurrentRegion.Offset(1, 0).Clear 'éfface les anciennes données
With Sheets("Base") 'prend en compte l'onglet "Base"
    dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 1 (=A)
    Set pl = .Range("A2:A" & dl) 'définit la plage pl
End With 'fin de la prise en compte de l'onglet "Base"
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    If Not cel.Find(" / ", , xlValues, xlPart) Is Nothing Then 'condition : si " / " existe dans la cellule
        sp0 = Split(cel.Value, " / ")(0) 'définit sp0
        sp1 = Split(cel.Value, " / ")(1) 'définit sp1
    Else 'sinon (condition 1)
        sp0 = cel.Value 'définit sp0
        sp1 = "" 'définit sp1
    End If 'fin de la condition
    Set dest = Sheets("Result").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination dest
    dest.Value = sp0 'récupère sp0 en colonne A de dest
    dest.Offset(0, 1).Value = sp1 'récupère sp1 en colonne B de dest
Next cel
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
33
Affichages
3 K
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
650
Réponses
5
Affichages
564
Réponses
2
Affichages
771
Réponses
3
Affichages
951
Réponses
3
Affichages
898
Retour