Macro de recherche

  • Initiateur de la discussion Kevin
  • Date de début
K

Kevin

Guest
Bonjour,

Dans un tableau, en colonne H , j' ai des dates. Je voudrais sélectionner toutes les lignes de ce tableau contenant la date saisie.

J' ai fait la macro suivante:

Public Sub test()
Dim c As Range
For Each c In Range('h2:h' & Range('h65536').End(xlUp).Row)
If c.Value = '25/04/2005' Then
Range('h2:h' & c.Row).EntireRow.Select

End If
Next c
End Sub

Le problème est que j' ai bien les lignes contenant le 25/04/005 sélectionnées mais que j'ai aussi celles qui se trouvent au-dessus.

Donc peut-on sélectionner que les lignes contenant la date indiquée ?

Merci.
 

CBernardT

XLDnaute Barbatruc
Bonsoir Kevin et le forum,

Utilises la variable C que tu as définie :

Public Sub test()
Dim C As Range
For Each C In Range('h2:h' & Range('h65536').End(xlUp).Row)
If C.Value = '25/04/2005' Then
C.EntireRow.Select
End If
Next c
End Sub

Cordialement

Bernard
 
K

Kevin

Guest
Bonsoir Bernard et le forum,

Merci Bernard pour ta réponse, mais lorsque j' exécute la macro telle que tu l' as écrite, je n' ai maintenant que la dernière ligne contenant la date de sélectionnée.

A plus. Kevin.
 

pat1545.

XLDnaute Accro
Salut,

Option Explicit

Public Sub test()
Dim C As Range, rng2 As Range
For Each C In Range('h2:h' & Range('h65536').End(xlUp).Row)
If CDate(C.Value) = CDate('25/04/2005') Then
If rng2 Is Nothing Then
Set rng2 = C.EntireRow
Else
Set rng2 = Union(rng2, C.EntireRow)
End If
End If
Next C
rng2.Select
End Sub


Patrick
 
C

Canardo

Guest
Bonsoir ATs,

Je comprend pas ce que tu veux faire.

Veux-tu colorier les cellules en question, supprimer les autres lignes, les masquer temporairement, les indexer en bout de ligne?

Et pourquoi n'utilise-tu pas tout simplement le filtre?

Données>filtre>filtre automatique.
Tu clic sur la flèche de la colonne date, tu sélectionne la date choisie, et voilà!
Ensuite tu en fais ce que tu veux, même les copier ailleurs.

Bye
 
K

Kevin

Guest
Bonsoir,

Un grand merci à toi pat1545, ça fait un moment que je cherchais ça.

Maintenant pour abuser un peu, j' ai fait un USF avec un DTPicker qui me permet de choisir la date. Donc dans ton code, pour mettre la date, il faut remplacer If CDate(C.Value) = CDate('25/04/2005')
par If CDate(C.Value) = CDate(DTPicker1.value) ?

Encore merci,

A plus. Kevin.
 
K

Kevin

Guest
Re,

Problème résolu, j' ai mis ça:

Private Sub CommandButton1_Click()
Dim C As Range, rng2 As Range
Feuil1.Select
For Each C In Range('h2:h' & Range('h65536').End(xlUp).Row)
If CDate(C.Value) = CDate(DTPicker1.Value) Then
If rng2 Is Nothing Then
Set rng2 = C.EntireRow
Else
Set rng2 = Union(rng2, C.EntireRow)
End If
End If
Next C
rng2.Select
End Sub

Encore merci à Patrick. Maintenant je vais chercher à ne recopier que 3 colonnes sur une autre feuille à partir de la selection avec un petit filtre auto ou alors mettre ces 3 colonnes dans l' Usf.

Bonsoir, Kevin.
 
G

Genial

Guest
Bonjour à la communauté, :)

Merci à tous pour le partage de vos connaissances.

Je rebondis sur ces réponses, j'ai le même besoin de recherche et je souhaite copier les lignes sélectionnées en totalité.

J'ai suivi les 2 premières propositions, mais mes connaissances m'abandonnent pour les autres macros.

Pat1545, :)

Pourrais tu me dire à quoi correspond : crng2 ?
je décroche ici ...

et également là : par If CDate(C.Value) = CDate(DTPicker1.value) ?

Qu'est-ce qu'un DTPicker.value ?

Merci à tous

Cordialement Papoow ;)
 

Discussions similaires

Réponses
7
Affichages
353
Réponses
1
Affichages
187
Réponses
0
Affichages
166

Membres actuellement en ligne

Statistiques des forums

Discussions
312 379
Messages
2 087 765
Membres
103 662
dernier inscrit
rterterert