Extraire 1ère, 2ème, 3ème ligne d'une cellule

Bonjour et merci d'avance !

J'ai une cellule qui contient 4 lignes ( réalisées avec ALT+ ENTREE)

Je souhaite extraire la 1ère ligne dans une cellule, puis la 2ème dans une autre cellule et ainsi de suite...

Pour la première je fais cela avec

=GAUCHE($H$10;CHERCHE(CAR(10);$H$10;1))

Mais je n'arrive pas avec les autres lignes

Merci beaucoup pour votre contribution !

Chree74

Bonjour,

La solution la plus pratique est une fonction personnalisée...

Mais pas le temps de l'écrire tout de suite (je pense en avoir dans mes archives mais impossible à trouver rapidement dans mon bazar !), j'ai un RV.

Mais pas mal d'intervenants peuvent te faire ça. Sinon je repasserai ce soir.

Cordialement.


Retour

En version sommaire, du vite fait :

Function ECLATERTXTMLIGNES(txm As String)
    Dim txcc
    Application.Volatile
    txcc = Split(txm, Chr(10))
    ECLATERTXTMLIGNES = txcc
End Function

Tu copies la fonction, tu la colles dans un module standard (Accéder éditeur VBA par Alt+F11, Insertion > Module, et coller).

Utilisation comme une fonction native d'Excel.

La fonction est matricielle.

Sélectionner autant de cellules que de lignes de texte à éclater (sur une même ligne).

Taper la fomule, ex.: =ECLATERTXTMLIGNES(A1)

Valider par Ctrl+Maj+Entrée.

La formule s'encadre d'accolades (matricielle) et le résultat apparaît dans l'ensemble des cellules sélectionnées...

Pour besoins plus sophistiqués, attendre ce soir...

Cordialement.

Ok merci

J'ai essayé mais çà ne fonctionne pas...

çà me renvoie #NOM?

Je vais attendre ce soir. En tout cas je te remercie pour ton aide.

J'ai fermé le fichier et l'ai réouvert et cette fois il me donne la première ligne à chaque fois

Finalement grace à ton code j'ai trouvé ce lien et çà marche !

Merci MFerrand

Il semble que tu n'aies pas lu tout ce que j'ai écrit et que tu ignore comment on valide une formule matricielle :

Ctrl+Maj+Entrée

Tu peux appuyer sur 3 touches à la fois !

Une petite amélioration :

Function ECLATERTXTMLIGNES(txm As String)
    Dim txcc
    Application.Volatile
    txcc = Split(txm, Chr(10))
    If Application.Caller.Rows.Count = 1 Then
        ECLATERTXTMLIGNES = txcc
    Else
        ECLATERTXTMLIGNES = WorksheetFunction.Transpose(txcc)
    End If
End Function

Cette version autodétecte si tu décomposes ta chaîne en horizontal (sur une ligne) ou en vertical (sur une colonne).

NB- J'ai vu ton lien, je ne l'ai pas lu jusqu'au bout, d'abord parce que l'anglais me fatigue et ensuite parce que la propension à mettre des noms de variables longs me fatigue encore plus (quand je dépasse 3 lettres, ça me chiffonne déjà ), et ça n'avait rien à m'apprendre...

L'essentiel dans cette affaire est qu'en matière de manipulation de texte, les formules à disposition dans Excel sont peu nombreuses. On arrive le plus souvent à aboutir au résultat souhaité, quite à procéder avec des calculs relais. Mais c'est le plus souvent plus compliqué que bâtir une procédure VBA sous forme de fonction personnalisé, qui se révèle généralement plus simple à concevoir et à réaliser en matière de texte.

Cordialement.

Rechercher des sujets similaires à "extraire 1ere 2eme 3eme ligne"