Incrémentation++

Bonjour,

J'ai besoin d'aide par rapport au code ci-dessous :

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"
Exit For
End If
Next lig
End Sub


Le problème c'est que quand je me place sur la ligne 34, que je tape 0 dans la colonne 10 (J), il marque en attente dans la colonne 28 mais à la ligne 1, comment faire correspondre le résultat "En attente" sur la même ligne ?
Exemple je tape 0 dans la colonne J34, donc "en attente" est écrit dans AB34

Merci d'avance a+!

4 réponses

  1. Modérateur
    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
    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
    1. 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 ?
      1. Modérateur
        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.
    2. 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 ;
      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