Extraire valeur en fonction de sa position

Bonjour à tous,

Je souhaiterais récupérer dans une colonne la 3ème valeur contenue dans une cellule. (voir ci-joint)

Sachant que la longueur n'est pas fixe donc je ne peux pas l'utiliser comme critère.

J'ai essayé certain fonction d'excel (mid/left/...) mais en vain je ne parviens pas à récupérer ma valeur.

Pourriez-vous m'aider à ce sujet, s'il vous plaît?

Merci par avance pour votre aide.

Bonjour,

Ci-joint une proposition ...

En espèrant que cela t'aide

bonjouor

salut James

n'étant pas fort en formules, je fais avec le menu Données, Obtenir

dupliquer colonne

fractionner colonne

supprimer les colonnes de trop

"charger"

un truc de flemmard quoi

Salut jmd

Pas sûr de ce qui va le plus vite ...

Surtout qu'une fois ta formule prête ... il ne reste qu'à la copier si la base augmente ...

bonjour

une toute petite contribution

=STXT(A2;CHERCHE(" ";A2;10)+1;CHERCHE(" ";A2;20)-CHERCHE(" ";A2;10))

qui risque de ne pas etre toujours valable

cordialement

Bonjour,

@ jmd,

Le truc de flemmard serait de se passer de la duplication de la colonne, car c'est une étape inutile tout comme le changement de type de valeurs !...

Mais, comme dans Excel, il y a des formules ou fonctions à connaître.

Cdlt.

Bonjour à tous

Pourvu que tout cela ne finisse pas au fond ... d'un grand Trou Noir ....

Salut jmd

Pas sûr de ce qui va le plus vite ...

Surtout qu'une fois ta formule prête ... il ne reste qu'à la copier si la base augmente ...

re à tous

salut James,

les requêtes Power Query récupèrent toutes les données même si le nombre de lignes augmente, sous réserve de l'avoir prévu.

Par exemple en mettant les données sous forme de Tableau (ou de liste, selon version d'Excel)

bonne journée

effacé par son auteur, car doublon

Bonjour,

@ jmd,

Le truc de flemmard serait de se passer de la duplication de la colonne, car c'est une étape inutile tout comme le changement de type de valeurs !...

Mais, comme dans Excel, il y a des formules ou fonctions à connaître.

Cdlt.

re encore à tous

salut Jean-Eric

j'ai dupliqué la colonne pour conserver la colonne d'origine (il me semble que ça fait partie de la demande initiale).

de mémoire, le changement de type de valeurs a été opéré automatiquement par PQuery

(ce qui parfois crée de mauvaises surprises, mais généralement c'est super pratique)

eh oui, on a parfois des formules à connaître. Mais pour ce qui concerne la transformation de données, moins que dans excel. C'est le métier de PQuery, c'est le T de ETL

Je le trouve magique ce PQuery, surtout son IHM (GUI) très facile à utiliser.

amitiés à toi et à tous

Bonjour,

La proposition Power Query revisitée.

Cdlt.

let
    Source = Excel.CurrentWorkbook(){[Name="T_Data"]}[Content],
    Split_String= Table.AddColumn(Source, "Extrait", each Text.BetweenDelimiters([Nom Complet]," "," ",1,0))
in
    Split_String

Bonjour à tous,

Merci beaucoup pour votre aide ^^

@James007:

Bonjour,

Ci-joint une proposition ...

En espèrant que cela t'aide

J'ai essayé de comprendre la formule saisie dans la colonne B qui permet d'exraire le texte de la colonne A.

Je n'arrive pas à voir ce que fait la fonction CHAR. J'ai cherché la définition de la fonction sur Microsoft Office mais cela ne pas permis de mieux comprendre.

Pourriez-vous s'il vous plaît quel est le but de la fonction CHAR dans la formule saisie?

Je souhaiterais pouvoir "transformer" la formule de la colonne B en formule dans une variable dans VBA.

Merci par avance pour votre aide.

Bonne journée à tous!

Bonjour,

Char(1) est simplement le premier caractère ... qui ne sera très probablement présent dans ta cellule... et qui ne sert qu'à identifier la n ième position du caractère réellement recherché ....

En espèrant que cela t'aide ...

Re,

La proposition en VBA (à adpater !...).

Cdlt.

Public Sub Exttact_data()
Dim lastRow As Long, i As Long
    With ActiveSheet
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = 2 To lastRow
            If Not IsEmpty(.Cells(i, 1)) Then .Cells(i, 2).Value = VBA.Split(.Cells(i, 1))(2)
        Next i
    End With
End Sub

Bonjour @James007, @Jean-Eric,

@James007: Je comprends mieux. Merci beaucoup pour votre explication.

@Jean-Eric: J'ai testé votre fichier et cela fonctionne parfaitement. Merci beaucoup de m'avoir fait découvrir la fonction Split de VBA.

Du coup, j'ai implémenté cette fonction dans mon code (voir ci-joint). Mon code fait un matching entre la valeur d'une cellule et l'extrait d'un filename.

La fonction Split prend la bonne valeur pour faire le matching. J'ai pu le vérifier en faisant un MsgBox.

Toutefois, je ne comprends pas pourquoi ma condition If ne fonctionne pas correctement, elle me renvoie le contraire. Dans le sens, où le résultat pris correspond à celui du sinon alors que le résultat devrait celui du si.

J'ai l'impression que le problème vient de ma boucle For mais je ne suis pas sûr.

Je souhaiterais que ma macro affiche le bon résultat.

Pourriez-vous jeter un oeil sur ma boucle, s'il vous plaît?

J'espère avoir été assez clair dans la définition de mon problème...

Merci par avance pour votre aide.

Bonjour à tous,

Quelqu'un pourrait m'éclairer pour identifier le problème de ma boucle, s'il vous plaît?

Pourquoi la condition If ne renvoie pas le bon résultat?

Merci par avance pour votre aide.

Bonjour,

A tester.

Cdlt.

Bonjour @Jean-Eric,

Je vous remercie pour votre aide.

J'ai repris votre fichier en ajoutant une condition "sinon" dans la boucle For.

Malheuresement, le résultat de la macro n'est pas correct.

En effet, toutes les cellules sont colorées en rouge alors que normalement il devrait y avoir seulement la cellule ayant pour valeur 2. De même, normalement toutes les cellules doivent avoir pour valeur "TRUE" dans la colonne hormis la ligne où il y a la cellule qui a pour valeur 2.

Ci-dessous j'ai illustré ce que j'obtiens avec la macro (à gauche) et le résultat attendu (à droite):

capture

Pourriez-vous m'aider à résoudre le problème que je rencontre lorsque j'ajoute la condition sinon, s'il vous plaît?

Merci par avance pour votre aide.

Re,

La mise à jour de mon précédent fichier.

Cdlt.

Re-bonjour @Jean-Eric,

Mille mercis pour votre aide.

Le résultat de la macro est correct maintenant.

J'ai une dernière question concernant le code de la macro:

Pourriez-vous m'expliquer pourquoi le sinon doit être après le "Exit For", s'il vous plaît?

Merci par avance pour votre aide.

Rechercher des sujets similaires à "extraire valeur fonction position"