Suppression de ligne en fonction d'une date
fortbelin
Messages postés
21
Date d'inscription
Statut
Membre
Dernière intervention
-
fortbelin Messages postés 21 Date d'inscription Statut Membre Dernière intervention -
fortbelin Messages postés 21 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Bonjour à tous et à toutes.
J'ai besoin de votre aide pour une macro.
Il s'agit de pouvoir supprimer des lignes d'une feuille excel mais seulement si une cellule de cette ligne contiens une date qui est antérieure à une date de référence.
Donc par exemple, supprimer toutes les lignes qui contiennent des dates antérieur au 25/12/2002
Merci beaucoup pour votre aide
Bonjour à tous et à toutes.
J'ai besoin de votre aide pour une macro.
Il s'agit de pouvoir supprimer des lignes d'une feuille excel mais seulement si une cellule de cette ligne contiens une date qui est antérieure à une date de référence.
Donc par exemple, supprimer toutes les lignes qui contiennent des dates antérieur au 25/12/2002
Merci beaucoup pour votre aide
A voir également:
- Suppression de ligne en fonction d'une date
- Partage de photos en ligne - Guide
- Forcer suppression fichier - Guide
- Fonction si et - Guide
- Mètre en ligne - Guide
- Formulaire en ligne de meta - Guide
10 réponses
Dans ce cas :
où ta date de référence est en A1, et ta plage de données est en colonne A mais tu peux adapter. Si tes dates sont en ligne G, remplace Range("A65536") par Range("G65536"), et les "A" & i par "G" & i.
Voilà.
Private Sub CommandButton1_Click() Dim currentd As Date Dim refdate As Date Dim i, imax refdate = Range("A1").Value imax = Range("A65536").End(xlUp).Row For i = IndiceLigneDeTaPlageDeDate To imax + 1 If (Range("A" & i).Value < refdate) And (Range("A" & i).Value <> "") Then Range("A" & i).EntireRow.Delete i = i - 1 End If Next i End Sub
où ta date de référence est en A1, et ta plage de données est en colonne A mais tu peux adapter. Si tes dates sont en ligne G, remplace Range("A65536") par Range("G65536"), et les "A" & i par "G" & i.
Voilà.
Bonjour Fortbelin,
"Si une cellule de la ligne...", tu entends par là, une cellule, n'importe laquelle, ou une cellule bien précise?
"Si une cellule de la ligne...", tu entends par là, une cellule, n'importe laquelle, ou une cellule bien précise?
Bonjour,
il s'agit plutôt d'une cellule bien précise car j'ai une colonne date dans ma feuille excel.
Donc en fait, si ma colonne date est en G par exemple et bien, la macro supprime toute les lignes qui ont dans la colonne G une date antérieur à une date de référence.
Merci beaucoup
il s'agit plutôt d'une cellule bien précise car j'ai une colonne date dans ma feuille excel.
Donc en fait, si ma colonne date est en G par exemple et bien, la macro supprime toute les lignes qui ont dans la colonne G une date antérieur à une date de référence.
Merci beaucoup
Merci beaucoup, je vais essayer
Est ce que vous auriez la même chose mais en fonction d'une liste de prénom.
Exemple, supprimer les lignes qui contiennent pierre ou paul ou jean ....
Merci
Christophe
Est ce que vous auriez la même chose mais en fonction d'une liste de prénom.
Exemple, supprimer les lignes qui contiennent pierre ou paul ou jean ....
Merci
Christophe
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est encore moi
je suis désolé mais cela ne marche pas ou alors c c'est mois qui ne fais pas ce qu'il faut
Est ce qu'il faut mettre le code dans un module
Private Sub CommandButton1_Click()
Dim currentd As Date
Dim refdate As Date
Dim i, imax
refdate = Range("C1").Value
imax = Range("C65536").End(xlUp).Row
For i = IndiceLigneDeTaPlageDeDate To imax + 1
If (Range("C" & i).Value < refdate) And (Range("C" & i).Value <> "") Then
Range("C" & i).EntireRow.Delete
i = i - 1
End If
Next i
End Sub
merci
je suis désolé mais cela ne marche pas ou alors c c'est mois qui ne fais pas ce qu'il faut
Est ce qu'il faut mettre le code dans un module
Private Sub CommandButton1_Click()
Dim currentd As Date
Dim refdate As Date
Dim i, imax
refdate = Range("C1").Value
imax = Range("C65536").End(xlUp).Row
For i = IndiceLigneDeTaPlageDeDate To imax + 1
If (Range("C" & i).Value < refdate) And (Range("C" & i).Value <> "") Then
Range("C" & i).EntireRow.Delete
i = i - 1
End If
Next i
End Sub
merci
Merci beaucoup,
cela fonctionne.
Désolé mais je suis pas un spécialiste
cela fonctionne.
Désolé mais je suis pas un spécialiste
Aucun problème, mais il existe plein de tutoriels sur le net, ou des livres assez complets en librairie sur le VBA, alors n'hésites pas à consulter le net pour trouver comme réaliser des macros VBA.
Personnellement, je te conseillerais d'aller sur le site des éditions First (éditeur de la série "pour les nuls").
Cordialement.
Personnellement, je te conseillerais d'aller sur le site des éditions First (éditeur de la série "pour les nuls").
Cordialement.
Merci beaucoup, je vais essayer de me pencher sur le sujet mais pour le moment j'ai pas vraiment le temps.
On me demande ça à mon boulot ...
On me demande ça à mon boulot ...
De la même manière.
En admettant que les prénoms à supprimer soient en colonne A à partir de la ligne 2 sur ta première feuille et ta liste de prénoms générale en colonne A ligne 2 de ta deuxième feuille :
En admettant que les prénoms à supprimer soient en colonne A à partir de la ligne 2 sur ta première feuille et ta liste de prénoms générale en colonne A ligne 2 de ta deuxième feuille :
Private Sub CommandButton1_Click() Dim i1, i2 Dim imaxOne Dim imaxTwo imaxOne = Worksheets(1).Range("A65536").End(xlUp).Row imaxTwo = Worksheets(2).Range("A65536").End(xlUp).Row For i1 = 2 To imaxOne For i2 = 2 To imaxTwo If Worksheets(1).Range("A" & i1).Value = Worksheets(2).Range("A" & i2).Value Then Worksheets(2).Range("A" & i2).EntireRow.Delete i2 = i2 - 1 imaxTwo = imaxTwo - 1 End If Next i2 Next i1 End Sub
ta macro n'est pas exacte : quand on supprime des lignes, on ne part pas de la première à la dernière, mais de la dernière à la première.
En effet supposons que l'on doive supprimer la ligne 4 et 5. En partant de la première ligne, on va supprimer la 4e. La 5e devient donc la 4e, et la 6e devient la 5e. On continue le code et boucle, on arrive sur la 5e ligne (qui était la 6e), cette ligne n'est pas à supprimer. Du coup nous avons loupé la ligne n°5...
Dans l'autre sens, on part de la dernière, on supprime la 5e, la 4e reste 4e. On boucle, et on supprime la 4e.
Du coup il vaut mieux faire
Cordialement.
Mais du coup vu que ton imax ne change pas et que tu supprimes des lignes, à un moment tu vas tester des lignes vides ;)
tu as encore lu trop vite ma p'tite chossette9 :D
C'est juste pour chipoter et pour optimiser un max le code.