VBA Excel 2007 erreur d'execution 450
Résolu
likesoft
-
likesoft -
likesoft -
Bonjour à tous !
Je suis totalement débutante en VBA (et en développements tout court... ), j'ai un peu de mal avec les termes techniques.
Je rencontre un problème de type erreur 450 ("erreur de compilation: nombre d'arguments incorrect ou affectation de propriété incorrecte")quand je lance le code ci-après
J'ai déjà utilisé ce code avant sur un autre tableau plus simple et il fonctionnait très bien.
Pouvez-vous m'aider ?
Merci !
Je suis totalement débutante en VBA (et en développements tout court... ), j'ai un peu de mal avec les termes techniques.
Je rencontre un problème de type erreur 450 ("erreur de compilation: nombre d'arguments incorrect ou affectation de propriété incorrecte")quand je lance le code ci-après
Private Sub Workbook_Open()
Dim L As Range
Application.ScreenUpdating = False
With Sheets("AOUT") ' à modifier
For Each L In .Range("L6", [L6], .[E65536].End(xlDown))
If L.Value < DateSerial(Year(Date), Month(Date) + 2, Day(Date)) Then
If txt = "" Then txt = "Fin de validité titre(s) de transport:" & vbCrLf
txt = txt & L.Offset(, -11) & ", " & L.Offset(, 0) & vbCrLf
End If
Next L
If txt <> "" Then MsgBox txt
End With
Application.ScreenUpdating = True
End Sub
J'ai déjà utilisé ce code avant sur un autre tableau plus simple et il fonctionnait très bien.
Pouvez-vous m'aider ?
Merci !
2 réponses
-
Bonjour
RemplacezFor Each L In .Range("L6", [L6], .[E65536].End(xlDown))
parFor Each L In .Range("L6:L" & [E65536].End(xlDown).Row)
Cdlt-
Bonjour
Ca fonctionne ! Merci Frenchie83.
Maintenant j'ai un autre problème, je voudrais qu'un msgbox s'affiche avec le nom et la date de validité qui arrive à péremption dans deux mois ... jusque la tout fonctionne.
Cependant dans le msgbox s'affiche également les colonnes vides .
Dans ma colonne "L" certaines cellules sont séparées par des cellules vides.
Je souhaite que, si la cellule est vide, la macro passe à la ligne suivante.
Je ne sais pas si je suis très claire...
-
-
Re
Private Sub Workbook_Open() Dim L As Range Application.ScreenUpdating = False With Sheets("AOUT") For Each L In .Range("L6:L" & [L65536].End(xlUp).Row) If L.Value < DateSerial(Year(Date), Month(Date) + 2, Day(Date)) And L.Value <> "" Then txt = txt & L.Offset(, -11) & L.Offset(, 0) & vbCrLf Next L If txt <> "" Then MsgBox "Fin de validité titre(s) de transport:" & vbCrLf & txt End With End Sub
j'ai modifié la ligne du post précédent pour 2 raisons:
-la recherche de la dernière ligne s'effectue sur la colonne L au lieu de E
-On part de la cellule la plus basse et on remonte pour trouver la dernière ligne. donc la nouvelle forme doit s'écrire comme ceci.
For Each L In .Range("L6:L" & [L65536].End(xlUp).Row)
cdlt