Modifier texte

Bonjour

J'ai un code pour mettre mon texte en nom propre:

Sub Min() '
Dim Lg%, i%
Lg = Range("A65536").End(xlUp).Row
If Mmis = False Then

    For i = 1 To Lg
       'Cells(i, 1) = LCase(Cells(i, 1)) 'minuscule
       Cells(i, 1) = Application.Proper(Cells(i, 1)) 'Nom propre

    Next i
    Mmis = False
End If
End Sub

J'aimerai le conserver mais lui apportant une modification si possible

Lorsque je tape ceci 1ére il me le convertie 1Ére ou 2éme il me le convertie 2Éme

Et-il possible de modifier?

Merci d'avance

Max

Bonjour,

Avec un Select Case :

Sub Min()

    Dim Lg%, i%

    Lg = Range("A65536").End(xlUp).Row

    If Mmis = False Then

        For i = 1 To Lg
            'Cells(i, 1) = LCase(Cells(i, 1)) 'minuscule
            Select Case Cells(i, 1).Value
                Case "1ére", "2éme" 'ajouter les exeptions ici
                    'ne rien faire
                Case Else
                    Cells(i, 1) = Application.Proper(Cells(i, 1)) 'Nom propre
            End Select
        Next i

        Mmis = False

    End If

End Sub

Bonjour,

Comme le précise Job75, dans ton post sur un autre forum, tu ne te creuse pas beaucoup la tête, car la réponse est déjà presque faite

Néanmoins, rajoute

Cells(i, 1).Replace "É", "é", xlPart

avant le Next i

Bonjour valmax,

dans ta sub Min(), tu as :

If Mmis = False Then
  ...
  Mmis = False
End If

1) tu testes Mmis sans l'avoir déclaré, et sans lui avoir affecté de valeur

2) tu le mets à False dans un test qui fait qu'c'est déjà à False

le point 2) est forcément inutile car après le test sur False, y'a rien qui met Mmis à True

le point 1) est lui aussi inutile, sauf si Mmis est une variable globale initialisée avant

pour info : c'est 1ère et 2ème ; pas 1ére, ni 2éme

dhany

Salut Dhany

D’après toi je doit enlevé

If Mmis = False Then

Mmis = False

Et je te remercie pour

pour info : c'est 1ère et 2ème ; pas 1ére, ni 2éme

@+

Max

1) tu peux enlever Mmis = False

2) si Mmis n'est pas une variable globale,

tu peux enlever :

If Mmis = False Then

End If

dhany

Re,

je te remercie

Bonne journée

Max

@Max

ta sub résumée se présente alors ainsi :

Sub Min()
  Dim Lg%, i%
  Lg = Range("A" & Rows.Count).End(xlUp).Row
  For i = 1 To Lg
    'Cells(i, 1) = LCase(Cells(i, 1)) 'minuscule
    Cells(i, 1) = Application.Proper(Cells(i, 1)) 'Nom propre
  Next i
End Sub

avec Dim Lg%, i%, note que ces 2 variables sont locales à la sub car la déclaration Dim se trouve dans la sub ; conséquence : les valeurs de Lg et i (initialisées par défaut à 0) sont connues uniquement dans la sub Min(), pas en dehors.

à l'inverse, une variable déclarée en dehors d'une sub (et forcément en début de module) est une variable globale dont la valeur est connue de toutes les subs du Module où la déclaration est écrite ; si une telle variable doit être connue d'un autre module, il faut la déclarer publique ; pour plus d'infos, voir l'aide VBA sur la portée des variables.

dhany

on s'est croisés ; j'viens de t'écrire un complément : voir post ci-dessus.

bonne journée à toi aussi.

dhany

Rechercher des sujets similaires à "modifier texte"