Copier des lignes en fonctions d'une donnée.

Sebasti1

XLDnaute Nouveau
Bonjour,

Je reviens vers vous avec un nouveau problème dont je n'ai trouvé la solution dans le forum ou les différentes archives internet.

J'ai un tableau qui comporte z colonnes.
L'une d'entre elle, est la date à laquelle la ligne a été insérée (colonne N).

Le tableau comporte un nombre variable de lignes du même format, chaque ligne étant supprimée lorsque la tâche est effectuée.

Seules m'intéressent les lignes du tableau avec la date du jour.

Je souhaiterais ajouter à une macro un tri de ces lignes qui me permettrai de supprimer toutes les lignes ne comportant pas la date du jour (ou à défaut savoir comment exporter vers une autre feuille excel ces lignes comportant la date du jour).

Merci d'avance pour votre aide.

Sébastien
 

job75

XLDnaute Barbatruc
Re : Copier des lignes en fonctions d'une donnée.

Bonjour Sebasti1,

Je souhaiterais ajouter à une macro un tri de ces lignes qui me permettrai de supprimer toutes les lignes ne comportant pas la date du jour (...)

Voyez cette macro, c'est une manière de filtrer :

Code:
Sub SupprimeDates()
On Error Resume Next
With [A:A] 'colonne des dates, à adapter
  .Replace Date, "z", LookAt:=xlWhole
  .SpecialCells(xlCellTypeConstants, 1).EntireRow.Delete
  .Replace "z", Date
End With
End Sub
A+
 

Sebasti1

XLDnaute Nouveau
Re : Copier des lignes en fonctions d'une donnée.

Bonjour job75,

Tout d'abord meci pour votre réponse.
J'ai essayé votre macro, mais cà ne fonctionne pas par rapport à ce que je veux faire.
Quand j'ajoute le code dans ma macro, elle plante et le debugger me pointe la partie Date en erreur m'indiquant que je dois la rentrer sous le format (aaaammjj) or j'ai besoin qu'il me reconnaisse le format Today().

J'ai peut-être un début à proposer, mais j'ai besoin d'un peu d'aide pour qu'il soit opérationnel:

Code:
    If Cells(2, 12).Value <> "today" Then
    Rows(2).Delete
    End If
    If Cells(3, 12).Value <> "today" Then
    Rows(3).Delete
    End If
    If Cells(4, 12).Value <> "today" Then
    Rows(4).Delete
    End If
    If Cells(5, 12).Value <> "today" Then
    Rows(5).Delete
    End If
    If Cells(6, 12).Value <> "today" Then
    Rows(6).Delete
    End If
    If Cells(7, 12).Value <> "today" Then
    Rows(7).Delete
    End If
    If Cells(8, 12).Value <> "today" Then
    Rows(8).Delete
    End If
    If Cells(9, 12).Value <> "today" Then
    Rows(9).Delete
    End If
    If Cells(10, 12).Value <> "today" Then
    Rows(10).Delete
    End If

Le problème de ce code est le suivant:
Sur un tableau comme je les extrais au quotidien (aujourd'hui 8 lignes), il me conserve un certain nombre de ligne correctement, me supprime bien les lignes qu'il doit supprimer, mais il m'a supprimé injustement les lignes 4 et 8 pour je ne sais quelle raison.

N'y aurait-il pas un moyen plus simple que la répétition du code (même si mes tableaux dépassent rarement les 20 lignes donc ce n'est pas bien long à répéter)? Est-ce que cà aiderait à supprimer l'erreur?

Merci d'avance pour votre(vos) réponses.

Sébastien
 

job75

XLDnaute Barbatruc
Re : Copier des lignes en fonctions d'une donnée.

Bonsoir Sébastien,

Je ne comprends pas trop car "today", c'est du texte !

En général les "dates" sont des dates... C'est à dire sur Excel des nombres entiers.

Il faudrait déposer votre fichier.

A+
 

Sebasti1

XLDnaute Nouveau
Re : Copier des lignes en fonctions d'une donnée.

Bonsoir,

Le code que j'ai rentré est bien le suivant:

Code:
    If Cells(2, 14).Value <> "today" Then
    Rows(2).Delete
    End If
    If Cells(3, 14).Value <> "today" Then
    Rows(3).Delete
    End If
...


Même si la traduction de ce que je voulais serait plutôt comme cà:

Code:
    If Cells(2, 14).Value <> today() Then
    Rows(2).Delete
    End If
    If Cells(3, 14).Value <> today() Then
    Rows(3).Delete
    End If
...

Je ne sais pour qu'elle raison, le premier code m'effectue un tri (peut-être est-ce-juste un hasard) alors que le second bloque sur le today.

Ci-joint le fichier excel extrait du logiciel "maison" en place dans ma boîte, et que je souhaite pouvoir trier, en fonction de la colonne N en ne gardant que les lignes avec la date du jour.

Merci d'avance pour toute votre aide et bonne soirée.

Sébastien
 

Pièces jointes

  • Classeur1.xls
    20 KB · Affichages: 69
  • Classeur1.xls
    20 KB · Affichages: 66
  • Classeur1.xls
    20 KB · Affichages: 60

job75

XLDnaute Barbatruc
Re : Copier des lignes en fonctions d'une donnée.

Bonjour Sebasti1, le forum,

C'est bien ce que je pensais, vos dates sont des textes !

Alors il faut supprimer les textes sauf txt = Format(Date, "dd.mmm.yy") :

Code:
Sub SupprimeDates()
On Error Resume Next
Dim txt As String
Application.ScreenUpdating = False
txt = Format(Date, "dd.mmmm.yy") 'date du jour au format texte
With [N2:N65536] 'colonne des "dates"
  .Replace txt, 1, LookAt:=xlWhole
  .SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete
  .Replace 1, txt
End With
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Classeur(1).xls
    47 KB · Affichages: 78
  • Classeur(1).xls
    47 KB · Affichages: 85
  • Classeur(1).xls
    47 KB · Affichages: 83
Dernière édition:

job75

XLDnaute Barbatruc
Re : Copier des lignes en fonctions d'une donnée.

Re,

Effectivement cà fonctionne mieux avec une date en format date et non en format text.

Ce n'est pas que ça "fonctionne" mieux.

Une date au format Date est toujours un nombre, et on peut donc la traiter quel que soit le format utilisé pour l'afficher.

En format Texte, le problème est de reconnaître la date, ainsi :

10.février.11 est reconnaissable facilement

10.fevrier.11 n'est pas reconnaissable facilement.

A+
 

Discussions similaires

Réponses
5
Affichages
382

Statistiques des forums

Discussions
312 492
Messages
2 088 914
Membres
103 983
dernier inscrit
AlbertCouillard