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
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
=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));"")
et tu étends jusqu’à "F"=SIERREUR(FILTRE.XML(SUBSTITUE(SUBSTITUE(SUBSTITUE("<R>"&$B3&"</R>";"(";"<c>");")";"</c>"); ";"; "</c><c>");"//c[position()=" & COLONNE(A1) &" ]");"")
grand merci à vous Phil69970 , je prend donc votre solution
merci pour votre aide, au vu de la facilité que propose Phil69970 j'ai privilégié sa solution..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..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.. et en effet j'ai ressorti un vieux 2003 ... a l'avenir ce sera du xlsx hahaBonjour @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..Bonsoir Renardy, vgendron,
Voyez le fichier joint et cette fonction VBA :
à placer impérativement dans un module standard.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
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 à vousBonjour à tous,
Une proposition avec power query que j'avais oubliée d'envoyer
=FRACTIONNER.TEXTE(TEXTE.APRES(B3;"(");{";";")"})
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);")";"")