Question simple pour utiliser un séparateur de chaines de caractères

Bonjour,

je me suis plusieurs fois demandé quelle était la démarche à suivre pour séparer des chaînes de caractères dans des colonnes en supprimant le caractère séparateur

ex: j'ai un fichier csv avec comme séparateur le caractère ";" et je souhaite faire disparaître ce caractère tout en séparant les chaînes de caractères précédente et suivante dans deux colonnes distinctes

Je ne suis pas certain d'avoir bien compris votre question.
Dans l'exemple ci-dessous, la macro du fichier separateur.xlsm va convertir les ";" du fichier Classeur1.csv en espaces de tabulation. Vous pouvez mettre le fichier CSV où vous voulez. La macro va sauvegarder le fichier tab.csv dans le dossier contenant Classeur1.csv avec la tabulation comme séparateur. Vous pourrez voir le résultat avec le bloc-notes.

10separateur.xlsm (21.99 Ko)
7classeur1.csv (280.00 Octets)

Edit : on peut mettre un espace de tabulation à la place des ";", mais aussi autre chose, voire rien du tout.

Bonjour à tous,

A tester :

Sub TestEscamoterUnSeparateurDeChampCsv()

Dim RepertoireSauvegarde As String

    RepertoireSauvegarde = "D:\XXXX"
    RemplacerLesPartiesDeTextes RepertoireSauvegarde, "Essai texte.csv", "Essai texte2.csv", 3

 End Sub

Sub EscamoterUnSeparateurDeChampCsv(RepertoireFichier As String, NomFichier As String, NouveauFichier As String, ByVal PositionPVirgule As Integer)

Dim I As Integer, NbPointVirgule As Integer
Dim InputData As String, ContenuLigne As String
Dim NbPointVirgule As Integer

Dim fs As Object, f As Object

        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.CreateTextFile(RepertoireFichier & "\" & NouveauFichier, True)

        Open RepertoireFichier & "\" & NomFichier For Input As #1
        Do While Not EOF(1)

           NbPointVirgule = 0
           ContenuLigne = ""
           Line Input #1, InputData

           For I = 1 To Len(InputData)
               Select Case Mid(InputData, I, 1)
                      Case ";"
                           NbPointVirgule = NbPointVirgule + 1
                           If NbPointVirgule = PositionPVirgule Then
                              ContenuLigne = ContenuLigne & " "
                           Else
                              ContenuLigne = ContenuLigne & Mid(InputData, I, 1)

                           End If
                      Case Else
                           ContenuLigne = ContenuLigne & Mid(InputData, I, 1)
              End Select
           Next I

           Debug.Print NbPointVirgule & " : " & InputData & " ,  " & ContenuLigne

           f.write ContenuLigne & vbNewLine
        Loop
        Close #1
        f.Close

        Set f = Nothing
        Set fs = Nothing

End Sub
Rechercher des sujets similaires à "question simple utiliser separateur chaines caracteres"