Microsoft 365 Correction du code vba

  • Initiateur de la discussion Initiateur de la discussion AD95
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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 ............
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
74
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
246
Réponses
4
Affichages
358
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
498
Réponses
2
Affichages
400
Retour