Fragmenter une colonne en plusieurs

Bonjour à tous,

Je me suis inscrite sur ce forum car je n'ai pas trouvé de réponse qui puisse résoudre mon problème sur lequel je me casse les dents...

Il s'agit d'un export en csv (d'une application web d'un client). Les cellules de la colonne G compilent des liens vers la même application photos.

Le problème est qu'il y a 4 ou 5 liens dans la même cellule, sans séparateur, ni espace, ni retour chariot.

Je ne parviens pas à fragmenter cette colonne pour que chaque lien soit dans une cellule séparée (lien 1 sur G1, lien 2 sur H1, lien 3 sur I3, etc)

J'ai essayé avec CHERCHE, STX et GAUCHE, mais sans succès.

J'ai également essayé avec Power query, mais je ne trouve pas le bon mode de fragmentation, ni le bon séparateur.

Je ne suis pas suffisamment avancé en VBA pour trouver le bon code (je débute tout juste...)

Pourriez-vous m'aider ?

Merci à tous

18csvexport-test.csv (701.00 Octets)

Bonjour Miladiouze et bienvenue,

le séparateur est Chr(160)

voici un exemple,

Sub test()
x = Split(Range("G2"), Chr(160))
For i = LBound(x) To UBound(x)
 Debug.Print x(i)
Next
End Sub

Bonjour i20100,

Merci pour ta réponse.

Comme je le disais, je débute vraiment dans VBA...on dirait que je n'ai pas compris ton code.

Te serait-il possible de corriger ma démarche ci-dessous ?

J'ai inséré un module dans le fichier csv et j'ai tenté de déclarer les variables (Variant, par défaut...), puis j'y ai inséré ton code.

Ca donne ceci, mais quand j'exécute, il ne se passe rien :

Sub test()

Dim x As Variant

Dim i As Variant

x = Split(Range("G2"), Chr(160))

For i = LBound(x) To UBound(x)

Debug.Print x(i)

Next

End Sub

Est-ce que c'est parce qu'il s'agit d'un format csv ?

Ou est-ce ma déclaration de variables est fausse ?

D'avance, merci.

re,

désolé c'est plutôt un chr(10)

ça fonctionne !

Mais sur la seule cellule G2...logique

Mais si je veux appliquer aux autres cellules de la colonne G ?

En notant :

x= Split(Range("G:G12"), Chr(10))

ça renvoie un message d'incompatibilité de type.

Par contre si je modifie une par une G3, Cells(3, col), etc. ça fonctionne.

Je suppose qu'il y aurait moyen d'appliquer cette macro sur toutes cellules remplies de la colonne G, non ?

Enfin, pour ma curiosité (et mon apprentissage), à quoi correspond Chr(10), stp ?

Merci

re,

Chr(10) renvoie un caractère de saut de ligne

à tester,

Sub test()
For j = 2 To Cells(Rows.Count, "A").End(xlUp).Row  'de la ligne 2 jusqu'à la dernière ligne
    x = Split(Range("G" & j), Chr(10))
    col = Cells(j, Columns.Count).End(xlToLeft).Column
    For i = LBound(x) To UBound(x)
       Cells(j, col) = x(i)
       col = Cells(j, Columns.Count).End(xlToLeft).Column + 1
    Next i
Next j                'prochaine ligne
Cells.Columns.AutoFit
End Sub

Impeccable !

Merci beaucoup pour ton aide.

J'ai plus qu'à apprendre la démarche, mais c'est très instructif.

A bientôt

Merci pour ce retour, au plaisir!

resolu 1

Bonjour,

Bonjour Isabelle,

Une autre proposition à envisager, sans VBA, mais avec Power Query (Récupérer et transformer) intégré à ta version Excel.

A te relire, pour un complément d'informations !...

Cdlt.

16csvexport-test.xlsx (18.50 Ko)

Bonjour Jean-Eric,

J'avais déjà essayé avec PowerQuery, sans succès.

Il s'agit d'une extraction d'une application photos prises par intervention. Je ne peux donc pas dupliquer les interventions qui doivent rester uniques.

Il est donc important que ma cellule se fractionne en plusieurs colonnes, et non en plusieurs lignes.

J'ai un peu évolué le principe par rapport à ma première demande en trouvant une macro sur ce forum qui me permet d'importer mes fichiers d'export (csv transformés en xlsx) sur un autre fichier xlsm.

La macro est faite à partir de données sous forme de tableau (je ne suis pas capable de la modifier pour éviter le format tableau...)

Ça, ça marche parfaitement, mais du coup, la macro de fractionnement de la cellule en plusieurs colonnes d'Isabelle, qui fonctionnait parfaitement sur les exports en csv, ne fonctionne plus du tout sur ce modèle en xlsm sous forme de tableau...

Le résultat est décalé, et ça multiplie les colonnes, comme vous pouvez le voir avec le fichier ci-joint.

Est-ce que c'est dû au format tableau ?

J'ai joint les trois fichiers : 2 exports csv, transformés en xlsx, avec renommage de l'onglet "Synthèse", pour les besoins de la macro utilisée + le fichier Appli.Photos_test, qui reçoit les imports, et sur lequel je voudrais bien utiliser le fractionnement de colonnes.

