[VBA] - Rechercher des infos dans des plages variables

Bonjour,

Pour finaliser mon projet, il me reste un problème que je ne sais pas comment résoudre.

Le principe est simple : je cherche à concaténer des données issues de la colonne [B] avec des données de la colonne [C].

Sauf que les données des colonnes [B] et [C] ne se trouvent jamais à la même place, il peut y avoir plusieurs données en colonne [B] à concaténer avec la colonne [C].

La seule règle constante est que toutes les données en [Colonne A] située en dessous de l'information contenue en [Colonne B] doivent être concaténées avec la [Colonne B] jusqu'à ce qu'apparaisse une nouvelle information en [Colonne B] ; là, la concaténation se fait avec elle.

Est-ce que vous voyez ce que je cherche à faire ?

J'ai joins un fichier à mon post, il y a une feuille qui présente le résultat espéré.

Merci de votre attention,

Bonne journée ! Bon app'

5test04.xlsm (10.35 Ko)

Bonjour Le Drosophile le forum

ton fichier en retour, tu l'ouvres tu cliques sur traiter et tu me redis

a+

Papou

Bonsoir,

Merci pour votre aide !

J'ai beaucoup de mal à comprendre le fonctionnement du code, mais petit à petit, en l'adaptant ça ira.

Après plusieurs tests dans ma base de données, ça marche très bien.

Il me reste à faire le test final sur des milliers de lignes et voir si ça fonctionne !

Bonsoir Le Drosophile le forum

Pour 20 lignes ou 10000 c’est pareil pour la macro, testes et tu me rediras

A plus

Papou

Oui, je viens de tester, ça marche bien, mai j'ai encore des exceptions malheureusement (des valeurs qui ne respectent pas les règles que j'avais identifié, mais ça devrais aller !

Merci beaucoup pour votre aide !

Re Le drosophile le forum

oui mais dans ce cas là il fallait passer le fichier avec les exceptions et je te l'aurais fait

a+

Papou

Bonsoir,

Pour le moment votre code reste un peu obscur et mon problème se complique..

Le traitement ne se fait plus sur 2 colonnes mais sur 5.

Je ne sais pas comment aligner le résultat obtenu via votre code avec les informations contenues en colonne [C, D, E] (elles sont toujours groupées).

Tout en ne faisant rien pour les résultats qui ne peuvent être associés à aucune autre information (Colonnes C, D, E vides) ou inversement : associer les infos des colonnes C, D, E à une cellule vide, si la cellule n'est pas remplie.

Ça se corse un peu plus, j'espère que ce que je cherche à faire n'est pas trop abstrait...

Je joins un fichier, sans modification du code, car j'avoue ne pas bien le comprendre... simplement en modifiant et ajoutant des données dans le tableau.

Ici je joins le code avec mes annotations (si vous souhaitez y répondre)

Sub group()
    Dim aa, i&, a&, mem$, adr$
    With Feuil1
        aa = .Range("A2:C" & .UsedRange.Rows.Count) 
    End With
    For i = 1 To UBound(aa) '(pourquoi utiliser UBound plutôt que simplement aa ?)
        If aa(i, 2) <> "" Then
            mem = aa(i, 2): aa(i, 2) = ""   'mem (mémoire) = ligne i (col2) jusqu'à ligne i (col 2) (pourquoi utiliser 2 fois i, qui semble être la même valeur ?)
            For a = i + 1 To UBound(aa)
                If aa(a, 1) <> "" Then aa(a, 2) = mem & aa(a, 1): aa(a, 1) = "" 'Si cellule A (i) <> "" alors B(i) = B(i) & A:i jusqu'à ce que A(i) = ""
                If a = UBound(aa) Then i = a: GoTo 1 'A partir de là, je pense comprendre le processus de fin
                If aa(a + 1, 2) <> "" Then i = a: GoTo 1
            Next a
        End If
1   Next i
    Feuil2.Cells(2, "E").Resize(UBound(aa), UBound(aa, 2)) = aa
End Sub

Re Bonjour Le Drosophile le forum

bon alors si tu avais commencé par passer le fichier du premier coup ce serait plus simple

Voilà ton fichier avec ce que tu veux!!!

Enfin si tu n'as pas déjà traité ton fichier avec de multiples macros

Voilà donc pour faire exactement ce que tu as demandé dans ta feuille résultat souhaité, en attendant que tu aies changé d'avis ce qui ne va pas tarder.

Je ne sais pas de quoi tu pars pour arriver au résultat de la feuille 1 de ton fichier mais bon.

tu ouvres tu testes et tu me redis.

Je ne sais pas si la recherches des "-" est en rapport avec ce fichier mais ?????

a+

Papou

PS: je viens de lire la macro que tu as commenté!!! tu n'y es pas du tout, si tu n'as pas compris la première macro alors je te laisse découvrir celle dans la version V3, on y reviendra car je pense qu'il te faudra des explications (j'en suis même sûr)

Je t'expliquerai en détail

Bonsoir,

Merci beaucoup pour votre aide, ce que vous proposez semble marcher sur mes feuilles de tests, reste à le lancer sur l'ensemble de mon document !

Je ne sais pas de quoi tu pars pour arriver au résultat de la feuille 1 de ton fichier mais bon.

Je joins un document qui montre à quoi ressemble mes données avant traitement.

Ce que je veux faire, c'est récupérer des informations utiles (dans mon cas Genre espèce) et des informations associées (ex : lieu de vie).

J'ai essayé de repérer les répétitions qui apparaissaient, par exemple :

Le genre est toujours écrit en premier, en gras italique.

L'espèce est toujours située en deuxième colonne avec d'autres infos.

Le lieu de vie est quasiment toujours situé après le 4ème tiret.

J'ai donc demandé à ce qu'Excel récupère ces informations, mais je n'ai pas été en mesure de lui faire faire ça proprement et chaque information se retrouve éparpillée. D'où la nécessité, en fin de code, de regrouper toutes ces informations correctement.

Je joins donc un document de travail avec le code qui s'exécute pour que vous ayez une meilleure idée de ce que j’essaie de faire (et j'en suis plus très loin).

Je ne sais pas si la recherches des "-" est en rapport avec ce fichier mais ?????

Oui, cette discussion : https://forum.excel-pratique.com/viewtopic.php?f=2&t=131378

est complètement en lien et ce problème de tiret m'embête vraiment ! Quand je supprime l'un d'entre eux, Excel n'en compte plus 7 mais 3 (me semble), je pensais que ça venait du style, mais le changer ne change rien au résultat.

Pour le moment j'ai quelques erreurs, mais je dois encore faire des tests dès que j'ai un peu de temps !

Bonne fin de soirée !

Encore merci pour votre aide

7doc-travail-01.xlsm (182.68 Ko)
Rechercher des sujets similaires à "vba rechercher infos plages variables"