[VBA excel] Parcours d'une colonne

Résolu
artoon_42 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
Le Pingou Messages postés 12250 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je suis débutant en macro excel et en VBA.
Je souhaiterais créer une macro s'exécutant à l'ouverture du classeur excel.
Je voudrais que cette parcoure la colonne G de G2 à G99. Cette colonne contient des dates. Si le mois de la date (G[i] + le nombre de jours contenue dans L6) est inférieur au mois actuel on supprime le contenue des cellules D[i] et E[i].

Voila où j'en suis.

Private Sub Workbook_Open()

Dim i As Integer
Date = Date

i = 1
Do While (i<99)
i = i + 1

If ( Month(Range("G" & i).Value + Range("L6").Value )< Month(Date) ) Then
Range("E" & i).Value = ""
Range("D" & i).Value = ""
End If
Loop

End Sub

Mais ce code me renvoi des erreurs.
Voyez vous d'où viennent les erreurs ?

Cordialement

A voir également:

11 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
bonjour

Date est une fonction qui renvoie comme résultat la date du système donc
D = Date, affectera à la variable D (de type date) la date du système
Date = Date n'est pas correct
supprimes déjà cette ligne et ça devrait aller mieux

il va de soi que
la colonne G est formatée avec l'un des formats date
la cellule L6 est au format nombre

bonne suite
0
artoon_42 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai corrigé mais maintenant il me dit Erreur '13': Incompatibilité de type
La colonne D est de type date et la colonne E est de type standard.

Private Sub Workbook_Open()

Dim i As Integer

i = 10
Do While (i < 99)
i = i + 1

If (Month(Range("G" & i).Value + Range("L6").Value) < Month(Date)) Then
Range("E" & i).Clear
Range("D" & i).Clear
End If
Loop

End Sub
0
Le Pingou Messages postés 12250 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Pouvez-vous indiquer quel ligne de la procédure est surlignée ?
0
artoon_42 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai modifier de nouveau


Private Sub Workbook_Open()

Dim i As Integer

i = 10
Do While (i < 99)
If (Month(DateAdd(d, Range("L6").Value, Range("G" & i).Value)) < Month(Date)) Then
Range("E" & i).Clear
Range("D" & i).Clear
End If
i = i + 1
Loop

End Sub


J'obtiens le message d'erreur : Erreur d'exécution '5: Argument ou appel de procédure incorrect sur la ligne du SI
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12250 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
J'ai testé cette procédure et c'est parfait (déclaration de variable modifier):
Private Sub Workbook_Open()
Dim i As Long
i = 1
Do While (i < 99)
i = i + 1
If (Month(Range("G" & i).Value + Range("L6").Value) < Month(Date)) Then
Range("E" & i).Clear
Range("D" & i).Clear
End If
Loop
End Sub
0
artoon_42 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
D'accord merci mais je vient de me rendre compte qu'il ne faut pas seulement que je compare les mois mais aussi les années pour éviter les problème

Private Sub Workbook_Open()
Dim i As Long
i = 10
Do While (i < 99)

If (DateSerial(Year(DateAdd(d, Range("L6").Value, Range("G" & i).Value)), Month(DateAdd(d, Range("L6").Value, Range("G" & i).Value)), 1) < DateSerial(Year(Date), Month(Date), 1)) Then

Range("E" & i).Clear
Range("D" & i).Clear
End If
i = i + 1
Loop
End Sub

Je reforme donc mes dates
mais la ligne du si me renvoi Erreur d'exécution '5: Argument ou appel de procédure incorrect .
0
Le Pingou Messages postés 12250 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Eh bien qu'elle est exactement le critère de contrôle ?
Cela ne sert à rien de modifier la condition [If] sans avoir le critère exact.
0
artoon_42 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Désolé,

Le critère de contrôle est la comparaison sur le mois et l'année entre la date courante et la date contenue dans une cellule de la colonne G à laquelle j'ajoute le contenue de la cellule L6 ; cette dernière doit être inférieur à la date courante pour entré dans le si.
0
Le Pingou Messages postés 12250 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Pour ce soir c'est la dernière.
Cette procédure :
Private Sub Workbook_Open()
Dim i As Long
Dim critdate As Date
critdate = DateSerial(Year(Date), Month(Date), 1)
i = 1
Do While (i < 99)
i = i + 1
If (Range("G" & i).Value + Range("L6").Value) > critdate Then
Range("E" & i).Clear
Range("D" & i).Clear
End If
Loop
End Sub
--
Salutations.
Le Pingou
0
artoon_42 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup de votre aide.
0
Le Pingou Messages postés 12250 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci, vous aurez certainement remarqué que dans la condition j'ai inversé le symbole [>] au lieu de [<].
Salutations.
Le Pingou
0