IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Créer un bouton recherche et zone de texte pour une base de données excel


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 20
    Points : 4
    Points
    4
    Par défaut Créer un bouton recherche et zone de texte pour une base de données excel
    Bonjour à tous les membres du forum!

    J'ai un soucis, j'ai créer pour mon Tuteur une BDD sur excel contenant plus de 300 dossiers PDF. J'ai commencé à bidouiller des macros mais c'est la première fois que j'y touche, donc la je suis coincé. Je vous explique j'aimerais qu'à partir de la zone texte, ils puissent taper n'importe quel mots et seul les lignes contenant ce ou ces mots apparaissent. J'ai déjà un début de code et je peux vous fournir mon dossier.

    Merci et bonne après midi.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour,
    voilà!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
        Rows("1:" & Rows.Count).EntireRow.Hidden = True
        On Error Resume Next
         'votre mot de recherche apparaît dans ligne suivante
     
        Cells.Find(What:="Votre mot", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
            xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
            , SearchFormat:=False).Activate
     
        If Err.Number Then
            On Error GoTo 0
            Exit Sub
        End If
     
        Selection.EntireRow.Hidden = False
     
        For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
            Cells.FindNext(After:=ActiveCell).Activate
            Selection.EntireRow.Hidden = False
        Next
    si vous voulez référer le mot que vous chercher à un textbox1 alors il faut remplacer cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Cells.Find(What:="Votre mot", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
    par cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Cells.Find(What:=textbox1.text, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Merci d'avoir répondu et de m'aider j'ai essayé le code et cela m'affiche erreur d'exécution 1004. Je dois l'avoir mal placé ou intégré?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Avec quel version d'Excel travaillez-vous?

    Il faudrait aussi faire un print screen du code un fois clicker sur debug.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Je travail sous la dernière version d'excel j'essaie ça en rentrant ce soir.

  6. #6
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Je te propose une solution avec une ListBox pour la récupération des résultats. La ListBox est mise à jour au fur et à mesure de la saisie dans le TexBbox (évènement "Change"). La récupération du chemin du fichier se fait sur l'évènement "Click" de la ListBox. Dans mon code, les chemins des fichiers sans en colonne A de la feuille "Feuil1", à adapter. La plage est définie au lancement de la Form donc, la variable "Plage" est déclarée en tête de module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    Dim Plage As Range
     
    Private Sub UserForm_Initialize()
     
        'les adresses de fichiers sont en colonne A de la feuille "Feuil1", à adapter...
        With Worksheets("Feuil1")
     
            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
     
        End With
     
    End Sub
     
    Private Sub TextBox1_Change()
     
        Dim Tbl() As String
        Dim Cel As Range
        Dim Adr As String
        Dim I As Long
     
        Set Cel = Plage.Find(TextBox1.Text, , xlValues, xlPart)
     
        If Not Cel Is Nothing Then
     
            'mémorise l'adresse de la 1ère cellule
            Adr = Cel.Address
     
            'boucle pour récupérer toutes les occurences
            Do
     
                I = I + 1
     
                ReDim Preserve Tbl(1 To I)
                Tbl(I) = Cel.Value
     
                Set Cel = Plage.FindNext(Cel)
     
            Loop While Adr <> Cel.Address
     
        End If
     
        ListBox1.Clear
     
        'gère l'erreur du tableau non initialisé
        On Error Resume Next
        ListBox1.List = Tbl()
     
    End Sub
     
    Private Sub ListBox1_Click()
     
        Dim Fichier As String
     
        With ListBox1
     
            Fichier = .List(.ListIndex)
     
        End With
     
        MsgBox Fichier
     
    End Sub
    Hervé.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour Theze
    dans ce cas précis il est vraie qu'une boucle do loop while et beaucoup mieux qu'une boucle for. +1


    mais pour répondre à sa demande
    Citation Envoyé par Jeremy2109 Voir le message
    ... et seul les lignes contenant ce ou ces mots apparaissent...
    je crois qu'il faut cacher tout les ligne au début du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.EntireRow.Hidden = True
    puis à chaque mot trouvé on affiche la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.EntireRow.Hidden = False

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Je n'arrive pas à mettre en application ce que vous m'avez données et comme je ne m'y connais pas du tout je ne vois pas d'où viens mon erreur serait il possible que vous me le fassiez directement sur mon fichier?
    Fichiers attachés Fichiers attachés

  9. #9
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Je ne sais pas si c'est cala que tu veux, tu peux essayé,
    dans ton userform2 taper un mot (qui se trouve dans la bbd) puis tout les ligne qui contiendera ce mot
    seront affiché, les autre seront masqué.

    voir fichier joint
    Fichiers attachés Fichiers attachés

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    C'est ca cela marche très bien. Sauf que j'aimerais si possible que ca s'affiche sur la page recherche et que les titres en haut TYPE, FORMAT, OUVRAGE... reste afficher?

  11. #11
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Il faut changer cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rows("1:" & Rows.Count).EntireRow.Hidden = True
    pour cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rows("6:" & Rows.Count).EntireRow.Hidden = True

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Ca me fait toujours la même chose mes onglets en tête disparaissent toujours. Je vais essayé d'avancé un peu la dessus, et est je pourrais te recontacter au cas ou j'ai un problème?

  13. #13
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    probablement parce-qu'il sont déjà masqué

    changé cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rows("6:" & Rows.Count).EntireRow.Hidden = True

    pour cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("A1").Select
    Rows("1:" & Rows.Count).EntireRow.Hidden = false
    Rows("6:" & Rows.Count).EntireRow.Hidden = True

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    La ca marche je voulais savoir aussi comment faire pour qu'une fois la recherche effectuer mettre un bouton quitter et que la base de données se réaffiche comme à l'origine.

  15. #15
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    mettre cela dans ton bouton quitté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Sheets("BASE DE DONNEES").Select
        Range("A1").Select
        Rows("1:" & Rows.Count).EntireRow.Hidden = False

  16. #16
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Merci c'est nickel ça marche encore merci beaucoup.
    J'ai une autre question à te poser j'ai fais code pour remplir un formulaire sauf que je n'ai pas réussi à trouver ce que je cherchais. En fait j'aimerais que lorsque l'on rempli les cases liens_PDF et Liens_DWG cela ce transforme directement en lien hypertexte et non en texte.
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Private Sub CommandButton_Ajouter_Click()
        'Coloration des Labels en noir
        Label_TypedeFichier.ForeColor = RGB(0, 0, 0)
        Label_Format.ForeColor = RGB(0, 0, 0)
        Label_Ouvrages.ForeColor = RGB(0, 0, 0)
     
        'Contrôles de contenu
        If TextBox_Format.Value = "" Then 'SI pas de "nom" ...
            Label_Format.ForeColor = RGB(255, 0, 0) 'Label "nom" en rouge
        ElseIf TextBox_Ouvrages.Value = "" Then
            Label_Ouvrages.ForeColor = RGB(255, 0, 0)
        Else
            'Si le formulaire est complet, on insère les valeurs sur la feuille
            Dim no_ligne As Integer, TypedeFichier As String
     
            'Choix de Type de Fichier
            For Each bouton_TypedeFichier In Frame_TypedeFichier.Controls
                If bouton_TypedeFichier.Value Then
                    TypedeFichier = bouton_TypedeFichier.Caption
                End If
            Next
     
            'no_ligne = N° de ligne de la dernière cellule non vide de la colonne +1
            no_ligne = Range("A65536").End(xlUp).Row + 1
     
            'Insertion des valeurs sur la feuille
            Cells(no_ligne, 1) = TypedeFichier
            Cells(no_ligne, 2) = TextBox_Format.Value
            Cells(no_ligne, 3) = TextBox_Ouvrages.Value
            Cells(no_ligne, 4) = TextBox_Mode_Constructif.Value
            Cells(no_ligne, 5) = TextBox_N°_Document.Value
            Cells(no_ligne, 6) = TextBox_Materiel.Value
            Cells(no_ligne, 7) = TextBox_Engins.Value
            Cells(no_ligne, 8) = TextBox_Element_de_securite.Value
            Cells(no_ligne, 9) = TextBox_Famille.Value
            Cells(no_ligne, 10) = TextBox_Chantier.Value
            Cells(no_ligne, 11) = TextBox_Liens_PDF.Value
            Cells(no_ligne, 12) = TextBox_Liens_DWG.Value
     
            'Après insertion, on remet les valeurs initiales
            OptionButton1.Value = True
           TextBox_Format.Value = ""
           TextBox_Ouvrages.Value = ""
           TextBox_Mode_Constructif.Value = ""
           TextBox_N°_Document.Value = ""
           TextBox_Materiel.Value = ""
           TextBox_Engins.Value = ""
           TextBox_Element_de_securite.Value = ""
           TextBox_Famille.Value = ""
           TextBox_Chantier.Value = ""
           TextBox_Liens_PDF.Value = ""
           TextBox_Liens_DWG.Value = ""
        End If
    End Sub

  17. #17
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    pour faire un lien hypertexte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cells(no_ligne, 11).Hyperlinks.Add Anchor:=Selection, Address:= TextBox_Liens_PDF.Value , TextToDisplay:= TextBox_Liens_PDF.Value 
    Cells(no_ligne, 12).Hyperlinks.Add Anchor:=Selection, Address:=  TextBox_Liens_DWG.Value , TextToDisplay:=  TextBox_Liens_DWG.Value

  18. #18
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Je viens de tester ton code ca me transforme toutes les case en liens hypertexte sauf les 2 qu'il devrait transformer.

  19. #19
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    je ne comprend pas ce que tu veux dire
    il faut que tu remplaces ces 2 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cells(no_ligne, 11) = TextBox_Liens_PDF.Value
    Cells(no_ligne, 12) = TextBox_Liens_DWG.Value
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cells(no_ligne, 11).Hyperlinks.Add Anchor:=Selection, Address:= TextBox_Liens_PDF.Value , TextToDisplay:= TextBox_Liens_PDF.Value 
    Cells(no_ligne, 12).Hyperlinks.Add Anchor:=Selection, Address:=  TextBox_Liens_DWG.Value , TextToDisplay:=  TextBox_Liens_DWG.Value
    selon moi les 2 lignes que tu parles ne doivent pas passer ce code

  20. #20
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Bonjour Gnain!

    C'est ce que j'ai fait et toutes les cellules de ma ligne ajoutée ce transforme en lien hypertexte et j'ai un problème avec la recherche, elle marche mais certains mots qui sont pourtant dans le texte ne sont pas trouvé. J'aimerais lorsque l'on tape par exemple FOSSE que s'affiche toutes les lignes comprenant ce mot ex FOSSE, FOSSE ascenseur, FOSSE escalier et la seul les lignes n'ayant que le mot FOSSE apparaissent.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [ODBC] Comment stocker des grandes zones de textes dans une base Oracle / ODBC
    Par aurelienC dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/06/2012, 10h52
  2. Réponses: 3
    Dernier message: 21/06/2007, 01h10
  3. [Recherche] script gestion de mails dans une base de données
    Par emilie13 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 20/06/2007, 15h59
  4. JTextField, envoie du text a une base de données.
    Par niklette dans le forum Composants
    Réponses: 2
    Dernier message: 05/06/2006, 20h23
  5. Créer un index pour une Base de données
    Par john7 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 31/01/2005, 21h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo