[VBA excel] Parcours d'une colonne

Résolu/Fermé
artoon_42 Messages postés 14 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 avril 2012 - 25 févr. 2012 à 18:24
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 - 26 févr. 2012 à 15:33
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 25/02/2012 à 21:11
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 samedi 25 février 2012 Statut Membre Dernière intervention 29 avril 2012
25 févr. 2012 à 22:02
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 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
25 févr. 2012 à 22:16
Bonjour,
Pouvez-vous indiquer quel ligne de la procédure est surlignée ?
0
artoon_42 Messages postés 14 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 avril 2012
25 févr. 2012 à 22:40
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 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
25 févr. 2012 à 22:49
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 samedi 25 février 2012 Statut Membre Dernière intervention 29 avril 2012
25 févr. 2012 à 23:17
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 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
25 févr. 2012 à 23:31
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 samedi 25 février 2012 Statut Membre Dernière intervention 29 avril 2012
25 févr. 2012 à 23:36
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 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
25 févr. 2012 à 23:51
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 samedi 25 février 2012 Statut Membre Dernière intervention 29 avril 2012
26 févr. 2012 à 00:29
Merci beaucoup de votre aide.
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
26 févr. 2012 à 15:33
Bonjour,
Merci, vous aurez certainement remarqué que dans la condition j'ai inversé le symbole [>] au lieu de [<].
Salutations.
Le Pingou
0