VBA - Traitement de multiples données dans une même case

Bonjour à tous,

Ceci est mon premier message sur ce forum (qui m'a tout de même déjà été très utile et je vous en remercie tous).

J'ai un petit problème et j'espère que vous pourrez m'aider à le résoudre :

J'ai pour tâche de créer un outil VBA qui servira à automatiser des opérations de mise à jour d'un fichier excel de suivi documentaire, et une de ces automatisations me pose problème. J'ai joint à ce message un fichier excel me permettant de mieux vous l'expliquer : je dois aller chercher dans l'onglet "Données MAJ" les données contenues dans les colonnes "Data 1" et "Data 2", et les recopier dans l'onglet "Classeur synthèse" pour les "Ref" correspondantes. Le problèmes c'est que lorsque les "Data 1" et "Data 2" sont identiques pour plusieurs "Ref", toutes les "Ref" en question sont inscrites dans la même case avec des retours chariot.

31exemple-pb.xlsx (8.09 Ko)

Je pense qu'il faut parcourir le texte en séparant le texte à chaque "\n" mais n'étant pas un expert dans ce domaine je rencontre quelques difficultés à écrire un code propre et robuste.

Pourriez vous m'éclairer sur les fonctions à utiliser ?

Merci d'avance,

Bien cordialement,

Florian.

Bonjour Florian,

Dans Excel, la plaie ... ce sont les cellules fusionnées ... car elles obligent à faire des bricolages ...

Ci-joint ... un fichier test ...

31exemple-pb.xlsx (8.89 Ko)

Bonjour et bienvenue sur le forum

Un essai. Te convient-il ?

35exemple-pb-v1.xlsm (16.59 Ko)

Merci beaucoup à tous les deux ! J'ai la méthode avec ou sans VBA grâce à vous !

Le chr(10) correspond au \n je suppose ?

J'ai une autre question, je parcours un tableau qui a été au préalable filtré afin de n'afficher que les données qui me concernent, et dans lequel je vais effectuer la macro proposée par gmb, y a-t-il un moyen de ne parcourir que ces cellules ou bien le filtrage ne sert-il à rien et je devrai donc parcourir tout le tableau en effectuant à chaque ligne un test remplacant le filtrage ?

Flo913 a écrit :

Le chr(10) correspond au \n je suppose ?

Le chr(10) correspond au retour-chariot

Flo913 a écrit :

y a-t-il un moyen de ne parcourir que ces cellules ou bien le filtrage ne sert-il à rien et je devrai donc parcourir tout le tableau en effectuant à chaque ligne un test remplacant le filtrage ?

Deux solutions mais de toute façon il faut passer toutes les lignes :

• Soit la macro refait le même test que celui du filtrage mis sur ta feuille

• Soit on lui demande de sauter les lignes masquées.

A voir quelle est la solution la plus rapide pour la macro.

Si tu as besoin, joins ton fichier …

Bye !

Je ferai les tests je pense. Je vais privilégier la simplicité à la rapidité (je suis désolé mais je ne peux pas mettre mon fichier en ligne pour des raisons de confidentialité et de complexité -il est vraiment imbuvable-).

J'ai essayé d'automatiser votre routine afin qu'elle parcoure un tableau, mais je rencontre une erreur. Ne comprenant pas tout des fonctions que vous utilisez, sauriez-vous d'où elle provient ? (j'ai mis le fichier excel en PJ).

20exemple-pb-v2.xlsm (17.29 Ko)

Tu écris :

...mais je rencontre une erreur,.... sauriez-vous d'où elle provient ?

Tu as oublier de remplacer 2 par ‘’ligne’’ à l’instruction :

For i = 0 To UBound(Split(Cells(2, "B").Value

Mais il y a une autre cause de plantage que je te laisse découvrir…et qui m’a amené à te proposer une nouvelle version.

Cela te va-t-il ?

30exemple-pb-v3.xlsm (20.51 Ko)

Bonjour

Ta 3e solution me convient très bien ! Et concernant la dernière erreur, si c'était le K qui n'était présent en données et non en synthèse, c'était fait exprès (je voulais tester tous les cas possibles) ^^.

Cette fonction Split me sera bien utile à l'avenir, c'est un bonne trouvaille !

Encore merci pour ton/votre aide, vous m'avez épargné des heures de prise de tête

Bien cordialement,

Florian.

Re-bonjour !

J'ai un autre problème maintenant... un peu l'opposé du premier..

Voici un fichier résumant mon problème, avec tous les cas possibles.

Comme précédemment, je dois copier les informations contenues dans les colonnes "Data 1" et "Data 2" de l'onglet "Données MAJ" dans les colonnes du même nom de l'onglet "Classeur Synthèse" en face des "Ref" correspondantes.

22exemple-pb2.xlsx (8.33 Ko)

Faut-il fait un test sur le fait que cela soit une cellule fusionnée ? si oui est-il possible de savoir quand une cellule fusionnée s'arrête et qu'une autre commence (dans le cas de deux cellules fusionnées différentes qui se suivent) ?

Merci encore d'avance pour votre aide précieuse,

Bien cordialement,

Florian

Bonjour

Tu écris :

Faut-il fait un test sur le fait que cela soit une cellule fusionnée ?

Je n’en ai pas eu besoin.

Sache tout de même que les cellules fusionnées sont des plaies purulentes pour les macros qui peuvent aller jusqu’à l’issue fatale de leur auteur : à force de s’arracher les cheveux, il arrive qu’un morceau de crane parte avec …. !

Bye !

25exemple-pb2-v1.xlsm (18.92 Ko)

Ahah je le sais bien, mais je dois m'adapter à un formalisme de données d'entrée que je ne peux potentiellement pas changer et par conséquent mon outil doit être robuste ^^'

Merci pour ton aide ! En fait c'est ce que j'avais fait, mais j'avais laissé une coquille qui n’arrêtait pas de me laisser une erreur..

Rechercher des sujets similaires à "vba traitement multiples donnees meme case"