4 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
20 mai 2010 à 12:04
20 mai 2010 à 12:04
Salut,
Ton code est bon, mais :
tu fais une boucle de la ligne 2 à la dernière ligne Col J. En plus, dès que tu as "en attente" dans ta ligne tu sors de la boucle "Exit For". Alors ta macro se lance, teste la ligne 2 si J = 0 alors AB = "en attente" sort de la boucle et s'arrête...
2 choix donc :
- soit tu veux teste toutes tes lignes et alors supprime ta ligne de code : Exit For
- Soit tu ne veux la lancer que pour la ligne ou tu as au préalable sélectionner la cellule en J :
Ton code est bon, mais :
tu fais une boucle de la ligne 2 à la dernière ligne Col J. En plus, dès que tu as "en attente" dans ta ligne tu sors de la boucle "Exit For". Alors ta macro se lance, teste la ligne 2 si J = 0 alors AB = "en attente" sort de la boucle et s'arrête...
2 choix donc :
- soit tu veux teste toutes tes lignes et alors supprime ta ligne de code : Exit For
Sub test Dim lig As Long For lig = 2 To [J65535].End(xlUp).Row If Cells(lig, 10) = 0 Then Cells(lig, 28) = "En attente" End If Next lig End Sub
- Soit tu ne veux la lancer que pour la ligne ou tu as au préalable sélectionner la cellule en J :
Sub test If ActiveCell = 0 Then ActiveCell.Offset(0, 18) = "En attente" End If End Sub
Le problème c'est que j'ai mon évenement worksheet_change dans la feuille et un call sur le code ci-dessus. j'ai supprimé exit for et toujours le même soucis.
J'ai supprimé le call et placé directement le code dans la feuille et tjrs pareil.
Une idée ?
J'ai supprimé le call et placé directement le code dans la feuille et tjrs pareil.
Une idée ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
21 mai 2010 à 10:54
21 mai 2010 à 10:54
non pas d'idée. Peux tu placer une copie de ton fichier, sans données confidentielles ici même via un service de pièce jointe tel que cjoint ou ci-joint.
bonjour,
j'ai toujours le meme problème voici le code :
j'ai 9 feuilles excel, 3 modules
dans chaque code de feuille j'ai l'évenement ;
dans le module type j'ai plusieurs conditions qui colorisent des cellules, écrivent du texte dans les cellules:
Exemple :
public sub type
Dans alerte 1 j'ai une macro qui permet de soustraire une date antèrieur(écrite dans la colonne H) à celle de la date du jour et si la différence est supèrieur à 96h on écrit la valeur "en retard" dans la colonne AB.
dans Alerte 2 j'ai la mm chose mais permet de soustraire une date supèrieur(écrite dans la colonne H) à celle de la date du jour et si la différence est supèrieur à 96h on écrit la valeur "en retard" dans la colonne AB.
Le problème :
Lorsque j'entre une date dans la celluleH32 et qu'elle dépasse 96h par rapport à la date d'aujourdh'ui, au lieu d'écrire en retard dans AB32, il l'écrit en AB1. je ne comprends pas pourquoi, j'ai essayé de supprimé exit for, déplacer les modules etc mais toujours le mm problème.
Merci de m'aider
j'ai toujours le meme problème voici le code :
j'ai 9 feuilles excel, 3 modules
dans chaque code de feuille j'ai l'évenement ;
Private Sub Worksheet_Change(ByVal Target As Range) Call type Call alerte1 Call alerte2 End Sub
dans le module type j'ai plusieurs conditions qui colorisent des cellules, écrivent du texte dans les cellules:
Exemple :
public sub type
Dim lig As Long
For lig = 2 To [A65535].End(xlUp).Row
If Cells(lig, 1) <> "" Then
Cells(lig, 2) = "Ouverture "
Dans alerte 1 j'ai une macro qui permet de soustraire une date antèrieur(écrite dans la colonne H) à celle de la date du jour et si la différence est supèrieur à 96h on écrit la valeur "en retard" dans la colonne AB.
Public Sub Alerte1() Application.EnableEvents = False Dim date96 As Date Dim datejour As Date date96 = 96 datejour = Now Dim lig As Long For lig = 2 To [H65535].End(xlUp).Row If Cells(lig, 8) - datejour > date96 / 24 A Then Cells(lig, 28) = "en retard" Exit For End If Next lig Application.EnableEvents = True End Sub
dans Alerte 2 j'ai la mm chose mais permet de soustraire une date supèrieur(écrite dans la colonne H) à celle de la date du jour et si la différence est supèrieur à 96h on écrit la valeur "en retard" dans la colonne AB.
Public Sub Alerte2() Application.EnableEvents = False Dim date96 As Date Dim datejour As Date date96 = 96 datejour = Now Dim lig As Long For lig = 2 To [H65535].End(xlUp).Row If datejour - Cells(lig, 8) > date96 / 24 A Then Cells(lig, 28) = "en retard " Exit For End If Next lig Application.EnableEvents = True End Sub
Le problème :
Lorsque j'entre une date dans la celluleH32 et qu'elle dépasse 96h par rapport à la date d'aujourdh'ui, au lieu d'écrire en retard dans AB32, il l'écrit en AB1. je ne comprends pas pourquoi, j'ai essayé de supprimé exit for, déplacer les modules etc mais toujours le mm problème.
Merci de m'aider