Concatenation conditionnée

Bonjour

Je suis débutant en excel et j'ai besoin de votre aide pour ceci:

J'ai un fichier texte de contact que j'ai importé dans excel dans l'espoir de suprrimer les doublons.

Pour cela, je compte concatener les informations comprises entre les deux balises BEGIN:VCARD et END:VCARD.

J'ai 4922 lignes, le tout dans la colonne A de ma feuille excel.

Entre ces deux balises, le nombre de lignes n'est pass constant et varie souvent. Je me suis dit qu'il faut une boucle mais je ne sais comment y arriver. Vous trouverez ci-joint une capture d'écran.

capture

Bonjour et bienvenue sur le forum

Pour te faire une proposition, il faudrait que tu joignes ton fichier, même en ne mettant qu'une partie des 4922 lignes...

Bye !

Bonjour et merci gmb

Voici un extrait du fichier.

L'objectif final est d'avoir un numéro associé à un nom.

J'ai déjà trouvé un code de macro qui m'a permis de supprimer les lignes comportant VERSION

Bonjour,

joindre un exemple précis du résultat final souhaité afin de sortir du brouillard !

Qui plus est le classeur joint a mal été importé, joindre plutôt un fichier comme le fichier source …

Sinon à partir d'un classeur, pas besoin de boucle via la méthode Find à consulter dans l'aide VBA intégrée …

Alors voilà :

Cela te convient-il ?

Bye !

Merci pour votre réactivité mais ce n'est pas encore ce que je cherche à obtenir.

Avec ceci:

BEGIN:VCARD

N:;Abi Impots;;;

FN:Abi

TEL;PREF;CELL:374908378975985

END:VCARD

BEGIN:VCARD

N:;Abiba

FN:Abiba

TEL;PREF;CELL:9070709888

END:VCARD

Je voudrais avoir

BEGIN:VCARD+N:;Abi Impots;;;+FN:Abi+TEL;PREF;CELL:374908378975985+END:VCARD

BEGIN:VCARD+N:;Abiba+FN:Abiba+TEL;PREF;CELL:9070709888+END:VCARD

En conclusion, conacatenu le contenu entre les balises BEGIN:VCARD et END:VCARD sur une ligne

Merci

Un exemple de concaténation dans ce sujet

Marc (Salut Marc !) a tout à fait raison : joins un exemple précis de ce que tu souhaites...

Bye !

Vu la pauvreté de la présentation, sortie vers la feuille (et si c'est pas cela, tant pis, faut être clair dès le début !) :

Sub Demo()
    Dim Rd As Range, Rf As Range
                 C& = [COUNTIF(A:A,"BEGIN:VCARD")]
    ReDim T$(1 To C, 1 To 1)

    With Feuil1.Columns(1)
        Set Rf = .Cells(1)

        For R& = 1 To C
             Set Rd = .Find("BEGIN:VCARD", Rf)
             Set Rf = .Find("END:VCARD", Rd)
            T(R, 1) = Join(Application.Transpose(Range(Rd, Rf)), "+")
        Next
    End With

    With Feuil1.Cells(4)
        .CurrentRegion.Clear
        .Resize(C).Value = T
    End With
End Sub
Marc L a écrit :

Vu la pauvreté de la présentation, sortie vers la feuille (et si c'est pas cela, tant pis, faut être clair dès le début !) :

Sub Demo()
    Dim Rd As Range, Rf As Range
                 C& = [COUNTIF(A:A,"BEGIN:VCARD")]
    ReDim T$(1 To C, 1 To 1)

    With Feuil1.Columns(1)
        Set Rf = .Cells(1)

        For R& = 1 To C
             Set Rd = .Find("BEGIN:VCARD", Rf)
             Set Rf = .Find("END:VCARD", Rd)
            T(R, 1) = Join(Application.Transpose(Range(Rd, Rf)), "+")
        Next
    End With

    With Feuil1.Cells(4)
        .CurrentRegion.Clear
        .Resize(C).Value = T
    End With
End Sub

Merci Marc, le code que tu as envoyé répond à ma requête, celle d'avvoir toutes les informations d'un contact sur une même ligne. Le reste je vais m'en charger tout en continuant à lire les cours de VBA.

Merci beaucoup

Rechercher des sujets similaires à "concatenation conditionnee"