Problème écriture cellule
josh
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
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
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
A voir également:
- Problème écriture cellule
- Écriture facebook - Guide
- Ecriture en gras - Guide
- Ecriture insta - Guide
- Proteger cellule excel - Guide
- Écriture à l'envers miroir - Guide
2 réponses
Bonsoir,
Tu devrais déposer un fichier exemple sur cijoint.fr et coller ici le lien fourni.
Précise ce que tu saisis et où
eric
Tu devrais déposer un fichier exemple sur cijoint.fr et coller ici le lien fourni.
Précise ce que tu saisis et où
eric
Bonjour,
1°) Je suppose que tes macros sont sur un modue général ? mais nulle part tu ne spécifie sur quel page écrire, mais je ne pense pas que ça joue à conséquence puisque ça vient toujours de la feuille active.
2°)A chaque fois que tu modifie une cellule tu relit toutes les lignes, c'est pas un gros problème si tu n'a que quelques lignes mais si ton classeur commence à être plus important ça va être galère entre chaque modif de cellule quel qu'elle soit.
Essaye plutôt avec ce code, à mettre dans chaque feuilles
En remplacement de tes appel macros.
A chaque modif de la colonne 1 et 8 les calculs sont fait et éventuellement la ligne est modifiée comme tu veux, pas besoin de plus.
A+
Edit : Modif du code pour la troisième macros
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
1°) Je suppose que tes macros sont sur un modue général ? mais nulle part tu ne spécifie sur quel page écrire, mais je ne pense pas que ça joue à conséquence puisque ça vient toujours de la feuille active.
2°)A chaque fois que tu modifie une cellule tu relit toutes les lignes, c'est pas un gros problème si tu n'a que quelques lignes mais si ton classeur commence à être plus important ça va être galère entre chaque modif de cellule quel qu'elle soit.
Essaye plutôt avec ce code, à mettre dans chaque feuilles
Private Sub Worksheet_Change(ByVal Target As Range)
Dim S
'Pour éviter erreur quand ont copie un bloc.
S = Split(Target.Address, ":"): If UBound(S) > 0 Then Exit Sub
If Target.Column = 1 Then
If Target.Value <> "" Then Target.Offset(0, 1) = "Ouverture"
ElseIf Target.Column = 8 Then
If Target.Value <> "" Then
If (Target.Value - Now) * 24 > 96 Or _
(Now - Target.Value) * 24 > 96 Then Target.Offset(0, 20) = "Retard"
End If
End If
End Sub
En remplacement de tes appel macros.
A chaque modif de la colonne 1 et 8 les calculs sont fait et éventuellement la ligne est modifiée comme tu veux, pas besoin de plus.
A+
Edit : Modif du code pour la troisième macros
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)