VBA Excel, affecter le même format à toutes les cellules de la colonne A
Chatzii
Messages postés3Date d'inscriptionvendredi 8 avril 2011StatutMembreDernière intervention13 avril 2011
-
10 avril 2011 à 15:28
NHenry
Messages postés15117Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention10 mai 2024
-
13 avril 2011 à 13:06
Bonjour,
je suis débutante en VBA et voici mon souci:
je voudrais a l aide d un code VBA formater les cellules de la colonne A sous cette forme: "zz ABC 01 CE 123"
- les deux premier caractères "zz" peuvent etre mis pour des valeurs numériques genre "01" ou alors rester sous la forme "zz"
- les chaines de caractères "ABC" et "CE" n'acceptent que les lettres alphabétiques
- les chaines de caractères "01" et "123" n'acceptent que les valeurs numériques
Les chaines de caractères seront séparées l'une de l'autre par un espace.
Et chaque chaine de caractère qui ne respectera pas son format sera marquée en rouge aussi longtemps qu'elle ne sera pas corrigée.
jai commencé déja avec ce code mais je suis un peu coincée au niveau d'inserer les espaces dans mon string et de verifier que chaque chaine de caractère est belle et bien a sa position.
Et comme dernier truc j'aimerais que le code soit fait de facon dynamic de telle sorte que meme si la colonne A est déplacée vers le milieu que ce code reste uniquement valable pour cette nouvelle colonne oú la colonne A aura été déportée qui en fait n est rien dautre que notre colonne A du départ.
Dans mon fichier Excel j ai affecté à chaque colonne de ma feuille de travail un nom, ceci dit la colonne A se nomme "K_Num"
Merci d'avance pour votre intervention.
voici mon code:
Sub FormaterCellule()
Dim i As Integer
Dim Chaine As String
Dim Str(5) As String
Dim a As Integer
Dim RowRunner As Integer
For RowRunner = 3 To ActiveSheet.UsedRange.Rows.Count
Chaine = ActiveSheet.Cells(RowRunner, 1)
For i 0 To UBound(Str) - 1 ' For i 0 To 4
With Sheets("TauxEuro")
For a = 1 To Len(Str(i))
If i = 0 Then
If IsNumeric(Mid(Str(i), a, 1)) = True Then
.Cells(RowRunner, 1).Characters(Start:=1, Length:=2).Font.Color = vbRed
End If
ElseIf i = 1 Then
If IsNumeric(Mid(Str(i), a, 1)) = True Then
.Cells(RowRunner, 1).Characters(4,3).Font.Color = vbRed
End If
ElseIf i = 2 Then
If IsNumeric(Mid(Str(i), a, 1)) = False Then
.Cells(RowRunner, 1).Characters(8,2).Font.Color = vbRed
End If
ElseIf i = 3 Then
If IsNumeric(Mid(Str(i), a, 1)) = True Then
.Cells(RowRunner, 1).Characters(11,2).Font.Color = vbRed
End If
ElseIf i = 4 Then
If IsNumeric(Mid(Str(i), a, 1)) = False Then
.Cells(RowRunner, 1).Characters(13,3).Font.Color = vbRed
End If
End If
Next a
End With
Next i
Next RowRunner
End Sub
A voir également:
VBA Excel, affecter le même format à toutes les cellules de la colonne A
Chatzii
Messages postés3Date d'inscriptionvendredi 8 avril 2011StatutMembreDernière intervention13 avril 2011 11 avril 2011 à 14:40
Super cool ton idée NHenry - Merci
jai ecris un nouveau code qui marche aussi bien seulement je voudrais que mon code reste dynamic mais kan je remplace le "A" de Range("A" & Rowrunner) par "K_Num" qui est en fait le nom que j ai affecté a la colonneA cad: Range("K_Num" & Rowrunner), ca me signale une erreur(1004). Apparement la méthode 'Range' pour l objet '_Worksheet' n est pas compatible.
Quelqu'un aurait'il une idée ? Merci
voici mon nouveau code qui marche:
For Rowrunner = 3 To ActiveSheet.UsedRange.Rows.Count
If Not Range("A" & Rowrunner).Value Like "[A-Z][A-Z] [A-Z][A-Z][A-Z] ## [A-Z][A-Z] ###" And _
Not Range("A" & Rowrunner).Value Like "## [A-Z][A-Z][A-Z] ## [A-Z][A-Z] ###" Then
Range("A" & Rowrunner).Font.Color = vbRed
Else
Range("A" & Rowrunner).Font.Color = vbBlack
End If
Next Rowrunner
Chatzii
Messages postés3Date d'inscriptionvendredi 8 avril 2011StatutMembreDernière intervention13 avril 2011 13 avril 2011 à 10:44
salut NHenry,
pourrais tu etre un peu plus explicite stp?
jai remplacé Range("A" & Rowrunner).Value par Cells(Rowrunner, "K_Num").Value et ca me renvoit Erreur 13.
Comment y procéder?
Vous n’avez pas trouvé la réponse que vous recherchez ?