Et plus tard, convertir les liens en hypertexte.

A savoir aussi, que normalement, je dois traiter un export par jour, donc incrémenter mon tableau de synthèse des ces données à importer à la suite.

J'en demande beaucoup, peut-être, mais ça me faciliterait tellement la vie

Merci à tous ceux qui pourront m'aider.

4csv2019-11-06.xlsx (42.23 Ko)
6csv2019-12-16.xlsx (18.12 Ko)

Bonjour à tous

La requête Powerquery de Jean Eric commence par créer une colonne par lien donc il suffit d'enlever les actions de la requêtes qui les distribuent en lignes.

Il serait bien d'avoir des csv et non des conversions excel si on veut réaliser une requête basée sur le cas réel

Bonjour,

Merci pour l'astuce Power query, je vais creuser aussi de ce côté-là.

voici les exports en csv.

C'est sûr que ça limite les risques d'erreurs si on ne les manipule pas

A bientôt

4csv2019-11-06.zip (17.12 Ko)

Bonjour,

Le fichier initial revu pour un fractionnement en colonne.

Sinon, j'ai aussi revu la proposition initiale avec le fractionnement en ligne

(on peut fractionner par délimteur (lf) en ligne directement ).

Sinon, tu veux consolider tous les csv dans un unique classeur ?

Cdlt.

RE

Avec consolidation des csv du dossier indiqué en feuille Dossier

Bonjour,

Un grand merci à tous les deux pour votre aide

Cependant, et d'avance pardon pour mes questions bêtes mais...sur aucun de vos fichiers je ne vois de macro dans l'éditeur.

Le résultat est exactement ce que je cherchais, en tous cas !

Mais est-ce que vous pouvez m'expliquer comment vous avez fait, pour que je puisse reproduire les manip ?

D'avance, merci.

Bonjour à tous

Comme indiqué par Jean Eric et moi-même c'est réalisé par PowerQuery et non par VBA

Donc il faut ouvrir l'éditeur PowerQuery pour voir les requêtes

Si tu as des questions à propos des requêtes, demande...

Bonsoir,

Je comprends mieux, alors !

Je ne savais pas qu'on pouvait faire tout ça avec Power Query.

Je vais me pencher sur la question, préparer mes questions pour faire une envoi groupé.

Merci pour votre aide,

Bonjour,

Tout d'abord, joyeux noël à tous.

Je me casse les dents sur Power Query, une cata, ça me paraît vraiment compliqué.

Faut dire que je ne connais pas, mais je n'arrive pas du tout à exploiter le fichier csvexport_test3... dommage parce que ça donne pile le résultat que je voulais.

J''ai tenté les manip suivantes, sans succès.

En supposant qu'il faille d'abord modifier le chemin d'accès des sources de données, à savoir, là où se trouve mes csv :

1/ j'ai changé le chemin d'accès à mes fichiers csv sur l'onglet "Dossier" (vu que c'était du temporaire)

2/ Je sélectionne Données -> Requêtes et connexions

3/ Je sélectionne l'étape Dossier, le chemin d'accès que j'ai changé apparaît bien

4/ Je sélectionne l'étape Source => un message Formula.Firewall : Requête "Exemple de fichier" (étape "Source") accède à des sources de données dont les niveaux de confidentialité ne pas être utilisés ensemble. Je clique donc sur modifier les paramètres, s'ouvre une boite de dialogue Dossier avec une liste déroulante sur chemin du dossier -> impossible de sélectionner quoique ce soit, elle reste figée.

Du coup, j'ai tenté de créer un fichier de zéro, en m'aidant des requêtes contenues dans le fichier de Kris78.

1/ nouveau classeur

2/ Données Requêtes et Connexions -> j'ai crée les dossiers et sous-dossiers

3/ Lancement de l'éditeur PowerQuery

4/ Comment créer la requête "Dossier" qui contient en fx : = Excel.CurrentWorkbook(){[Name="Dossier"]}[Content][Column1]{0} ?

Je suis bloqué à ce niveau là, c'est-à-dire au début...

Merci

Bonjour

J'avais oublié de reporter la variable dossier dans la requête Xl_Prat

mais cela ne semble pas venir de là puisque ton message concerne Exemple de fichier.

Il semble que ton dossier ne soit pas accessible : soit mauvaise saisie du chemin ou problème de droits d'accès

Si on part de zéro on prend directement : depuis l'onglet Données, Obtenir des données, A partir d'un fichier, A partir d'un dossier : toute l'arborescence se crée automatiquement. J'ai ensuite simplifié.

Bonjour,

J'ai réussi à créer le fichier avec l'arborescence, sur tes conseils, ce qui est déjà une grande victoire

Par contre, je n'arrive pas à fractionner la colonne Photos.

Il existe une fonctionnalité "Fractionner la colonne", mais je ne trouve pas le séparateur. C'est un "retour chariot" mais il ne figure pas dans la liste des séparateurs possibles.

Il y a bien un séparateur "personnalisé", mais je ne sais pas comment nommer le séparateur "Chr 10".

A moins que ce ne soit pas comme ça qu'il faille faire ?

A bientôt

Rechercher des sujets similaires à "fragmenter colonne"