Boucle

Résolu
Jono92600 Messages postés 78 Statut Membre -  
Jono92600 Messages postés 78 Statut Membre -
Bonjour,

J'ai un souci sur le choix de traitement de ma colonne. ci-dessous le code :

Sheets("PRESTAT").Activate

Const strPlageDesDates As String = "E3:E150"
Dim cel As Range

  For Each cel In ActiveSheet.Range(strPlageDesDates)
    'Corriger les dates saisies au format texte
    If IsDate(cel.Value) And VarType(cel.Value) <> vbDate Then
      cel.Value = CDate(cel.Value)
    End If
    ' Renseigner la colonne ETAT
    If IsDate(cel.Offset(0, 1).Value) Then
      cel.Offset(0, 2).Value = "Réalisé"
    ElseIf DateSerial(Year(Date), Month(Date) - 1, Day(Date)) >= cel.Value Then
      cel.Offset(0, 2).Value = "Critique"
    ElseIf Date - 7 >= cel.Value Then
      cel.Offset(0, 2).Value = "En retard"
    Else
      cel.Offset(0, 2).Value = "Dans les temps"
  End If



J'aimerais l’exécution du code s’arrête à la dernière ligne.

Merci d'avance.

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    Il manque un "NEXT" dans ton code

    Quelle dernière ligne ?
    Là .. ton code va jusqu'à ligne 150 de la colonne E .. ce n'est pas bon ?
    Si tu veux "trouver" la dernière ligne utilisée, tu peux utiliser
    Dim DernLigne  as Long
    DernLigne = Range("E1048576").End(xlUp).Row
    Dim strPlageDesDates As String 
    Dim maRng as Range
    
    strPlageDesDates  =  "E3:E" & DernLigne 
    
    Set maRng =  ActiveSheet.Range(strPlageDesDates)
    

    0
    1. Jono92600 Messages postés 78 Statut Membre
       
      Bonjour,

      Mon code n'arrive pas jusqu'à la ligne 150. Mais j'ai mis E150 pour limiter l'exécution à E150.

      Je rajoute tous les jours une nouvelle ligne voir plus. Donc le but est de déterminer la dernière ligne remplit et d’arrêter son exécution à cette même ligne.

      Sheets("PRESTAT").Activate

      Const strPlageDesDates As String = "E3:E150"
      Dim cel As Range

      For Each cel In ActiveSheet.Range(strPlageDesDates)
      'Corriger les dates saisies au format texte
      If IsDate(cel.Value) And VarType(cel.Value) <> vbDate Then
      cel.Value = CDate(cel.Value)
      End If
      ' Renseigner la colonne ETAT
      If IsDate(cel.Offset(0, 1).Value) Then
      cel.Offset(0, 2).Value = "Réalisé"
      ElseIf DateSerial(Year(Date), Month(Date) - 1, Day(Date)) >= cel.Value Then
      cel.Offset(0, 2).Value = "Critique"
      ElseIf Date - 7 >= cel.Value Then
      cel.Offset(0, 2).Value = "En retard"
      Else
      cel.Offset(0, 2).Value = "Dans les temps"
      End If
      Next cel
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Jono92600 Messages postés 78 Statut Membre
         
        Donc je t ai déjà répondu. ..
        0
      2. Jono92600 Messages postés 78 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Oui, en effet je viens d'appliquer votre code et sa fonctionne à merveille. Merci de ton retour.
        0