XL 2019 Comment extraire séparément plusieures chaines de caractères ou chiffres/nombres depuis une cellule avec libellé complexe alpha numérique

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 !

Renardy

XLDnaute Nouveau
Bonjour à tous

D'emblée je trouve ce site super il nous permet à tous de progresser avec notre super outil qu'est EXCEL. J' y ai toujours eu reponse à mes (rares) demandes , et je vous remercie.
Voici une autre petite demande que je suis sur, beaucoup sauront resoudre avec la formule XTFC avec laquelle j'ai un peu de mal..

>>> Je souhaiterai extraire vers des cellules sur des colonnes adjacentes distinctes des "morceaux" de données (soit lettres, soit chiffres ), contenus entre parenthese dans un libellé global 'une cellule de la colonne B.
Voir l'exemple ci joint.

Merci pour votre aide concernant les formules à créer dans les colonnes C, D, E et F

bien cordialement
 

Pièces jointes

Dernière édition:
BOnjour

avec une fonction personnalisée
VB:
Function extraireEle(target, num) As Variant
    PU = Split(Split(target, "(")(1), ";")(num - 1)
    
    If num > 1 Then
        extraireEle = CDbl(Replace(PU, ")", ""))
    Else
        extraireEle = Replace(PU, ")", "")
    End If
End Function

sinon ca va etre avec une formule alambiquée à base de trouve, stxt, gauche; droite....
 
Bonsoir Renardy, vgendron,

Voyez le fichier joint et cette fonction VBA :
VB:
Function Ventiler(x$)
Dim deb%, fin%, s
deb = InStr(x, "(") + 1
fin = InStr(x, ")")
s = Split(Mid(x, deb, fin - deb), ";")
Ventiler = s 'vecteur horizontal
End Function
à placer impérativement dans un module standard.

Sélectionnez C3:F3, entrez la formule =Ventiler(B3) dans la barre de formule.
Puis validez en bloc matriciellement par les touches Ctrl+Maj+Entrée.
Tirez la plage C3:F3 vers le bas.

A+
 

Pièces jointes

Bonjour @Renardy 🙂, @vgendron 😉, @job75 😉, @Phil69970 😉,

Une proposition de solution avec une seule formule matricielle 🤪. A valider par la combinaison des trois touches Ctrl+Maj+Entrée. La validation peut se faire simplement par la touche Entrée sur les dernières versions d'Excel (2019 => je ne sais pas).

La formule suivante est à placer dans la cellule C3 puis à recopier vers la droite et vers le bas :
=SIERREUR(SIERREUR(1*STXT(";"&SUBSTITUE(SUBSTITUE(STXT($B3;CHERCHE("(";$B3)+1;9999);" ";"");")";"")&";";PETITE.VALEUR(SI(STXT(";"&SUBSTITUE(SUBSTITUE(STXT($B3;CHERCHE("(";$B3)+1;9999);" ";"");")";"")&";";LIGNE($A$1:$A$99);1)=";";LIGNE($A$1:$A$99);"");COLONNE(A1))+1;PETITE.VALEUR(SI(STXT(";"&SUBSTITUE(SUBSTITUE(STXT($B3;CHERCHE("(";$B3)+1;9999);" ";"");")";"")&";";LIGNE($A$1:$A$99);1)=";";LIGNE($A$1:$A$99);"");COLONNE(B1))-PETITE.VALEUR(SI(STXT(";"&SUBSTITUE(SUBSTITUE(STXT($B3;CHERCHE("(";$B3)+1;9999);" ";"");")";"")&";";LIGNE($A$1:$A$99);1)=";";LIGNE($A$1:$A$99);"");COLONNE(A1))-1);STXT(";"&SUBSTITUE(SUBSTITUE(STXT($B3;CHERCHE("(";$B3)+1;9999);" ";"");")";"")&";";PETITE.VALEUR(SI(STXT(";"&SUBSTITUE(SUBSTITUE(STXT($B3;CHERCHE("(";$B3)+1;9999);" ";"");")";"")&";";LIGNE($A$1:$A$99);1)=";";LIGNE($A$1:$A$99);"");COLONNE(A1))+1;PETITE.VALEUR(SI(STXT(";"&SUBSTITUE(SUBSTITUE(STXT($B3;CHERCHE("(";$B3)+1;9999);" ";"");")";"")&";";LIGNE($A$1:$A$99);1)=";";LIGNE($A$1:$A$99);"");COLONNE(B1))-PETITE.VALEUR(SI(STXT(";"&SUBSTITUE(SUBSTITUE(STXT($B3;CHERCHE("(";$B3)+1;9999);" ";"");")";"")&";";LIGNE($A$1:$A$99);1)=";";LIGNE($A$1:$A$99);"");COLONNE(A1))-1));"")

