[VBA excel] Parcours d'une colonne
Résolu
artoon_42
Messages postés
14
Statut
Membre
-
Le Pingou Messages postés 12274 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12274 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
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
11 réponses
-
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 -
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 -
Bonjour,
Pouvez-vous indiquer quel ligne de la procédure est surlignée ? -
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 -
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 . -
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. -
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. -
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 -
-
Bonjour,
Merci, vous aurez certainement remarqué que dans la condition j'ai inversé le symbole [>] au lieu de [<].
Salutations.
Le Pingou