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 dans userform [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2017
    Messages : 26
    Points : 17
    Points
    17
    Par défaut Créer un bouton recherche dans userform
    bonjour a tous
    1 je suis débutant dans VBA,
    je cherche a crée un bouton rechercher ( si il est possible quand j'entre des valeurs dans le txtCommentaire et txtContacte toutes les valeurs saisie dans la ligne dans ma feille (Source) s'affichent dans mon userforme mais je ne sais pas comment tous les autres bouton fonction correctement, je vous

    voila les donnée de mon userform
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
     
    Dim var As Integer
    Private Sub btnChercher_Click()
     
    var = var + 0
    FrmSaisie.cboSecteur.Value = Source.Cells(var, 0).Value
    FrmSaisie.txtSociété.Value = Source.Cells(var, 1).Value
    FrmSaisie.txtAvisé.Value = Source.Cells(var, 2).Value
    FrmSaisie.txtDate.Value = Source.Cells(var, 3).Value
    FrmSaisie.txtCommentaire.Value = Source.Cells(var, 4).Value
    FrmSaisie.txtContacte.Value = Source.Cells(var, 5).Value
    FrmSaisie.txtFonction.Value = Source.Cells(var, 6).Value
    FrmSaisie.txtTéléphone.Value = Source.Cells(var, 7).Value
    FrmSaisie.txtEmail.Value = Source.Cells(var, 8).Value
     
     
    End Sub
     
     
     
     
    '******************************
    'procédure permettant de
    'Fermer mon formulaire
    '******************************
    Private Sub btnFermer_Click()
     
        Unload Me
     
    End Sub
     
    '******************************
    'Procédure permettant d'acéder
    'a la source de données
    '******************************
    Private Sub btnSource_Click()
        Sheets("Source").Activate
        Range("A1").Select
     
    End Sub
     
    '*********************************************
    'Procédure permettant de réinitialiser tous
    'les champs du formulaire
    '***********************************************
    Private Sub btnEfface_Click()
        cboSecteur = ""
        txtSociété = ""
        txtAvisé = ""
        txtDate = ""
        txtCommentaire = ""
        txtContacte = ""
        txtFonction = ""
        txtTéléphone = ""
        txtEmail = ""
     
    End Sub
     
    '*********************************************
    'Procédure permettant de réinitialiser tous
    'le bouton d'ajout d'enregistrement
    '***********************************************
    Private Sub txtSociété_Change()
        If txtSociété <> "" Then
     
            btnAjout.Enabled = True 'Activer le bouton
        Else
            btnAjout.Enabled = False 'Désactiver le bouton
     
        End If
     
    End Sub
     
    '*********************************************
    'Procédure permettant d'ajouter un nouvel enregistrement
    'dans la base de données
    '***********************************************
    Private Sub btnAjout_Click()
     
        Sheets("Source").Activate
        Range("A1").Select
        Selection.End(xlDown).Select 'on se position sur la dernière ligne non vide
        Selection.Offset(1, 0).Select 'on se décale d'une ligne vers le bas
        ActiveCell = txtSociété.Value
        ActiveCell.Offset(0, 1).Value = txtAvisé
        ActiveCell.Offset(0, 2).Value = txtDate
        ActiveCell.Offset(0, 3).Value = txtCommentaire
        ActiveCell.Offset(0, 4).Value = txtContacte
        ActiveCell.Offset(0, 5).Value = cboSecteur
        ActiveCell.Offset(0, 6).Value = txtFonction
        ActiveCell.Offset(0, 7).Value = txtTéléphone
        ActiveCell.Offset(0, 8).Value = txtEmail
     
     
     
     
    End Sub
     
    Private Sub UserForm_Click()
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Je ne suis pas certain de bien comprendre...
    Si tu entres des valeurs dans les contrôles txtCommentaire et txtContacte, tu peux les rechercher dans la feuille Source ainsi
    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
    Private Sub btnChercher_Click()
        Dim I As Long, nbLignes As Long
        Dim Source As Worksheet
        Dim Trouve As Boolean
     
        Set Source = Sheets("Source")
     
        nbLignes = Source.Cells(Rows.Count, "A").End(xlUp).Row
     
        Recherche les valeurs entrées dans txtCommentaire et txtContacte
        For I = 1 To nbLignes
            If LCase(Source.Range("D" & I)) = LCase(txtCommentaire.Value) And LCase(Source.Range("E" & I)) = LCase(FrmSaisie.txtContacte.Value) Then  'vérifie les lettres de colonnes
                Trouve = True
                FrmSaisie.cboSecteur.Value = Source.Cells(Var, 0).Value
                FrmSaisie.txtSociété.Value = Source.Cells(Var, 1).Value
                FrmSaisie.txtAvisé.Value = Source.Cells(Var, 2).Value
                FrmSaisie.txtDate.Value = Source.Cells(Var, 3).Value
    '            FrmSaisie.txtCommentaire.Value = Source.Cells(Var, 4).Value 'plus nécessaire
    '            FrmSaisie.txtContacte.Value = Source.Cells(Var, 5).Value
                FrmSaisie.txtFonction.Value = Source.Cells(Var, 6).Value
                FrmSaisie.txtTéléphone.Value = Source.Cells(Var, 7).Value
                FrmSaisie.txtEmail.Value = Source.Cells(Var, 8).Value
                Exit For
            End If
        Next
     
        If Not Trouve Then
            MsgBox "Aucune donnée correspondante trouvée"
        End If
     
        Set Source = Nothing
     
    End Sub
    MPi²

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2017
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    Merci beaucoup pour ta réponse rapide
    comme tu peux le constater sur le fichier xl ci joint, j'ai deux niveau d'enregistrement. dans le deuxième enregistrement je complété toutes les case qui sont rester vides.
    mais pour faire, soit je supprime tous et je recommence la saisie de 0 ou je modifier le premier enregistrement et je complet ce qui manque.

    Objectif:modifier le premier enregistrement et je complet ce qui manque
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Désolé, mais je n'ouvre pas les fichiers avec macros...

    Il te faut deux fonctions: Modifier et Supprimer.
    Ces 2 fonctions ont besoin de la fonction Rechercher.
    Une fois trouvées, les données sont alors modifiées ou supprimer selon tes besoins.
    Il faut seulement connaître la ligne.

    Si tu décides de modifier, tu écrases simplement ce qu'il y a d'écrit sans vérification comme dans ta fonction Ajout, mais en utilisant la ligne visée: Range("A" & Ligne").Offset(0, x).
    La vérification des données se fait lors de la création d'une nouvelle ligne de données et/ou à la modification d'un contrôle de ton Userform.
    MPi²

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2017
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    c'est pas grave!!!

    STP, si tu peut me donner un code exemple (détecter la ligne rechercher et afficher les champs rempli et appliquer la modification) pour l'adapter a mon besoin .
    comme je l'ai di au paravent je suis débutant en VBA

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Tu as ce qu'il faut dans le code de recherche que j'ai mis au #2...
    MPi²

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2017
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    POUR MODIFIER
    comment je force excel a identifier la range dans laquelle ce trouve les informations entrée précédemment ? quel partie du code me permet de faire ceci,

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    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
    Sub Cherche()
        MsgBox "La ligne est " & TrouveLigne
    End Sub
     
    Function TrouveLigne() As Long
        Dim I As Long, nbLignes As Long
        Dim Source As Worksheet
     
        Set Source = Sheets("Source")
     
        nbLignes = Source.Cells(Rows.Count, "A").End(xlUp).Row  'dernière ligne
     
        For I = 1 To nbLignes
            If LCase(Source.Range("D" & I)) = LCase(txtCommentaire.Value) And LCase(Source.Range("E" & I)) = LCase(FrmSaisie.txtContacte.Value) Then  'vérifie les lettres de colonnes
                TrouveLigne = I     'on a trouvé la ligne et on retourne sa valeur
                Exit For            'on sort de la boucle
            End If
        Next
     
        Set Source = Nothing
    End Function
    MPi²

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2017
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    je vérifier et je te fais un retour
    merci infiniment pour ta patience

    pas de succe avec le code

    est ce que je peu vous envoyer le fichier excel uniquement et coller le code sur cette pas comme ça vous allez avoir une idée complète de ce que cherche a faire.

  10. #10
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Bonjour
    regarde cette discussion je crois que ça va t'aider
    https://www.developpez.net/forums/d1...ique-combobox/
    bonne continuation
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2017
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    MERCI CHER AMI

    le fait est que je suis nul alors ça doit être aussi simple que possible svp

  12. #12
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    bonsoir
    remplir le champ commentaire et le champs contact puis cliquer sur le bouton rechercher
    ce bouton est chargé du code suivant : code qui peut être amélioré par les Grand développeur de ce site vu que je suis aussi débutant
    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
    Private Sub btnChercher_Click()
    Dim plage As Range
    Dim commentaire As String, Ref As String
    Dim DernLigne As Long
    commentaire = txtCommentaire.Value
    contact = txtContacte.Value
    With Sheets("Source")
    DernLigne = .Range("A" & Rows.Count).End(xlUp).Row
    Set plage = Sheets("Source").Range("E2:E" & DernLigne)
    For Each cell In plage
        If LCase(cell.Value) Like LCase(FrmSaisie.txtContacte.Value) And .Cells(cell.Row, 4).Value = LCase(txtCommentaire.Value) Then
    txtSociété.Value = .Cells(cell.Row, 1).Value
    txtAvisé.Value = .Cells(cell.Row, 2).Value
    txtDate.Value = .Cells(cell.Row, 3).Value
    cboSecteur.Value = .Cells(cell.Row, 6).Value
    txtFonction.Value = .Cells(cell.Row, 7).Value
    txtTéléphone.Value = .Cells(cell.Row, 8).Value
    txtEmail.Value = .Cells(cell.Row, 9).Value
       End If
       Next cell
      End With
    End Sub
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2017
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    Merci à tous pour votre participation !!!
    Nom : USERFORM.png
Affichages : 8198
Taille : 100,7 Ko
    j'ai mis ici une prise de mon écran du travail que je cherche a metre en place
    j'ai coller toutes vos proposition et essayer d'adapter certain d'autre mais tous mes efforts sont vain,
    merci

  14. #14
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Dans le code du bouton Chercher, tu utilises var qui n'a aucune valeur donc ça cause une erreur.
    Essaie comme ceci
    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
    Private Sub btnChercher_Click()
        Dim I As Long, nbLignes As Long
        Dim Source As Worksheet
        Dim Trouve As Boolean
     
        Set Source = Sheets("Source")
     
        nbLignes = Source.Cells(Rows.Count, "A").End(xlUp).Row
     
    '    Recherche les valeurs entrées dans txtCommentaire et txtContacte
        For I = 1 To nbLignes
            If LCase(Source.Range("D" & I)) = LCase(txtCommentaire.Value) And LCase(Source.Range("E" & I)) = LCase(FrmSaisie.txtContacte.Value) Then  'vérifie les lettres de colonnes
                Trouve = True
                FrmSaisie.cboSecteur.Text = Source.Cells(I, 6).Value
                FrmSaisie.txtSociété.Value = Source.Cells(I, 1).Value
                FrmSaisie.txtAvisé.Value = Source.Cells(I, 2).Value
                FrmSaisie.txtDate.Value = Source.Cells(I, 3).Value
                FrmSaisie.txtCommentaire.Value = Source.Cells(i, 4).Value 'plus nécessaire
                FrmSaisie.txtContacte.Value = Source.Cells(i, 5).Value
                FrmSaisie.txtFonction.Value = Source.Cells(I, 7).Value
                FrmSaisie.txtTéléphone.Value = Source.Cells(I, 8).Value
                FrmSaisie.txtEmail.Value = Source.Cells(I, 9).Value
                Exit For
            End If
        Next
     
        If Not Trouve Then
            MsgBox "Aucune donnée correspondante trouvée"
        End If
     
        Set Source = Nothing
     
    End Sub
    MPi²

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2017
    Messages : 26
    Points : 17
    Points
    17
    Par défaut bouton modifier
    c'est parfait cher ami
    il ne me reste que le code du bouton modifier si vous pouvez me souver encore je vous suis redevable a jamais.

  16. #16
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    C'est la même chose que rechercher, mais dans le sens contraire.
    Tu cherches la ligne, quand tu la trouves, tu inscris les valeurs des contrôles sur cette ligne plutôt que l'inverse.
    MPi²

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bouton recherche dans un UserForm
    Par aptagud dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 17/01/2010, 11h28
  2. Création Bouton rechercher dans formulaire
    Par Boubas1 dans le forum IHM
    Réponses: 1
    Dernier message: 06/05/2007, 14h49
  3. créer un bouton "Parcourir" dans un formulaire
    Par friald38 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/04/2007, 11h30
  4. Bouton Recherche dans access
    Par fouf_01 dans le forum VBA Access
    Réponses: 9
    Dernier message: 23/05/2006, 16h34
  5. Créer un bouton 'Imprimez' dans Word ou InfoPath
    Par Lorent dans le forum InfoPath
    Réponses: 1
    Dernier message: 17/01/2006, 14h37

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