Porblème boucle if
Fermé
Thom
-
Modifié le 3 mars 2022 à 10:29
SpideyCodeWarrior Messages postés 9 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 5 janvier 2024 - 4 mars 2022 à 14:23
SpideyCodeWarrior Messages postés 9 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 5 janvier 2024 - 4 mars 2022 à 14:23
1 réponse
SpideyCodeWarrior
Messages postés
9
Date d'inscription
dimanche 13 février 2005
Statut
Membre
Dernière intervention
5 janvier 2024
4 mars 2022 à 14:23
4 mars 2022 à 14:23
Bonjour,
voici une macro à mettre dans XL que j'ai réalisé, intentionnellement plus longue afin de la rendre plus facilement compréhensible.
Après avoir sélectionné la plage qui contient le format de vos données, appelez la Macro suivante qui coloriera en rouge là où la cellule est ma formatée.
Donc les deux caractères de gauche doivent être compris entre 1 et 12
Ceux du trimestre entre 1 et 4
Je pars du fait que la valeur d'une cellule est au format MM/TR/YYYY
Exemple : 12/04/2022 pour 4ème trimestre, mois décembre, année 2022
Oli
Oli
voici une macro à mettre dans XL que j'ai réalisé, intentionnellement plus longue afin de la rendre plus facilement compréhensible.
Après avoir sélectionné la plage qui contient le format de vos données, appelez la Macro suivante qui coloriera en rouge là où la cellule est ma formatée.
Donc les deux caractères de gauche doivent être compris entre 1 et 12
Ceux du trimestre entre 1 et 4
Je pars du fait que la valeur d'une cellule est au format MM/TR/YYYY
Exemple : 12/04/2022 pour 4ème trimestre, mois décembre, année 2022
Oli
Sub mcrFindBadFormat()
'1) Copier les valeurs suivantes en A1
'
' 01/03/2020 13/12/2021 06/04/2019
' 17/06/2019 04/01/2020 11/04/2020
'
'2) Copier la procédure suivante dans les macros
'
'3) Sélectionner la plage où se trouve les valeurs
' et la procédure coloriera les cellules en rouge
' là où la valeur du mois, ou du trimestre ou
' de l'année ne sont pas correctement formatés.
'
Dim cCellule As Variant
Dim s As Variant
Dim v As String
Dim sMois As String
Dim sTrim As String
Dim sAn As String
Dim bFormatOk As Boolean
Dim iMois As Integer
Dim iTrim As Integer
Dim iAnnee As Integer
Dim iAnneeCourante As Integer
iAnneeCourante = Year(Date)
Set s = Selection
For Each cCellule In s
bFormatOk = True
v = cCellule.Value
'
' Format attendu 10 caractères, MM/TR/YYYY Exemple : 12/03/2020 --> Ok
' 22/1/2019 --> NOk !
'Longueur correcte ?
If Len(v) <> 10 Then
bFormatOk = False
ElseIf Len(v) = 10 Then
'
' Format mois trimestre année Ok ?
' Mois
'
sMois = Left(v, 2)
If IsNumeric(sMois) Then
iMois = sMois
If iMois >= 1 And iMois <= 12 Then
'Les deux caractères de gauche se trouvent
'entre 1 et 12 et donc sont les valeurs
'possibles du chiffre pour le mois
bFormatOk = True
Else
bFormatOk = False
End If
Else
bFormatOk = False
End If
'
' Année
'
If bFormatOk Then
'Si le mois est correct, on vérifie l'année
sAn = Right(v, 4)
If IsNumeric(sAn) Then
iAnnee = sAn
If iAnnee >= 1900 And iAnnee <= iAnneeCourante Then
'l'année est bien supérieure à l'an 1900
' et est bien inférieur ou égal à l'année courante
bFormatOk = True
Else
bFormatOk = False
End If
Else
bFormatOk = False
End If
End If
'
' Trimestre
'
If bFormatOk = True Then
'Si le mois et l'année sont correct, on vérifie le trimestre
sTrim = Mid(v, 4, 2)
If IsNumeric(sTrim) Then
iTrim = sTrim
If iTrim >= 1 And iTrim <= 4 Then
bFormatOk = True
Else
bFormatOk = False
End If
Else
bFormatOk = False
End If
End If
End If
If bFormatOk = False Then
cCellule.Font.Color = vbRed
'
' Mettre ici le code pour bien
' formater les données
'
'...
End If
Next
End Sub
Oli