nota : pourquoi diable nous fournir un classeur au format Excel 2003 alors que vous utilisez XL 2019 ☹️ ! Bien évidemment la formule proposée ne fonctionne pas avec les très vieilles versions d'excel dont XL2003 (trop de niveaux d'imbrications de parenthèses). Cela faisait belle lurette que je n'avais pas été confronté à cette erreur. Que de bons souvenirs. Ah nostalgie quand tu nous tiens 😢 !


1722556173081.png
 

Pièces jointes

Dernière édition:
Bonjour à tous

@Renardy je te propose ce fichier

Merci de ton retour
grand merci à vous Phil69970 , je prend donc votre solution 🙂
en effet le type de formule
"=Result(STXT(B3;TROUVE("(";B3)+1;TROUVE(")";B3)-TROUVE("(";B3)-1);";";1)"
me satisfait parfaitement et s'est simple à "tirer" dans la plage car je vais avoir plus de 1000 lignes à encoder dans ce tableau..

plus facile que du VBA ou matriciel.. par contre comme on me le signale c'est par habitude que je l'ai publié encore en Excel 2003, je promets de passer en xlsx haha..

merci à tous et bon WE
Renardy
 
BOnjour

avec une fonction personnalisée
VB:
Function extraireEle(target, num) As Variant
    PU = Split(Split(target, "(")(1), ";")(num - 1)
   
    If num > 1 Then
        extraireEle = CDbl(Replace(PU, ")", ""))
    Else
        extraireEle = Replace(PU, ")", "")
    End If
End Function

sinon ca va etre avec une formule alambiquée à base de trouve, stxt, gauche; droite....
merci pour votre aide, au vu de la facilité que propose Phil69970 j'ai privilégié sa solution..
Bon WE
Renardy
 
re
sinon "à l'ancienne avec le filtre.xml
en c3

et tu étends jusqu’à "F"
et après tu étends vers le bas
Regarde la pièce jointe 1201365
merci pour votre aide, au vu de la facilité que propose Phil69970 j'ai privilégié sa solution..
Bon WE
Renardy
Bonjour @Renardy 🙂, @vgendron 😉, @job75 😉, @Phil69970 😉,

Une proposition de solution avec une seule formule matricielle 🤪. A valider par la combinaison des trois touches Ctrl+Maj+Entrée. La validation peut se faire simplement par la touche Entrée sur les dernières versions d'Excel (2019 => je ne sais pas).

La formule suivante est à placer dans la cellule C3 puis à recopier vers la droite et vers le bas :


nota : pourquoi diable nous fournir un classeur au format Excel 2003 alors que vous utilisez XL 2019 ☹️ ! Bien évidemment la formule proposée ne fonctionne pas avec les très vieilles versions d'excel dont XL2003 (trop de niveaux d'imbrications de parenthèses). Cela faisait belle lurette que je n'avais pas été confronté à cette erreur. Que de bons souvenirs. Ah nostalgie quand tu nous tiens 😢 !


Regarde la pièce jointe 1201361
merci pour votre aide, au vu de la facilité que propose Phil69970 j'ai privilégié sa solution.. et en effet j'ai ressorti un vieux 2003 ... a l'avenir ce sera du xlsx haha
Bon WE
Renardy
 
Bonsoir Renardy, vgendron,

Voyez le fichier joint et cette fonction VBA :
VB:
Function Ventiler(x$)
Dim deb%, fin%, s
deb = InStr(x, "(") + 1
fin = InStr(x, ")")
s = Split(Mid(x, deb, fin - deb), ";")
Ventiler = s 'vecteur horizontal
End Function
à placer impérativement dans un module standard.

Sélectionnez C3:F3, entrez la formule =Ventiler(B3) dans la barre de formule.
Puis validez en bloc matriciellement par les touches Ctrl+Maj+Entrée.
Tirez la plage C3:F3 vers le bas.

A+
merci pour votre aide, au vu de la facilité que propose Phil69970 j'ai privilégié sa solution..
Bon WE
Renardy
 
Bonjour le fil

Une formule pour les lecteurs de ce fil qui sont passés à Office 365
=SUBSTITUE(FRACTIONNER.TEXTE(STXT(B3;CHERCHE("(";B3)+1;999);";";;VRAI);")";"")

EDITION
Une formule un plus courte qui utilise deux fonctions disponibles dans O365
FRACTIONNER.TEXTE et TEXTE.APRES
Code:
=FRACTIONNER.TEXTE(TEXTE.APRES(B3;"(");{";";")"})
 
Dernière édition:
re
Bonsoir
le problème avec toutes ces versions c'est que selon le pc (et/ou) la version d'office, ca ne fonctionnera pas la mienne avec filtre.xml fonctionne dans toutes ainsi que toutes les propositions VBA
ce n'est pas un détail à négliger

à méditer
 
- 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
Retour