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?
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
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