[VBA] - Majuscule en couleur

blap_psx

XLDnaute Nouveau
Bonjours à tous,

Dans le but de bien faire la distinction entre les majuscules et les minuscules dans des champs de mot de passe (liste de mot de passe d'une 30ène de boite mail pro), j'ai écrit la petite macro suivante.

Code:
Sub Test()

'juste pour le permettre de verifier que les variables était bien attribué
Cel = Selection

For i = 1 To Len(Cel)

'juste pour le permettre de verifier que les variables était bien attribué
ActiveCell = Cel
test1 = ActiveCell.Characters(Start:=i, Length:=1).Text
test2 = UCase(test1)

'test si la lettre est en MAJ - Comparaison de la lettre avec son équivalent en UperCase
    If test1 = UCase(test1) Then
        ActiveCell.Characters(Start:=i, Length:=1).Font.ColorIndex = 3
    End If
Next i
End Sub

Le soucis, c'est que la macro executé sur une cellule contenant, par exemple :
A1=lcKZtEyV

me retourne

lcKZtEyV

En mode pas à pas, j'ai bien les lettres Majuscule qui passe en couleurs, chacune leurs tours, mais aucune n'est sauvegardé. Uniquement la dernière si celle ci est une majuscule.

-> lcKZtEyV (test l)
-> lcKZtEyV (test c)
-> lcKZtEyV (test K)
-> lcKZtEyV (test Z)
-> lcKZtEyV (test t)
-> lcKZtEyV (test E)
-> lcKZtEyV (test y)
et enfin
lcKZtEyV

Comment faire pour pouvoir conservé cette modification et obtenir :

lcKZtEyV

La commande ActiveCell.Characters(Start:=i, Length:=1).Font.ColorIndex = 3 n'es pas memorisé à chaque tour du For, uniquement sur le dernier ...

Je sèche ( et je suis pas un spécialiste du VBA )

Merci d'avance.

@+
 
Dernière édition:

mutzik

XLDnaute Barbatruc
Re : [VBA] - Majuscule en couleur

bonjour

Sub Test()
Dim cpt, i, caract
For i = 1 To Len(ActiveCell)
caract = Mid(ActiveCell, i, 1)
If caract = UCase(caract) Then
ActiveCell.Characters(Start:=i, Length:=1).Font.ColorIndex = 3
End If
Next i
End Sub
 

teodormircea

XLDnaute Occasionnel
Re : [VBA] - Majuscule en couleur

Voila un code plus simple qui utilise asc pour chercher les majuscules

Sub color()
For Each cel In ActiveSheet.UsedRange
For n = 1 To Len(cel)
If Asc(Mid(cel, n, 1)) >= 65 And Asc(Mid(cel, n, 1)) <= 90 Then
cel.Characters(Start:=n, Length:=1).Font.ColorIndex = 3
End If
Next n
Next cel
End Sub
 

Discussions similaires

Réponses
14
Affichages
688

Statistiques des forums

Discussions
312 377
Messages
2 087 738
Membres
103 655
dernier inscrit
MOUNIRACH16