Porblème boucle if
Thom
-
SpideyCodeWarrior Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
SpideyCodeWarrior Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'ai un soucis sur ma macro excel,
dans mon tableau croisé dynamique, j'aimerais faire une boucle if, si le groupe de selection de la date est différent de mois trimestre année alors tu le change sauf que cela ne fonctionne pas avec mon programme.
Pouvez-vous m'aider ?
cordialement,
Macro :
dans mon tableau croisé dynamique, j'aimerais faire une boucle if, si le groupe de selection de la date est différent de mois trimestre année alors tu le change sauf que cela ne fonctionne pas avec mon programme.
Pouvez-vous m'aider ?
cordialement,
Macro :
Sub test() Range("A4").Select 'ActiveSheet.PivotTables ("Tableau croisé dynamique9") Selection.Group Start:=True, End:=True If Periods <> Array(False, False, False, False, True, True, True) Then Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _ False, True, True, True) End If End Sub
Configuration: Windows / Edge 98.0.1108.62
A voir également:
- Porblème boucle if
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
1 réponse
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