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

Mettre les caractères entre paranthèse en minuscules

  • Initiateur de la discussion Initiateur de la discussion Chris57
  • 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 !

Chris57

XLDnaute Occasionnel
Bonjour à tous,

je fait actuellement un fichier excel pour renommer des mp3

J'ai grâce au forum trouvé le moyen de les récupérer et les lister dans excel, puis de modifier la casse selon mes goûts, mais il me reste un point :
comment en vba mettre en minuscules des caractères entre parenthèse, dans un cellule .

Exemple de texte dans une cellule :
17- TONY GARCIA (FREESTYLE) - Take Me In Your Arms - 1998.mp3

je voudrais que le mot FREESTYLE soit en minuscule.

Quelqu'un a une idée ?
 
Re : Mettre les caractères entre paranthèse en minuscules

Salut Chris57,

Si tu décompose, ça donne ça :
Code:
MP3 = "17- TONY GARCIA (FREESTYLE) - Take Me In Your Arms - 1998.mp3"
Pos1 = InStr(1, MP3, "(")
Pos2 = InStr(1, MP3, ")")
Tmp(1) = Left(MP3, Pos1)
Tmp(2) = LCase(Mid(MP3, Pos1 + 1, Pos2 - Pos1 - 1))
Tmp(3) = Mid(MP3, Pos2, Len(MP3) - Pos2 + 1)
MP3 = Tmp(1) & Tmp(2) & Tmp(3)

A toi ensuite de raccourcir éventuelement le code 😉

A+
 
Re : Mettre les caractères entre paranthèse en minuscules

Bonjour Chris, Bruno🙂

une autre solution, uniquement pour le fun, à condition qu'il n'y ait pas plus de 2 parenthèses...

Code:
Range("A1").Value = Replace(Range("A1").Value, Split(Split(Range("A1").Value, "(")(1), ")")(0), _
    LCase(Split(Split(Range("A1").Value, "(")(1), ")")(0)), , , vbBinaryCompare)


bonne journée
@+
 
Re : Mettre les caractères entre paranthèse en minuscules

Salut Chris, Bruno🙂, Pierrot🙂, Job🙂, le Forum

Une autre Formule
Si texte en A1 mettre cette formule en A2

Code:
=STXT(A1;1;CHERCHE("(";A1;1))&MINUSCULE(STXT(A1;CHERCHE("(";A1;1)+1;-(CHERCHE("(";A1;1)-CHERCHE(")";A1;1))))&STXT(A1;CHERCHE(")";A1;1)+1;500)


Etrigolezpaslesgars...ellefonctionne
😀

Bonne Journée
 
Re : Mettre les caractères entre paranthèse en minuscules

Merci à tous les trois pour votre aide, même si je préfère avoir un code VBA et non des formules !! Les 2 codes vba fonctionnent parfaitement pour 1 titre, mais si j'intègre ça dans une boucle ça plante :

Code:
Sub CORRECTION_majuscules()
' Met les mots entre paranthèses en minuscules
        For Each X In [D2:D500]
            If X <> "" Then
            MP3 = X
                    Pos1 = InStr(1, MP3, "(")
                    Pos2 = InStr(1, MP3, ")")
                    T1 = Left(MP3, Pos1)
                    T2 = LCase(Mid(MP3, Pos1 + 1, Pos2 - Pos1 - 1))
                    T3 = Mid(MP3, Pos2, Len(MP3) - Pos2 + 1)
                    MP3 = T1 & T2 & T3
            X = MP3
            End If
        Next X

End Sub

Là j'ai le message "Argument ou appel de procédure incorrecte". J'ai également remplacé les Tmp(1), Tmp(2).... par T1 et T2 car ça générait également une erreur...

Code:
Sub CORRECTION_majuscules()
' Met les mots entre paranthèses en minuscules
For Each X In [D2:D500]
            If X <> "" Then 
               Y = Replace(X.Value, Split(Split(X.Value, "(")(1), ")")(0), _
                     LCase(Split(Split(X.Value, "(")(1), ")")(0)), , , vbBinaryCompare)
                   X = Y    
            End If
        Next X

End Sub

là j'ai le message : "indice n'appartient pas à la sélection

Bref les 2 possibilités plantent et mes connaissances en VBA sont insuffisantes pour trouver la solution...
 
Dernière édition:
Re : Mettre les caractères entre paranthèse en minuscules

Re

le code ci-dessous fonctionne chez moi, à condition bien sur qu'il y ait des parenthèses dans les cellules non vides :

Code:
Option Explicit
Sub test()
Dim x As Range
For Each x In Range("D2:D" & Range("D65536").End(xlUp).Row)
    If x.Value <> "" Then
        x.Value = Replace(x.Value, Split(Split(x.Value, "(")(1), ")")(0), _
            LCase(Split(Split(x.Value, "(")(1), ")")(0)), , , vbBinaryCompare)
    End If
Next x
End Sub

bon après midi
@+
 
Re : Mettre les caractères entre paranthèse en minuscules

J'y suis arrivé comme ça :

Code:
Dim x As Range
    For Each x In Range("D2:D500")
        If x.Value <> "" Then
            For i = 1 To Len(x)
                If Mid(x, i, 1) = "(" Then
        
                    x.Value = Replace(x.Value, Split(Split(x.Value, "(")(1), ")")(0), _
                    LCase(Split(Split(x.Value, "(")(1), ")")(0)), , , vbBinaryCompare)
                End If
            Next
    End If
Next x

vous en pensez quoi ?
 
Re : Mettre les caractères entre paranthèse en minuscules

Re

pour tester s'il y a bien des parenthèses, j'aurais peut être codé ainsi, doit être plus rapide à l'exécution :

Code:
Dim x As Range
For Each x In Range("D2:D" & Range("D65536").End(xlUp).Row)
    If x.Value <> "" And InStr(x.Value, "(") > 0 And InStr(x.Value, ")") > 0 Then
        x.Value = Replace(x.Value, Split(Split(x.Value, "(")(1), ")")(0), _
            LCase(Split(Split(x.Value, "(")(1), ")")(0)), , , vbBinaryCompare)
    End If
Next x

@+
 
- 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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…