Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Sortir le 1er nom à gauche d'une cellule

ChantalTreize

XLDnaute Occasionnel
Bonjour tout le monde
J'ai une colonne avec des 3 noms dans une cellule et je voudrais savoir comment extraite juste le 1er nom à gauche
voir le fichier joint
Merci d'avance
Chantal
 

Pièces jointes

  • Nom client.xlsx
    9.3 KB · Affichages: 16

Phil69970

XLDnaute Barbatruc
Bonjour @ChantalTreize

COUP DE GUEULE :

A quoi cela sert de poser des questions si tu ne réponds pratiquement JAMAIS.

A quoi cela sert que nous cherchions des solutions pour des personnes comme toi qui ne se donnent même pas la peine de revenir dire par exemple la réponse d'untel fonctionne mais celle de machin ne va pas ou me convient mieux etc.....
C'est la base d'un forum c'est l'échange et pas je mes sers sans vergogne !!!!





Bonne lecture

C'était mon humeur du jour
Et cela va nettement mieux une fois que ces choses là sont dites !!!
 

fcyspm30

XLDnaute Junior
Bonjour,
Avec 365 il n'y a même pas besoin de formule. Vous vous placez en C3 et vous écrivez BOULOT puis en C4 vous écrivez GAROPA et Excel a compris ce que vous voulez. Il vous écrit tous les premiers noms automatiquement.
 
Dernière édition:

fcyspm30

XLDnaute Junior
Même si ChantalTreize ne donne pas de retour ce n'est pas très grave. L'important c'est de partager. Sur le poste ci-dessus il faut que les ajout soient différents. Donc ajouter S.A de ANTILLE et SARL de NORI et ça fonctionne pour toute la liste
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @fcyspm30 ,

Bravo ! Ah ben je m'en souvenais pas de cette astuce.

Cependant cela signifie qu'on analyse à la main (ou plutôt de visu) les résultats pour savoir si toutes les lignes sont justes ou non, et dans le cas contraire on corrige la ligne puis on vérifie encore une fois toutes les lignes et ainsi de suite... Avec peu de lignes c'est faisable mais avec plusieurs centaines de lignes ça risque d'être plus compliqué.

Une formule est l'aboutissement d'un raisonnement. Si à partir d'une structure source définie, on définit un raisonnement pour aboutir au résultat correct alors nul besoin de vérifier le résultat pour toutes les lignes.

Comment savoir si le raisonnement comporte des failles ? C'est compliqué aussi car souvent on oublie des cas particuliers rares ou qui ne sautent pas aux yeux pour les éléments sources. Par exemple pour une entreprise qui s'appellerait "LA CAVE à VIN ANGEVINE", le "à" met en défaut le raisonnement qui est à la base de la formule. La formule est à adapter.

C'est là où une fonction VBA est souvent plus simple : Chercher le premier terme en partant de la fin qui est en majuscule et retourner ce mot et tous les mots qui sont avant se traduit facilement en code VBA.

J'ai donc écrit ce code (fonction DebutMaj).

Par curiosité j'ai soumis le problème à COPILOT (ma première demande à une IA ).

J'ai été surpris par la justesse du code généré par COPILOT.

Si vous voulez voir les deux codes (celui de ma pomme et celui de l'IA), vous pouvez les consulter dans le classeur joint dans Module1. J'ai appelé la fonction générée par l'IA du nom Copilot (me suis pas foulé). Même l'exemple fourni par COPILOT est judicieux et pertinent.

Les deux raisonnements sont les mêmes si ce n'est que je parcours les mots de la fin vers le début et l'IA parcours les mots du début vers la fin.

Question posée (excusez mon anglais approximatif - je ne savais pas que Copilot parlait français) :
excel VBA : a function that takes a string as input. The function should extract all the words from the beginning of the input until the last word that is in uppercase. The last uppercase word should be in the result of the function.

Exemple fourni par L'IA :
 

Pièces jointes

  • ChantalTreize- Fractionner- v1.xlsx
    18.8 KB · Affichages: 10
Dernière édition:

fcyspm30

XLDnaute Junior
Bonsoir,
J'ai demandé à copilot de trouver une formule et voilà ce qu'il a trouvé:
VB:
=GAUCHE(B3; CHERCHE("¤"; SUBSTITUE(B3; " "; "¤"; NBCAR(B3)-NBCAR(SUBSTITUE(B3; " "; ""))-1))-1)
Cela fonctionne bien mais vraiment j'en aurais été incapable tout seul
 

job75

XLDnaute Barbatruc
Bonjour à tous,

J'ai testé en recopiant le tableau source du post #13 sur 190 000 lignes.

Chez moi la 1ère actualisation de la requête Power Query s'effectue en 2,2 secondes.

Avec cette macro le résultat est obtenu en 0,5 seconde, voyez le fichier zippé joint :
VB:
Sub Test()
Dim t, tablo, resu$(), i&, x$, j%, y$
t = Timer
tablo = ListObjects(1).Range
ReDim resu(1 To UBound(tablo), 1 To 1)
For i = 1 To UBound(tablo)
    x = tablo(i, 1)
    For j = 1 To Len(x)
        y = Mid(x, j, 1)
        If y <> UCase(y) Then If j > 3 Then resu(i, 1) = Left(x, j - 3): Exit For
Next j, i
resu(1, 1) = "Résultat"
[D2].Resize(i - 1) = resu
MsgBox Timer - t
End Sub

A+
 

Pièces jointes

  • Nom client_premiere minuscule.zip
    676.4 KB · Affichages: 3
Dernière édition:

job75

XLDnaute Barbatruc
Une autre méthode un peu plus rapide => 0,40 seconde :
VB:
Sub Test()
Dim t, tablo, resu$(), i&, s, x$, j%, y$
t = Timer
tablo = ListObjects(1).Range
ReDim resu(1 To UBound(tablo), 1 To 1)
For i = 1 To UBound(tablo)
    s = Split(tablo(i, 1))
    x = ""
    For j = 0 To UBound(s)
        y = s(j)
        If y = UCase(y) Then x = x & " " & y Else resu(i, 1) = Trim(x): Exit For
Next j, i
resu(1, 1) = "Résultat"
[D2].Resize(i - 1) = resu
MsgBox Timer - t
End Sub
 

Pièces jointes

  • Nom client_premiere minuscule.zip
    676.6 KB · Affichages: 3
Dernière édition:

Discussions similaires

Réponses
18
Affichages
308
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…