Extraction de données au sain d'une feuille

Bonjour,

J'ai actuellement un fichier Excel qui contient énormément de lignes (+30.000), et qui se présente sous forme de conversation et j'auraisbesoin sun coup de main pour trier ses données. Sur la première ligne, j'ai l'expéditeur du message, sur la deuxième ligne le contenu du message, et en troisième ligne la date et l'heure d'envoi du message. Puis ce contenu se déroule sous cette forme de triplés.

Le contenu du message utilise une ligne, mais il se peut qu'il y ai "X" lignes supplémentaires suite au contenu (correspondant aux réactions d'un emoji sur le message), et donc avant la date et l'heure d'envoi du message.

Exemple :

Martin Bouvier

Bonjour

juil 27, 2019 5:22:04pm

Thomas Jean

Au revoir

😆Martin Bouvier

juil 27, 2019 5:22:07pm

Ce qui m'intéresse, c'est de séparer et d'extraire chaque expéditeur dans une feuille de calcul différente, avec dans cette feuille tout les messages alignés dans la colonne A, avec la date et l'heure respective sur la colonne B, ainsi que les potentielles "X" lignes supplémentaires de réactions sur une troisième colonne C.

L'objectif est de pouvoir sortir des statistiques sur le fil d'échange.

En bonus, j'aimerais pouvoir trier les messages de chaque expéditeur (dans la feuille) par les messages ayant le plus de lignes de "réactions". En fonction de la mise en page de la solution, cette étape peut être assez simple !

Je suis debutant excel, si quelqu'un pourrait m'indiquer la marche à suivre, ou quelques formules guidée par mon énoncé ça serait super.

Je vous remercie

bonjour Floriangone,

Vous avez encore Excel2010 ou déjà une version plus récente ?

Votre fichier, je suppose qu'il est trop confidentionnel pour le poster ici ? Vous n'avez pas une feuille avec une dixaine de lignes en 3 conversations qui n'est pas trop confidentiel ?

Bonjour BsAlv,

Je vous ai sorti un extrait (anonyme), dites moi si cela vous suffit. Concernant la version, je n'ai pas accès à mon ordinateur actuellement, mais je pense avoir une version plus récente (2016 je dirais).

Merci

10message-1-2.xlsx (9.61 Ko)

Bonjour,

Voici une première proposition, (on peut sûrement faire beaucoup mieux):

Cdlt

Bonjour Arturo83,

Merci beaucoup pour votre temps.

Effectivement, cette Macro fonctionne et j'obtiens bien ce que je souhaitais ! Je vous remercie. Le seul bémol c'est le temps d'exécution de la macro sur mon fichier qui doit faire un peu moins de 100.000 lignes... Excel se met en ne réponds pas et ce depuis une vingtaine de minutes. Je ne sais pas s'il y a moyen d'accélérer cette procédure.

Je vous remercie

Bonjour Floriangone

Vous pouvez ajouter en entrée de procédure

Application.Calculation = xlCalculationManual : Application.EnableEvents = False

Et en sortie

Application.Calculation = xlCalculationAutomatic : Application.EnableEvents = True

Votre fichier excel d'entrée référence une seule discussion et votre fichier complet comprend t'il plusieurs discussions : si c'est le cas retransmettez un fichier d'extraction avec plusieurs discussions

J'ai personnellement vu que dans une discussion il pouvait y avoir des réponses sans pouvoir faire les liens correctement : avez-vous effleuré le sujet?

J'ai commenté les quelques lignes qui permettaient de faire de la dimension de colonne, ce qui prenait du temps je pense.

Mon fichier de référence ne comprends pas plusieurs discussions. Il s'agit d'un fil de discussion.

Cordialement

J'ai personnellement vu que dans une discussion il pouvait y avoir des réponses sans pouvoir faire les liens correctement : avez-vous effleuré le sujet?

Concernant ceci, je ne comprends pas bien votre point, pouvez vous me donner un exemple ?

Bonjour à tous,

j'ai modifié le code en réorganisant quelques lignes pour gagner en vitesse d'exécution, mais je ne pense pas que cela réduise énormément le temps d'exécution, il faut essayer pour le savoir..

Mais bon, 100000 lignes quand même.

Cdlt

bonjour le fil,

une autre méthode au lieu de plusieurs feuilles, un tableau structuré et un TCD

Bonjour BsAlv,

Je vois que utilisez un dictionnaire, mais s'il y a plus de 65535 lignes, puisque Floriangone annonce presque 100000 lignes, je crois bien que le dictionnaire ne marche plus au-delà.

Salut @Arturo83,

je ne sais pas d'où vous pensez qu'il y a une limite de 65K, je pense que plutôt la mémoire sera la limite. Une autre possibilité s'était une matrice. Peut-être cela est encore plus vite (???)

fichier avec matrice au lieu d'un dictionaire

Alors j'ai écrit une bêtise, désolé.

Re,

Alors après vérification, mes fichiers (car je répète l'opération sur 6 .xlsx différents) sont de moins de 50.000 lignes chacun (~35000 max).

Je vais essayer vos différentes méthodes, mais sachez que le temps d'execution en appliquant les variables Application.calculation et EnableEvent est beaucoup plus faible !

J'ai également repéré un bug lors l'un des message est un lien... a creuser

Crdlt

J'avais écrit "Votre fichier excel d'entrée référence une seule discussion et votre fichier complet comprend t'il plusieurs discussions : si c'est le cas retransmettez un fichier d'extraction avec plusieurs discussions",

et maintenant vous avez 6 fichiers j'imagine chacun pour une discussion différente, où les mêmes personnes peuvent collaborer. Comment savoir au final dans les feuilles générées que les lignes font partie de tel fichier (peut-être telle discussion)? Je ne sais pas si je me fais comprendre.

Les fichiers XLS d'origine sont à mon avis liées à des exports soit à des dates différentes soit à des discussions différentes.

Si une discussion se poursuit quelques jours plus tard, une nouvelle extraction reprendra t'elle les mêmes données : si oui, comment fait-on les mises à jour?

Il est peut-être important de connaître comment tout cela s'imbrique.

Les 6 fichiers correspondent à une discussion à des dates différentes.

Je ne souhaite pas de faire de statistiques sur des prochaines données, donc aujourd'hui cela me suffit :)

J'ai concaténé les 6 fichiers pour me donner un fichier plus gros.

Concernant le bug donc je parlais auparavant, il s'agit 'en fait d'une syntaxe qui change lorsque l'expéditeur envoie une pièce jointe sous forme de lien :

Yanis Perrier

Yanis a envoyé une pièce jointe.

Song: Love Is A Long RoadArtist: Tom PettyWritten by Thomas Earl Petty and Michael W. CampbellPublished by Universal Music Works on behalf of Wild Gator Musi...

"Lien youtube"

fichier avec matrice au lieu d'un dictionaire

J'ai une erreur en executant cette ligne : "Set c2 = c0.Find(What:="", LookIn:=xlFormulas2, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=True)"

Code d'execution 1004

Erreur définie par l'application ou par l'objet.

Crdlt

Je vous remercie tous pour votre super aide, j'ai réussi à extraire toutes les données qu'il me fallait :)

Excellente journée

Rechercher des sujets similaires à "extraction donnees sain feuille"