Extraire texte en majuscules d'une cellule

Bonjour à tous, Forum,

Dans une cellule, j'ai ce type de données :

"[Spam - ceci est du texte et voici l'adresse mail de Madame TARTEMPION]"

Ou encore :

"[Spam - ceci est du texte et voici l'adresse mail de Monsieur MARTIN]"

Je n'arrive pas à trouver la formule me permettant d'extraire le nom (qui sera toujours en majuscules) pour le coller dans une autre colonne sachant que le nombre de caractères des noms est aléatoire.

Mais seul, le nom m'intéresse...

Quelqu'un a-t-il une astuce ou une formule me permettant de réaliser l'extraction ?

Merci d'avance.

Amicalement.

Bonjour,

c'est toujours dans la même cellule ou toute une colonne ?

Claude

Bonjour

Avec le texte en A1 :

=GAUCHE(DROITE(A1;EQUIV(" ";STXT(A1;NBCAR(A1)-LIGNE(INDIRECT("1:" & NBCAR(A1)));1);0));CHERCHE("]";DROITE(A1;EQUIV(" ";STXT(A1;NBCAR(A1)-LIGNE(INDIRECT("1:" & NBCAR(A1)));1);0)))-1)

MATRICIELLE : à valider avec CTRL+Maj+Entrée

Amicalement

Nad

Re, salut Claude,

Il y aura à chaque fois quelques centaines de lignes (de 100 à 500) mais toujours dans la même colonne.

Merci d'avance.

re,

ici en colonne A ligne 1 à la fin (à régler)

Sub test()
Dim Lg%, i%, x
        Lg = Range("a65536").End(xlUp).Row
    For i = 1 To Lg
        x = Split(Cells(i, 1))
        Cells(i, 1) = x(UBound(x))
        Cells(i, 1) = Mid(Cells(i, 1), 1, Len(Cells(i, 1)) - 2)
    Next
End Sub

Amicalement

Claude

Re-,

Merci déjà à tous les deux pour vos réponses.

Nad, ta fonction matricielle me répond "#VALEUR" en cellule C2. Il faut savoir que la colonne que je veux traiter est la colonne B et j'ai donc remplacé tous les "A" de ta formule par des "B"... Mais cela ne fonctionne pas.

Claude, quand je lance ta macro (j'ai auparavant remplacé le "Range("a65536") par Range("b65536)), rien ne se passe... Même en pas à pas, j'ai l'impression que rien ne bouge...

Merci pour votre aide.

Amicalement.

Re

As-tu bien validé comme indiqué dans mon précédent post ?

En C2 pour texte en B2

=GAUCHE(DROITE(B2;EQUIV(" ";STXT(B2;NBCAR(B2)-LIGNE(INDIRECT("1:" & NBCAR(B2)));1);0));CHERCHE("]";DROITE(B2;EQUIV(" ";STXT(B2;NBCAR(B2)-LIGNE(INDIRECT("1:" & NBCAR(B2)));1);0)))-1)

Par rapport au code de Claude, pense à modifier également

For i = 1 To Lg si la 1ère ligne de la colonne à modifier n'est pas 1

Nad

re,

Cells(i, 1)

le 1 signifie la colonne A , donc 2 pour colonne B

Sub test()
Dim Lg%, i%, x
        Lg = Range("b65536").End(xlUp).Row
    For i = 1 To Lg
            x = Split(Cells(i, 2))
            Cells(i, 2) = x(UBound(x))
        If Right(Cells(i, 2), 1) = """" Then
            Cells(i, 2) = Mid(Cells(i, 2), 1, Len(Cells(i, 2)) - 2)
        End If
    Next
End Sub

J'ai ajouté ici un contrôle afin de pouvoir exécuter le code plusieurs fois

sans supprimer les derniers caractères

Claude

Re-le forum, Nad, Claude,

Avec ce bout de fichier, un exemple de données en sachant que le texte avant les noms peut varier...

J'avais bien validé par la combinaison de touches mais j'ai toujours "#VALEUR!" en retour.

Avec la nouvelle macro de Claude, ça fonctionne mais elle me remplace les valeurs dans la colone B. J'aimerais que la macro puisse m'extraire le nom et le coller en colonne C...

Merci encore pour votre patience.

Amicalement.

Merci encore pour votre patience.

il en faut avec toi, on dirait un nouveau !

Sub test2()
Dim Lg%, i%, x
        Lg = Range("b65536").End(xlUp).Row
    For i = 2 To Lg
            x = Split(Cells(i, 2))
            Cells(i, 3) = x(UBound(x))
        If Right(Cells(i, 3), 1) = """" Then
            Cells(i, 3) = Mid(Cells(i, 3), 1, Len(Cells(i, 3)) - 2)
        End If
    Next
End Sub

Claude

édit: et qu'est-ce qu'on fait avec Madame et Monsieur ?

tu devrais nous mettre le résultat souhaité

Bonjour à tous, Forum,

Claude, ta macro fonctionne parfaitement bien et je te remercie pour ton excellent travail. Dans l'hypothèse où il y a un "Madame" et "Monsieur", je prends le dernier donc pas de souci...

Merci aussi à toi, Nad, d'avoir pris un peu de ton temps pour moi... Peut-être auras-tu encore un petit moment pour regarder ce qui ne va pas dans la formule.

En tout cas, merci encore à tous les deux.

Amicalement.

Bonjour

Ma formule se basait sur le fait que l'on trouvait toujours les signes ]" dans le texte (ton 1er post)

Si on ne doit jamais les trouver :

=DROITE(B2;EQUIV(" ";STXT(B2;NBCAR(B2)-LIGNE(INDIRECT("1:" & NBCAR(B2)));1);0))

S'ils peuvent y être dans certaines lignes :

=SUBSTITUE(DROITE(SUBSTITUE(B2;"]";"");EQUIV(" ";STXT(B2;NBCAR(SUBSTITUE(B2;"]";""))-LIGNE(INDIRECT("1:" & NBCAR(B2)));1);0));CAR(34);"")

Par contre, vu qu'il s'agit de formules matricielles, pour un nombre de lignes important il vaut mieux la macro.

Amicalement

Nad

Re-,

Tout fonctionne... Un grand merci pour votre aide Claude et Nad.

Bonne journée.

Amicalement.

Rechercher des sujets similaires à "extraire texte majuscules"