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

XL 2019 Extraire une chaîne de caractère après un format (chiffres)

niiroby

XLDnaute Nouveau
Bonjour à tous,

J'ai des intitulés composés de chaines de caractères séparées par un format au milieu.
Par exemple EXCEL 20x151 DOWNLOADS.

Je souhaiterais séparer EXCEL 20x151 et DOWNLOADS dans des cellules séparées.
A savoir que les chaines de caractères sont à longueur variable avec un nombre d'espace variable.
Les formats sont également à format variable.
Un résultat en VBA me conviendrait également sans problème.

J'ai fais quelques tentatives que vous pourrez retrouver dans le fichier joint.
Le problème est plus compréhensible dans mon fichier.

Existe-t-il vraiment une solution à mon problème ?

Je vous remercie d'avance pour votre aide.

Cordialement,
 

Pièces jointes

  • SEPARATION APRES CHIFFRE ALEATOIRE.xlsx
    11 KB · Affichages: 9

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour @niiroby, Mapomme,
Un essai avec une fonction perso :
VB:
Function Découpe(Chaine$, N%)
Dim i%, j%, tablo
tablo = Split(Chaine, " "): j = 0
For i = 0 To UBound(tablo)
    If Len(tablo(i)) > 0 Then
        tablo(j) = tablo(i)
        j = j + 1
    End If
Next i
If N = 1 Then
    For i = 0 To j - 3
        Découpe = Découpe & tablo(i) & " "
    Next i
Else
    For i = j - 2 To j - 1
        Découpe = Découpe & tablo(i) & " "
    Next i
End If
End Function
 

Pièces jointes

  • SEPARATION APRES CHIFFRE ALEATOIRE.xlsm
    15.7 KB · Affichages: 2

niiroby

XLDnaute Nouveau
Merci à toi mapomme !

C'est tout à fait parfait !
J'ai juste modifié par LIGNE($1:99).

Aurais-tu une solution pour pouvoir intégrer cette formule en VBA ?

Je vais chercher de mon côté je pars là dessus pour l'instant :

VB:
Cells.Find(What:="nom_pro").Select
ActiveCell.Offset(2, 0).Select
Selection.FormulaArray = "=GAUCHE(Feuil1!D2;MAX(SI(ESTNUM(1*STXT(Feuil1!D2;LIGNE($1:99);1));LIGNE($1:99);"")))"

Je pense qu'il me reste à traduire les formules.

Encore merci pour ton aide !

Cordialement.
 

niiroby

XLDnaute Nouveau
Merci à tous j'ai regardé vos solutions elles sont fonctionnelles !

Je suis tout de même parti sur ta solution mapomme qui ressemble à ça maintenant :

Selection.FormulaArray = "=LEFT(Feuil1!R[-2]C[1],MAX(IF(ISNUMBER(1*MID(Feuil1!R[-2]C[1],ROW(R1:R99),1)),ROW(R1:R99),"""")))"

Encore merci à tous pour votre aide, vous êtes au top.
(je ne sais pas trop comment mettre en résolu)

Bonne journée,
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Niiroby, Mapomme, Pierrejean,
Juste pour ne pas laisser un bug sur ce fil, une V2 de ma fonction perso.
La V1 ne renvoyait que les deux derniers mots de la phrase, et non tous les mots après la valeur numérique.
 

Pièces jointes

  • SEPARATION APRES CHIFFRE ALEATOIRE V2.xlsm
    16.6 KB · Affichages: 3

Discussions similaires

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