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

extraire ce qu'il y a entre parenthese

  • Initiateur de la discussion Initiateur de la discussion Tiger75
  • Date de début Date de début

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 !

T

Tiger75

Guest
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 ?
 
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))
 
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.
 
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
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
611
Réponses
8
Affichages
352
Réponses
4
Affichages
686
Réponses
4
Affichages
259
Réponses
2
Affichages
379
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…