extraire ce qu'il y a entre parenthese

Tiger75

XLDnaute Nouveau
Code:
For j = 0 To UBound(tab_str_temp)
            If tab_str_temp(j) <> "" Then
                sPremier_caractere = Mid(tab_str_temp(j), 1, 1)
                sDernier_caractere = Mid(tab_str_temp(j), Len(tab_str_temp(j)), 1)
                If Len(tab_str_temp(j)) > 9 Then
                    If sPremier_caractere = "(" Then
                        sLCDV_temp = Mid(tab_str_temp(j), 2) 'on récupère la formule sans la parenthèse
                    ElseIf sDernier_caractere = ")" Then
                        sLCDV_temp = Mid(tab_str_temp(j), 1, Len(tab_str_temp(j)) - 1) 'on récupère la formule sans la parenthèse
                    Else
                        sLCDV_temp = tab_str_temp(j)
                    End If
                Else
                    sLCDV_temp = tab_str_temp(j)
                End If
               
                'on va rechercher dans le tableau si on a une correspondance
                For k = 0 To iNbECTotal
                    If sLCDV_temp <> "OU" Or sLCDV_temp <> "ET" Or sLCDV_temp <> "(" Or sLCDV_temp <> ")" Or sLCDV_temp = "" Then
                        If sLCDV_temp = sTab_LCDV(k) Then
                            If Len(tab_str_temp(j)) > 9 Then
                                If sPremier_caractere = "(" Then
                                    tab_str_temp(j) = "(" & sTab_F(k) 'on recopie l'EC
                                ElseIf sDernier_caractere = ")" Then
                                    tab_str_temp(j) = sTab_F(k) & ")" 'on recopie l'EC
                                Else
                                    tab_str_temp(j) = sTab_F(k)
                                End If
                            Else
                                tab_str_temp(j) = sLCDV_temp
                            End If
                               k = iNbECTotal + 100
                        End If
                      
                    End If
                Next k
            End If
           
        Next j

Bonjour j'ai un code qui me permet de récuperer ce qu'il y avant la parenthèse de fin et après la parenthese de Début
Exemple dans ma cellule j'ai :
(y=c +d
OU
a+b=c(e+f)
OU
d+f=e)
le code va me recuperer
tab_str_temp(0)=" y=c +d"
tab_str_temp(1)="OU"
tab_str_temp(2)="a+b=c(e+f"
tab_str_temp(3)="OU"
tab_str_temp(4)="d+f=e"

mais mon problème c'est que tab_str_temp(2) doit me renvoyer "a+b=c(e+f)" quelqu'un peut il m'aider a modifier mon code ?
 

vgendron

XLDnaute Barbatruc
Hello..
tiens.. ca me rappelle quelque chose :)
dans ce que je connais.. il y a une boucle sur CHAQUE élément du tablo (issu du Split) pour enlever les espaces
toi . ce que tu souhaites, c'est enlever des parenthèses uniquement sur le premier élément du tablo.. et le Dernier élément.
et comme je présume que tu as recopié la boucle.. forcément sur l'élement tab_str_temp(2), ca t'a enlevé la dernière parenthèse..
donc. après avoir splitté, supprimé les espaces et le dernier retour chariot
il faut que tu supprimes la parenthèse "(" sur le premier élément "tab_str_temp(0)
et la parenthèse ")" sur le dernier element "tab_str_temp(ubound(tab_str_temp))
 

Tiger75

XLDnaute Nouveau
Justement j'utilise le code pour retirer les espace juste avant et j'obtiens :
(y=c +d
OU
a+b=c(e+f)
OU
d+f=e)

en fait je pensais plus a rajouter une nouvelle condition si on trouve ")" à la fin, vérifier qu'on ne trouve pas un "(" après le "=" sur une meme ligne, et si c'est le cas je ne touche pas à ma formule.
 

vgendron

XLDnaute Barbatruc
j'ai repris le code de ton autre post et j'ai apporté la modif pour enlever les parenthèses.. si elles existent

VB:
Sub Bouton()
Dim str_temp As String
Dim tab_str_temp() As String
Dim iNbLigneDci As Integer

'iNbLigneDci = Application.WorksheetFunction.CountA(Columns(2)) - 1
 iNbLigneDci = Range("R" & Rows.Count).End(xlUp).Row - 2
   
     For i = 3 To iNbLigneDci + 2
         chaine = ""
         tab_str_temp = Split(Cells(i, "R"), Chr(10))
         For j = UBound(tab_str_temp) To 0 Step -1
             chaine = Trim(tab_str_temp(j)) & Chr(10) & chaine
         Next j
         ChainePresqueFinale = Left(chaine, Len(chaine) - 1)
         If Left(ChainePresqueFinale, 1) = "(" Then ChainePresqueFinale = Right(ChainePresqueFinale, Len(ChainePresqueFinale) - 1) 'on supprime le "(" du début
         If Right(ChainePresqueFinale, 1) = ")" Then ChainePresqueFinale = Left(ChainePresqueFinale, Len(ChainePresqueFinale) - 1) 'on supprime le ")" de fin
         'Cells(i, "R") = Mid(ChainePresqueFinale, 2, Len(ChainePresqueFinale) - 2) ' les deux lignes précédentes peuvent etre mixées si on est sur d'avoir "(" au début T ")" en fin
         Cells(i, "R") = ChainePresqueFinale
         
     Next i
End Sub
 

Discussions similaires