Macro séparation cellules saut de ligne

Bonjour à tous!

Je vous joint un fichier test pour ma demande. Je n'ai pas le droit de vous donner mon vrai fichier de travail car c'est confidentielle donc j'espère que je pourrais transférer la macro.

Mon souci est le suivent :

Je fais des extractions de données d'une application. Parmi ses données il y a une colonne qui donne des noms de visiteurs. Lorsqu'il y a plus d'un visiteur l'export affiche ses visiteur avec un saut de ligne :

ligne 1 : liste des visiteurs

ligne 2 : A

B

ligne 3 : C

ligne 4 : A

B

D

Cet affichage est problématique pour exploiter le fichier. J'aimerai avec une macro (qui me permettrait d'automatiser la démarche en effet je réalise souvent des exportations et je copie colle les nouvelles données sur les anciennes) pouvoir séparer sur la même feuille excel les noms des visiteurs (1 nom par colonnes).

Je vous joint un fichier avec 2 feuilles. 1 avec le fichier que j'ai 1 avec le fichier que je voudrais. Pouvez vous écrire la macro sur ce fichier?

36forum-excel.xlsx (8.10 Ko)

Je ne sais pas si je suis bien clair! N'hésitez pas à me poser des questions au cas ou je ne suis pas assez clair.

Par avance merci pour votre aide!

Bonne journée

Sébastien LAUGIER

Bonjour,

Voici une code qui devrait convenir (en tous cas, il marche sur mon ordi) :

Sub Visiteur()

Dim DLigne, DColonne, NbLoop As Integer
Dim Visiteurs, Personne As String
Dim Sortie As Boolean

DLigne = Cells(Rows.Count, 1).End(xlUp).Row

For Ligne = 2 To DLigne

    Visiteurs = Cells(Ligne, 1).Value
    Sortie = False
    NbLoop = 0

    If InStr(Visiteurs, Chr(10)) Then       'Vérifie qu'il y a 1 tabulation Chr(10) dans Visiteurs (on peut aussi utiliser If Visiteurs Like "*" & Chr(10) & "*" Then )

        Do While Sortie = False

            If InStr(Visiteurs, Chr(10)) <> 0 Then

                NbLoop = NbLoop + 1
                Personne = Left(Visiteurs, InStr(Visiteurs, Chr(10)) - 1)

                If NbLoop = 1 Then
                    Cells(Ligne, 1).Value = Personne
                Else
                    DColonne = Cells(Ligne, Columns.Count).End(xlToLeft).Column
                    Cells(Ligne, DColonne + 1).Value = Personne
                End If

                Visiteurs = Right(Visiteurs, Len(Visiteurs) - InStr(Visiteurs, Chr(10)))

            Else
                DColonne = Cells(Ligne, Columns.Count).End(xlToLeft).Column
                Cells(Ligne, DColonne + 1).Value = Visiteurs
                Sortie = True
            End If

        Loop

    End If

Next
End Sub

Je vous l'ai mis dans votre fichier, vous pouvez le tester sur votre 1ère page.

Est-ce que ça vous convient?

Cindy

68forum-excel.xlsm (15.01 Ko)

Bonjour,

Merci beaucoup Cindy!!! Super efficace!! Je ne suis pas très bon en macro donc j'ai mit un peu de temps à adapter ta macro à mon vrai fichier mais j'ai réussi! super efficace!!!

Bonne continuation! A plus!!

De rien, bonne continuation à toi aussi !

N'oublie pas de valider ma réponse pour clôturer le sujet

Cindy

Rechercher des sujets similaires à "macro separation saut ligne"