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,
 

Discussions similaires

Statistiques des forums

Discussions
314 653
Messages
2 111 577
Membres
111 205
dernier inscrit
Adrien25