Boucle

Résolu
Jono92600 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   -  
Jono92600 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   -
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

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
Jono92600 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention  
 
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Jono92600 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention  
 
Donc je t ai déjà répondu. ..
0
Jono92600 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 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