Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Correction du code vba

AD95

XLDnaute Junior
Bonjour,

D'avance, merci de votre expertise.

j'ai un code qui fonctionne pas trop je vois pas l'erreur : Voici mon besoin pour commencer

(pour info je ne peux pas ouvrir les PJ je suis bloqué par le boulot)



Parcourir toutes les feuilles à partir de la 12ème feuilles
Si colonne AA contient KO
et que entre la date du jour et la date de la colonne R est inférieur à 3 mois
alors mettre dans la colonne AA "N/A"
et dans la colonne AB "New"
puis
Si colonne AA contient KO
et que entre la date du jour et la date de la colonne R est inférieur à 1 mois
et que la colonne 0 contient "TIN" et que la colonne P contient "Internationale"
alors mettre dans la colonne AA "N/A"
et dans la colonne AB "New"


Voici le code : (disponible en PJ aussi pour test)

VB:
Sub ParcourirFeuilles()
    Dim feuille As Worksheet
    Dim derniereLigne As Long
    Dim i As Long
    Dim dateJour As Date
    Dim dateLimite3Mois As Date
    Dim dateLimite1Mois As Date
    
    dateJour = Date
    dateLimite3Mois = DateAdd("m", -3, dateJour)
    dateLimite1Mois = DateAdd("m", -1, dateJour)
    
    For Each feuille In ThisWorkbook.Sheets
        If feuille.Index >= 12 Then ' à partir de la 12ème feuille
            derniereLigne = feuille.Cells(Rows.Count, "AA").End(xlUp).Row
            For i = 2 To derniereLigne ' à partir de la 2ème ligne pour exclure les entêtes
                If feuille.Cells(i, "AA").Value = "KO" Then
                    If feuille.Cells(i, "R").Value >= dateJour Then ' vérifier si la date dans la colonne R est postérieure à la date du jour
                        If feuille.Cells(i, "R").Value <= dateLimite3Mois Then
                            feuille.Cells(i, "AA").Value = "N/A"
                            feuille.Cells(i, "AB").Value = "New"
                        End If
                    End If
                    If feuille.Cells(i, "O").Value = "TIN" And feuille.Cells(i, "P").Value = "Internationales" Then
                        If feuille.Cells(i, "R").Value >= dateJour Then ' vérifier si la date dans la colonne R est postérieure à la date du jour
                            If feuille.Cells(i, "R").Value <= dateLimite1Mois Then
                                feuille.Cells(i, "AA").Value = "N/A"
                                feuille.Cells(i, "AB").Value = "New"
                            End If
                        End If
                    End If
                End If
            Next i
        End If
    Next feuille
End Sub



Merci à vous
 

Pièces jointes

  • Comparaison_Date.xlsm
    81.2 KB · Affichages: 5

AD95

XLDnaute Junior
Bonsoir.
Si la date considérée est >= à la date du jour, elle n'est forcément jamais <= à des dates du jour auxquelles vous avez en plus retranché 1 mois ou 3 mois.
Bonjour Dranreb,

Merci pour le retour. Je doit le remplacer par quoi du coup ?

Le but est de lui dire par exemple :

La personne à 3 mois pour s'inscrire à la date de son arriver (colonne R). Si le délai de 3 mois est dépassé (en fonction de la date du jour) alors ............
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Je pense qu'au début il faut spécifier des nombres de mois positifs aux DateAdd.
Ou sinon calculer ces dates limites pour chaque ligne à partir de la date en R et les comparer à la date du jour …
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
450
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…