Correction de la casse sur une feuille

Bonjour à tous,

Je souhaiterais contrôler et si nécessaire remplacer la casse de certaines cellules pour qu'elles puissent être traitées dans une procédure qui suit et qui contrôle que toutes les valeurs renseignées soient valides.

Ex : "no" (pour Nord Ouest) ne fonctionne pas il faut que la casse soit dans ce cas en maj : "NO"
"pr" pour présent ne fonctionne pas il faut l'écrire "Pr"
"assez fort" -> "Assez fort"
"nsp" -> "NSP"

Il y a dans mon fichier entre 100 et 200 valeurs à traiter de cette manière réparties dans une centaine de colonne et je voulais savoir quelle serait la solution la plus adaptée, la plus "propre" et la plus simple à utiliser.

Pour l'instant j'ai commencé en utilisant ceci qui fonctionne :

Sub Correction_Codes()
    Dim derLigne As Long
    Dim derCol As Integer

    derLigne = Range("B" & Rows.Count).End(xlUp).Row 'Recherche de la dernière ligne
    derCol = Cells(12, Cells.Columns.Count).End(xlToLeft).Column
    celDep = Range("B12").Address
    ColT = Split(Columns(derCol).Address(ColumnAbsolute:=False), ":")(1)
    celArv = Range(ColT & Rows.Count).End(xlUp).Rows.Address
    Set plage = Range(celDep, celArv)
    plage.Select

    With Selection
        .Cells.Replace What:="no", Replacement:="No", LookAt:=xlWhole
        .Cells.Replace What:="pr", Replacement:="Pr", LookAt:=xlWhole
        .Cells.Replace What:="nsp", Replacement:="NSP", LookAt:=xlWhole
        .Cells.Replace What:="ind", Replacement:="IND", LookAt:=xlWhole
        .Cells.Replace What:="cpl", Replacement:="CPL", LookAt:=xlWhole
        .Cells.Replace What:="es", Replacement:="Es", LookAt:=xlWhole
        .Cells.Replace What:="nsp", Replacement:="NSP", LookAt:=xlWhole
        .Cells.Replace What:="co", Replacement:="Co", LookAt:=xlWhole
        .Cells.Replace What:="nul", Replacement:="Nul", LookAt:=xlWhole
        .Cells.Replace What:="faible", Replacement:="Faible", LookAt:=xlWhole
        .Cells.Replace What:="modéré", Replacement:="Modéré", LookAt:=xlWhole
        .Cells.Replace What:="assez fort", Replacement:="Assez fort", LookAt:=xlWhole
        .Cells.Replace What:="fort", Replacement:="Fort", LookAt:=xlWhole
        .Cells.Replace What:="très fort", Replacement:="Très fort", LookAt:=xlWhole
        .Cells.Replace What:="n", Replacement:="N", LookAt:=xlWhole
        .Cells.Replace What:="no", Replacement:="NO", LookAt:=xlWhole
        .Cells.Replace What:="o", Replacement:="O", LookAt:=xlWhole
        .Cells.Replace What:="so", Replacement:="SO", LookAt:=xlWhole
        .Cells.Replace What:="s", Replacement:="S", LookAt:=xlWhole
        .Cells.Replace What:="se", Replacement:="SE", LookAt:=xlWhole
        .Cells.Replace What:="e", Replacement:="E", LookAt:=xlWhole
        .Cells.Replace What:="ne", Replacement:="NE", LookAt:=xlWhole

    End With

    Range("B13").Select

End Sub

Une solution envisagée serait d'utiliser 2 colonnes et de faire remplacer les valeurs de la colonne 1 par celles de la colonne 2 ?

Colonne1 -> Colonne2
nsp -> NSP
pr -> Pr
très fort ->

Très fort

Je joins un fichier ex dans lequel j'ai renseigné quelques cellules. Le tableau commence volontairement en B12 (ligne de titre) comme sur mon fichier de travail.

Merci d'avance pour vos idées.

Bonne (chaude) journée,

Dan

720220618.xlsm (24.10 Ko)

Bonjour,

Votre idée est la bonne. Par exemple avec un tableau des correspondances, nommé "TAB", à 2 colonnes :

Sub Correction_Codes()
With range("TAB")
    for i = 1 to .rows.count
        activesheet.Cells.Replace What:=.cells(i,1).value, Replacement:=.cells(i,2).value, LookAt:=xlWhole
    next i
end with
End Sub

Code à exécuter depuis la feuille où auront lieu les remplacements.

Cdlt,

Bonjour,

Merci beaucoup, ça fonctionne très bien et c'est beaucoup plus propre, plus simple et moins long que ma méthode précédente.

Encore merci,

Dan

Rechercher des sujets similaires à "correction casse feuille"