Boucle

Résolu/Fermé
Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017 - Modifié le 27 avril 2017 à 09:58
Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017 - 28 avril 2017 à 09:37
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 38289 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 novembre 2024 4 703
27 avril 2017 à 10:00
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 jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017
Modifié le 28 avril 2017 à 09:22
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 38289 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 novembre 2024 4 703 > Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017
28 avril 2017 à 09:31
Donc je t ai déjà répondu. ..
0
Jono92600 Messages postés 76 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 24 mai 2017 > jordane45 Messages postés 38289 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 novembre 2024
28 avril 2017 à 09:37
Oui, en effet je viens d'appliquer votre code et sa fonctionne à merveille. Merci de ton retour.
0