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

Problème de rédaction de macro

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 !

chris6999

XLDnaute Impliqué
Bonjour

Malgré tous les conseils et de multiples recherches, j'ai toujours autant de difficultés à trouver les termes exacts pour rédiger la macro suivante :


A l'ouverture du fichier
Si la valeur de la colonne 22 est vide ou différente de la valeur "Attente retour" alors exit sub
Sinon
Si la date positionnée dans la colonne 14 (date limite de dépôt) est inférieure ou égale à la date du jour -10
(c'est à dire que la date limite de dépôt sera dépassée dans 10 jours)
alors positionne dans la colonne 15 "Trop tard"

Comme mon fichier fait beaucoup de ligne il faudrait que la macro ne passe que sur les lignes non vides


J'ai écris ceci mais à priori Excel n'aime pas trop mon style :

If Target.Column = 22
If Target.Value = <> “Attente retour” Then Exit Sub

dateLimitedepot = Cells(cel.Row, 14).Value
If Date <= (dateLimitedepot -10) Then Cells(Target.Row, 15).Value = "trop tard"
End if
End if

Pourriez-vous m'aider?
Cordialement
 
Re : Problème de rédaction de macro

Bonjour chris,

un petit fichier donnerai du sens à ce code.

car en fonction du module où tu l'as écris cela peut être complétement faux

Ok je te mets un fichier test en pièce joint
J'ai désactivé la macro car il y a un pb de syntaxe

Merci
 

Pièces jointes

Re : Problème de rédaction de macro

Bonjour,

Je t'écris depuis pleumeur bodoux , où seuls les corbeaux arrivent à ravitailler .

Donc excuses de la mise en forme et de ne pas joindre le fichier, le vieux coucou que j'utilise n'est pas du tout à jour et ne permet pas de faire ce que je souhaiterais , néanmoins voici une proposition de code que tu pourras ensuite replacer dans l'événementiel démarrage.

mais surtout si tu débutes , je te conseille de ne jamias mettre au point directement dans ces modules spéciaux , et plutot de travailler dans un module standard.

Voici le code :


' A l 'ouverture du fichier
'Private Sub Workbook_Open()
'Ok, pour les tests autant les réaliser dans un module classique .
'une fois ok , souvent un simple appel via l'événementiel de ce code est alors plus simple

Sub Ouverture()
'Déclaration des variables
Dim LigneFin As Long
Dim Boucle As Long
Dim DateLimiteDepot As String
'Sélection de la feuille "Base de données"
Sheets("Base de données").Select
'Calcul de la derniére ligne renseignée de la feuille sur la colonne A
LigneFin = Range("A" & Rows.Count).End(xlUp).Row

'Pour l'ensemble des lignes de la 7° à la derniére
For Boucle = 7 To LigneFin

' Si la valeur de la colonne U est vide
' ou différente de la valeur "Attente retour" alors exit sub
If Range("U" & Boucle) = "Attente retour" And Range("U" & Boucle) <> "" Then
' Si la date positionnée dans la colonne 14 (date limite de dépôt)
' est inférieure ou égale à la date du jour -10

'Lecture de la date de limite de dépot et calcul de la date limite virtuelle
DateLimiteDepot = DateAdd("d", -10, Range("N" & Boucle))
'c'est à dire que la date limite de dépôt sera dépassée dans 10 jours)
If DateDiff("d", DateLimiteDepot, Date) > 0 Then
Cells(Boucle, 15).Value = "trop tard"
End If
End If
'incrémente boucle, si encore dans limite alors réitére la boucle
Next Boucle

End Sub
 
- 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
Microsoft 365 Problème de date
Réponses
5
Affichages
358
Réponses
5
Affichages
909
Réponses
2
Affichages
527
Réponses
12
Affichages
644
Réponses
4
Affichages
732
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…