XL 2016 Selection cellules avec une date

teosmi

XLDnaute Nouveau
Bonjour,
Comment sélectionner toute les cellules d'une colonne qui sont des dates?
La colonne contient des cellules avec du texte, d'autres des chiffres
Merci
 

job75

XLDnaute Barbatruc
Bonsoir teosmi, chris, frangy,

Voyez le fichier joint, cette fonction VBA et cette macro :
VB:
Function TestDate(c As Range) As Boolean
TestDate = IsDate(c)
End Function

Sub Selection_Dates()
Dim t#
t = Timer
Application.ScreenUpdating = False
With Range("A1", Range("A" & Rows.Count).End(xlUp))
    .EntireColumn.Insert
    .Columns(0) = "=1/TestDate(RC[1])"
    On Error Resume Next 'si aucune SpecialCell
    .Columns(0).SpecialCells(xlCellTypeFormulas, 1).Select
    .Columns(0).EntireColumn.Delete
End With
Application.ScreenUpdating = True
MsgBox "Dates sélectionnées en " & Format(Timer - t, "0.00 \s")
End Sub
La sélection d'une cellule sur 2 sur 100 000 lignes prend évidemment pas mal de temps.

Bonne nuit.
 

Pièces jointes

  • Sélection Dates(1).xlsm
    727.5 KB · Affichages: 11
Dernière édition:

teosmi

XLDnaute Nouveau
Bonjour,
Mon fichier est un peu plus compliqué.
Le classeur contient plusieurs feuilles correspondant chacune à une étape de production (10 en tout).
Une feuille contient plusieurs pages (une page par jour)
Je voudrai rassembler toutes les données sur une page à part (Recap.)
Voir le fichier joint
Merci job75 ta macro est parfaite mais ne donne pas le bon résultat sur mon fichier.
Merci
 

Pièces jointes

  • Sélection Dates.xlsm
    565.3 KB · Affichages: 5

teosmi

XLDnaute Nouveau
Je mets la macro que j'ai créer en une semaine....:)
Max : réclame un format numérique pour fonctionner
IsDate : réclame un format Date pour fonctionner
A la fin je dois retrouver le format Date que pour les dates.
En plus je n'arrive pas à arrêter la boucle au bon moment.

Sub Bouton3_Cliquer()

Sheets("Etape1").Select

Columns("I:I").Select
Selection.NumberFormat = "General"

DL = Cells(Cells.Rows.Count, "I").End(xlUp).Row
V = Application.WorksheetFunction.CountIf(Range("I1", "I" & DL), "<" & Date)
Set myRange = Worksheets("Etape1").Range("I:I")
Max = Application.WorksheetFunction.Max(myRange)

Range("I1").Select
Cells.Find(What:=Max, After:=ActiveCell).Activate
r = ActiveCell.Row

'Etape1

Columns("I:I").Select
Selection.NumberFormat = "dd/mm/yyyy"

For L = 1 To r
For m = 13 To r

If IsDate(Range("I" & m).Text) Then

Sheets("Recap.").Select

Range("A" & L).Value = Sheets("Etape1").Range("I" & m).Value
Range("B" & L).Value = Sheets("Etape1").Range("DI" & m).Value
Range("C" & L).Value = Sheets("Etape1").Range("DQ" & m).Value
Range("D" & L).Value = Sheets("Etape1").Range("DY" & m).Value

L = L + 1

Else

Sheets("Etape1").Select

End If

Next m
Next

End Sub
 

job75

XLDnaute Barbatruc
Bonjour teosmi, le fil, le forum,
Je ne pense pas que les formules résoudront le problème
Mais si, voyez le fichier joint et les formules matricielles en A3 et F3 :
Code:
=INDEX(Etape1!I:I;PETITE.VALEUR(SI(ESTNUM(Etape1!I$1:I$2000)*NON(NB.SI(A$2:A2;Etape1!I$1:I$2000));LIGNE(Etape1!I$1:I$2000));1))
Les 2 tableaux de la feuille "Recap." sont des tableaux Excel structurés.

A+
 

Pièces jointes

  • Tableaux(1).xlsx
    209.8 KB · Affichages: 6

Discussions similaires

Réponses
26
Affichages
358

Statistiques des forums

Discussions
312 083
Messages
2 085 187
Membres
102 809
dernier inscrit
Sandrine83