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 SubUne 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
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 SubCode à 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