Incrémentation++

josh -  
 josh -
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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
    0
  2. josh
     
    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 ?
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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.
      0
  3. josh
     
    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
    0