Userform pour des recherches dans une base de données

Bonjour le forum,

je recherche une solution pour créer un outil de recherche simple et rapide dans une base de données.

Je voudrais rechercher toutes les infos liées à une date dans des bases de données situées sur différents onglets d'un classeur.

les bases de données sont mises à jour quotidiennement.

voici le fichier type :

241recherche.zip (6.77 Ko)

un userform est-il adapté?

Merci devotre aide

Bonjour nclsdp,

Je ne pense pas que tu as besoin d'un userform pour cette recherche.

Regarde un exemple avec la méthode Find.

545recherche.zip (14.75 Ko)

A+

Bonjour frangy,

c'est une très bonne solution pour mon cas merci beaucoup!

Bonjour le forum,

je reviens sur ce sujet pour compléter ma demande,

est il possible d'affiner la recherche?

ex : afficher tous les résultats du 22/05/2013/ entre 8:00 et 10:00

merci

Bonjour,

525recherche.zip (15.00 Ko)

A+

Merci frangy, ça fonctionne très bien!

En adaptant le code sur mon application, je me rends compte que le résultat de la recherche ne provient que d'une des bases de données (toujours la même, la dernière)... d'où peut venir le problème?

On peut penser que les données comparées ne sont pas identiques.

Tu peux faire un essai après avoir remplacé xlWhole par xlPart dans l’instruction

Set C = .Columns(1).Find(Range("G2"), , xlValues, xlWhole)

Difficile d’en dire plus sans voir ces données.

A+

Cette modif n'a pas eu d'effet...

c'est étrange car en regardant mes bdd, elles ont le même format...

Difficile d’en dire plus sans voir ces données.

A+

voila un fichier type

Problème de reconnaissance des données.

Teste comme cela.

127recherche.zip (23.35 Ko)

A+

Cette modif marche très bien dans mon application, merci beaucoup!

Bonjour le forum,

je reviens sur ce sujet car je n'arrive pas à écrire le code pour une sélection multiple du genre :

ex : sélectionner les colonnes A B C + la colonne I.

quel est le code pour cette opération?

merci de votre aide

Bonjour,

Qu’est-ce que tu entends par "sélectionner les colonnes A B C + la colonne I" ?

Le code initial effectue une recherche par date (colonne A) et heure (colonne B) puis un affichage des données des 3 colonnes A,B et C.

Tu cherches simplement à ajouter l’affichage de la donnée en colonne I ?

La donnée de la colonne I, tu la colles à quel emplacement ?

Dans l’exemple que tu as fourni, il n’y a aucune donnée en colonne I : tu copies des cellules vides ?

A+

En effet, je cherche juste à coller l'affichage de la colonne I des BDD sur la colonne D de la feuille recherche.

Option Explicit
Sub RechercherDate()
Dim F
Dim Feuille As Byte
Dim C As Range
Dim firstAddress As String
Dim LigneAjout As Long
    F = Array("bdd1", "bdd2", "bdd3", "bdd4", "bdd5", "bdd6", "bdd7")
    Range("A2:c" & Range("A1").End(xlDown).Row).ClearContents
    For Feuille = 0 To UBound(F)
        With Worksheets(F(Feuille))
            Set C = .Columns(1).Find(Range("e2"), , xlValues, xlPart)
            If Not C Is Nothing Then
                firstAddress = C.Address
                Do
                    If TimeValue(CDate(C.Offset(0, 1))) >= Range("f2") And TimeValue(CDate(C.Offset(0, 1))) <= Range("g2") Then
                        LigneAjout = Range("A" & Rows.Count).End(xlUp).Row + 1
                        C.Resize(, 3).Copy Range("A" & LigneAjout)
                        'On colle la donnée de la colonne I dans la cellule de la colonne D
                        C.Offset(0, 8).Copy Range("D" & LigneAjout)
                    End If
                    Set C = .Columns(1).FindNext(C)
                Loop While Not C Is Nothing And C.Address <> firstAddress
            End If
        End With
    Next Feuille
End Sub

A+

ok j'ai compri, merci beaucoup frangy

Bonjour le forum,

je reviens une nouvelle fois sur ce sujet pour améliorer un point :

je n'arrive pas à trouver le bon code à ajouter pour copier uniquement les valeurs des cellules dans la feuille recherche...

cela me permettrait de faire une meuilleure mise en forme par la suite.

Merci de votre aide!

Bonjour,

Tu remplaces

C.Resize(, 3).Copy Range("A" & LigneAjout)

par

C.Resize(, 3).Copy
Range("A" & LigneAjout).PasteSpecial Paste:=xlPasteValues

A+

Rechercher des sujets similaires à "userform recherches base donnees"