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 !
A voir également:
- Vba error 450
- Eespt technical error ✓ - Forum TNT / Satellite / Réception
- 450 : 450 4.7.0 service refuse. veuillez essayer plus tard. service refused, please try later. lpn105_510 ✓ - Forum Mail
- Incompatibilité de type vba ✓ - Forum Programmation
- Fan error lenovo - Forum Refroidissement
- Cmos checksum error ✓ - Forum Carte-mère/mémoire
2 réponses
Bonjour
Remplacez
par
Cdlt
Remplacez
For Each L In .Range("L6", [L6], .[E65536].End(xlDown))
par
For Each L In .Range("L6:L" & [E65536].End(xlDown).Row)
Cdlt
Re
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.
cdlt
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
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...