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

Isoler une partie de texte d'une cellule avec position variable ?

  • Initiateur de la discussion Initiateur de la discussion DukeDevlin
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

DukeDevlin

XLDnaute Nouveau
Bonjour,

Je viens vers vous aujourd'hui pour avoir vos lumières. En effet, vous trouverez en PJ un tableau expliquant mon problème. J'ai une cellule contenant un descriptif assez long. Et j'aimerais isoler 2 références à partir de ce descriptif : Le NCA et le NCR. Je sais que le NCA a 4 chiffres et le NCR 5 chiffres et que l'un comme l'autre peuvent être placés qu'au début (à gauche) et non pas à la fin. Le problème, c'est que la nomenclature utilisée peut changer d'une cellule à une autre comme joint dans l'exemple, sinon cela serait trop facile et il suffirait d'utiliser la fonction GAUCHE. Avez-vous une idée pour que je clean le fichier en faisant ressortir les NCA et NCR pour chaque descriptif dans deux nouvelles colonnes ? Je pense que cela sera plus parlant avec l'exemple.

Merci à vous. Bonne journée.
 

Pièces jointes

Bonjour
Je suis à peu près persuadé de pouvoir te venir en aide.
je n'ouvre (pas question) toutefois jamais un classeur tiers et tes explications ne me permettent pas de connaître tous les cas de figure éventuellement présents.
Peux-tu donc s'il te plait répondre à cette question :
En imaginant que ta cellule A1 contienne :
BLABLA 12345 BLABLA 678-6789120 (23456) BLABLA ET REBLABLA
que veux-tu obtenir et dans quelle(s) cellule(s)?
 
Bonsoir @jmfmarques

A partir de la 2ème colonne, obtenir la 3ème et la 4ème. (le tableau ci-dessous) est copiable dans Excel 😉)

SujetDescriptifNCANCR
1​
NCA 1234 NCR 12345 La vie est belle
1234​
12345​
2​
3456 78901 vraiment belle
3456​
78901​
3​
9876 trop super génial
9876​
4​
56789 / 09876 incroyablement c'est dingue56789 / 09876
5​
99999 oui
99999​
6​
1010.1050 je ne sais pas1010 / 1050
7​
1034.32145 ok
1034​
32145​
8​
C'est vraiment super 3456
9​
Exemple
10​
56789.1004
1004​
56789​
 
Merci mapomme.
Voilà donc plusieurs cas. Mais sont-ils les seuls possibles ?
Quid si, par exemple :
BLABLA 12345 BLABLA 678-6789120 (23456) BLABLA ET REBLABLA

Une fois obtenue cette précision, je m'efforcerai de donner une solution sans alourdir par REGEX (lourd et pas forcément disponible sur toutes les machines)
 
Merci d’avoir posté le tableau. Ce ne sont que des exemples de cas, il en existe une infinité. La seule chose fixe c’est que l’un des champs fait 4 chiffres, l’autre 5 et qu’ils se trouvent forcément en début et pas à la fin. Mais le fichier n’étant pas clean avec plus de 5000 lignes à traiter et beaucoup de différences, j’aimerais extraire ça de la meilleure façon possible.
 
Par-contre, je ne sais pas si nous avons Regex sur nos machines oulala ! 🙁

Pour ton exemple je vois que le 12345 avec 5 chiffres en début donc lui doit ressortir sur ma colonne où j’extrais le code à 5 chiffres et laisser vide celle à 4. Car aussi, un sujet peut avoir 2 codes à 5 chiffres, 2 à 4 chiffres, qu’un à 4 etc ... Il peut y avoir aucun, un seul ou plusieurs NCA, NCR pour chaque sujet (ligne).
 
bonsoir le fil
il faut pas chercher 4 ou 5 chiffre il faut cherche"NCA" + espace + 5 chiffres et supprimer "NCA " du résultat

=SIERREUR(SUBSTITUE(SI(TROUVE("NCA ";A1;1);GAUCHE(A1;CHERCHE("NCA ";A1;1)+7);"");"NCA ";"");"")
 
je te demande VRAIMENT et une fois de plus de me montrer ce que je t'ai demandé de mon montrer (relis-moi) et non des explications (elles m'intéressent moins).

Pour ton info : je crois que je viens de finir d'écrire ce que je crois deviner que tu attends.

Et j'attends de toi que tu veuilles enfin bien faire ce que je t'ai demandé (et rien d'autre).
 
bonsoir le fil
il faut pas chercher 4 ou 5 chiffre il faut cherche"NCA" + espace + 5 chiffres et supprimer "NCA " du résultat

=SIERREUR(SUBSTITUE(SI(TROUVE("NCA ";A1;1);GAUCHE(A1;CHERCHE("NCA ";A1;1)+7);"");"NCA ";"");"")

Salut ! Cela marche uniquement si j'ai "NCA" ou "NCR" dans ma ligne, or ce n'est pas toujours le cas comme tu peux le voir dans l'exemple Excel. Merci !
 

Si A1 contient ce que tu as écrit, je souhaite avoir en B1 : 12345 et en C1 : Vide.

(Car dans ton exemple, il n'y a qu'un numéro à 5 chiffres et pas de numéro à 4 chiffres).
 
Enfin (il n'est jamais trop tard pour bien faire) .
La solution passe par une fonction personnalisée, à mettre dans un module standard :
VB:
Public Function extrait(ch As String, n As Integer) As String
  Dim k As Long, flt As String, titi
  flt = String(n, "#")
  titi = Split(StrConv(ch, vbUnicode), Chr(0))
  For i = 0 To UBound(titi) - 1
   If Not IsNumeric(titi(i)) Then titi(i) = Chr(1)
  Next
  titi = Split(Join(titi, ""), Chr(1))
  For k = 1 To UBound(titi)
    If titi(k) Like flt Then
      extrait = extrait & "-" & titi(k)
    End If
  Next
  extrait = Mid(extrait, 2)
End Function
Et à utiliser ainsi :
en B1 : formule (à tirer ensuite vers le bas) :
Code:
=extrait(A1;5)
et en C1 : formule (à tirer ensuite vers le bas) :
Code:
=extrait(A1;4)

et sans REGEX (natif sur les PC mais inhibé sur certains, dont le mien 🙂 )
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…