Excel vba bouton recherche

Résolu

Bonjours a tout le forum,

D'abord merci le forum ça dépanne bien quand ont est dans la mouise.

voilà pourquoi je post, j'ai fait un formulaire de saisie pour alimenter une base de donnée faite avec EXCEL.

J'ai mis un bouton de recherche adhérent, mais je ne sais pas comment le faire fonctionner.

je vous demande juste  qu'on m' explique la procédure.

Moi je pensai que c' était l' inverse du bouton ajouter adhérent.

je vous joint un bout du  code que j'ai fait.

merci d' avance pour votre aide précieuse que vous m" apporterez.

If MsgBox("Confirmez-vous l'adhésion?", vbYesNo, "Demande d'ajout") = vbYes Then

For Each ctrl In frmCivilite.Controls 'Code pour faire fonctionner les boutons options'
If ctrl.Value = True Then

     L = Sheets("BaseDA").Range("A65536").End(xlUp).Row + 1
        
        Range("A" & L).Value = lblDateAdhe '1
        Range("B" & L).Value = ctrl.Caption '2
        Range("C" & L).Value = txtNom '3
        Range("D" & L).Value = txtPrenom '4
        Range("E" & L).Value = txtAdresse '5
        Range("F" & L).Value = txtPhone '6
        Range("G" & L).Value = txtEmail '7
        Range("H" & L).Value = txtDateNai '8
        Range("I" & L).Value = CCur(Me.txtCotisation) '9
        Range("J" & L).Value = CCur(Me.txtPayer) '10
        Range("L" & L).Value = MoisDu '12
        Range("M" & L).Value = cboMoyenPai '13
        
       
                Unload Me
             
    End If
    
        Next
  
    End If

End Sub
 
__________________________________________________________________________________________
         
'Bouton : Pour retrouver un adhérent par nom'

Private Sub btnChercher2_Click()


Do Until ActiveCell = CLng(Me.txtNom)
    ActiveCell.Offset(3, 0).Select

    Loop

        lblDateAdhe = Range("A" & L).Value  '1
        ctrl.Caption = Range("B" & L).Value '2
        txtNom = Range("C" & L).Value       '3
        txtPrenom = Range("D" & L).Value    '4
        txtAdresse = Range("E" & L).Value   '5
        txtPhone = Range("F" & L).Value     '6
        txtEmail = Range("G" & L).Value     '7
        txtDateNai = Range("H" & L).Value   '8
        Me.txtCotisation = Range("I" & L).Value  '9
        Me.txtPayer = Range("J" & L).Value    '10
        MoisDu = Range("L" & L).Value       '12
        cboMoyenPai = Range("M" & L).Value  '13
  
End Sub

18 réponses

  1. Bonjour,

    Tout fonctionne parfaitement, sincèrement je te remercie, je vais clôturer la discutions et j’en ouvrirai une autre si nécessaire.

    cordialement.

    1. Bonjour,

       2°> Quand je clic sur le bouton modifier ça efface la ligne.

      Ben pas chez moi!

      Fichier modifie pour 1, mise a jour base et mise a jour listview comprise:  https://www.cjoint.com/c/LJdjKvq54Ug

      Actuelement vous pouvez ajouter x fois le meme adherent sur ajout ou apres recherche

      1. Bonjour,

        C'est super ce que tu as fais, je vais étudier attentivement ton code, mais il y a deux  problèmes :

        1° > Maintenant quand je clic sur sur le bouton ajouter j'ai le message d'erreur suivant : 'Erreur de compilation : référence incorrect ou non qualifiée'

         2°> Quand je clic sur le bouton modifier ça efface la ligne.

         J'aimerai Une explication histoire de comprendre.

        En attendant je vais essayer de trouver par moi-même.

        Cordialement.

        1. Bonjour,

          je te remercie pour tes réponses pertinentes et ta patience

          Y a pas de quoi

          fichier avec nom et prenom pour le recherche: https://www.cjoint.com/c/LJchKHfm1Fg

          Modif: code boutons ajout, recherche, modification, suppression

          Dans l'Userform frmSaisie, j'ai ajoute une listview pour visualisation de la base histoire de s'amuser. 

          Vous pouvez regarder dans l'Userform UF_Gestion_RDV_R_Tel_Val les possibiltes qu'une Listview apporte

          Cette Userform fait parti d'un fichier que j'ai code pour une personne sur CCM

          1. Bonjour ,

            Effectivement il y a plusieurs fois le même nom dans la base, ça serai bien d'ajouter le prénom si nécessaire.

            Si t'a un bout de code je suis preneur, sinon ton code fonctionne très bien.

            Faut dire que c'est la première fois que je fais un formulaire de saisie, d'ordinaire je tape directement les données dans la base.

            Je crois que je vais prendre des cours Excel  VBA, car je m'y intéresse de plus en plus.

            encore une fois je te remercie pour tes réponses pertinentes et ta patience.

            1. Re,

              fichier modifie pour recherche et ajout sans for each

               https://www.cjoint.com/c/LICq4N2U5Mg

              Z'avez pas,mal de boulot pour eviter les erreurs VBA et autres

              1. Bonjour,

                le fichier que j'ai mis a dispo fait la recherche seulement avec le Nom.

                C'est un peu different si Nom et Prenom

            2. Bonjour,

              Je recupere le fichier et regarde la chose

              Suite:

              Il est possible de valider un ajout avec un nom saisi, civilite et rien d'autre!

              La recherche par find n'est pas la bonne

              je vous arange ca 

              1. Re-bonjour à tous.

                Un grand merci à tous de vous pencher sur mon cas.

                Comme suggérer j'ai mis mon fichier a l'adresse suivante :  https://www.cjoint.com/c/LICnSr42ZE6

                Pour rappel, je n'arrive pas  à faire fonctionner le bouton Rechercher, peut-être que mon code  c'est pas ça que j'aurai du faire.

                salutations cordiales.

                1. Bonjour Ozone

                  Ça roule ?

                  En effet CTRL est un reliquat de la procédure ajout. Sûrement un copier/coller de la dite procédure.

                  Pour les boutons option il doit mettre à true le bouton dont le caption est égal à range("B" & etc

                  Par contre L n'est pas la bonne ligne puisque c'est la ligne de la dernière cellule non vide.

                  La "bonne" ligne est le résultat du find si trouvé.

                  La logique de la procédure de recherche est à revoir

                  1. Bonjour le fil,

                    J'ai l'impression que le ctrl est hérité de la boucle For Each et que potentiellement celui ci n'a rien a faire ici. 

                    Toute fois avec un exemple de fichier, on pourrait y voir plus clair. 


                    1. Bonjour,

                      Tiut a fait Thierry, le nom de cet objet est bien ctrl?

                      A defaut pouvez vous mettre votre fichier a dispo

                      Pour transmettre un fichier,
                      Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES, mais des donnees quand meme
                      il faut passer par un site de pièce jointe tel que cjoint.com

                      Allez sur ce site : http://cjoint.com
                      Clic sur parcourir,
                      Cherche ton fichier,
                      clic sur ouvrir,
                      Clic sur "Créer le lien cjoint",
                      Copier le lien,
                      Revenir ici le coller dans une réponse...

                      1. Au fait, CTRL label  ou textbox ou checkbox?

                    2. Bonjour,

                      c’est pour enregistrer dans la base de données  Mr ou Mme et c’est dans l’userform.

                      1. Bonjour,

                        frmsaisie.ctrl.Caption = Range("B" & L).Value

                        C'est un objet de l'userform ou? 

                        1. bonjour a tous ,

                          d'abord merci de bien vouloir vous pencher sur mon problème.

                          J'ai étudié la "méthode Find dans VBA"  comme on me l'a suggérer et j'ai fais le code ci-joint, mais j'ai une erreur de compilation " Membre de méthode ou de donnée introuvable j'ai le mot  "ctrl" surligner a la ligne " frmsaisie.ctrl.Caption = Range("B" & L).Value " , j'aimerais bien que l'on m'explique le pourquoi du comment , faut dire que je me débrouille moyennement en Excel VBA .

                          'Bouton : Pour retrouver un adhérent par nom'
                          
                          Private Sub btnChercher2_Click()
                          
                          Dim strFindWhat As String
                           strFindWhat = txtNom.Text
                            
                              L = Sheets("BaseDA").Range("C2:C65536").End(xlUp).Row
                          
                              Cells.Find(What:=strFindWhat, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Select
                                      
                              If MsgBox("Nom pas trouvé !", vbInformation + vbOKOnly, "CHERCHER") Then
                          
                          
                                  frmsaisie.lblDateAdhe = Range("A" & L).Value  '1
                                  frmsaisie.ctrl.Caption = Range("B" & L).Value '2
                                  frmsaisie.txtNom = Range("C" & L).Value       '3
                                  frmsaisie.txtPrenom = Range("D" & L).Value    '4
                                  frmsaisie.txtAdresse = Range("E" & L).Value   '5
                                  frmsaisie.txtPhone = Range("F" & L).Value     '6
                                  frmsaisie.txtEmail = Range("G" & L).Value     '7
                                  frmsaisie.txtDateNai = Range("H" & L).Value   '8
                                  frmsaisie.Me.txtCotisation = Range("I" & L).Value  '9
                                  frmsaisie.Me.txtPayer = Range("J" & L).Value    '10
                                  frmsaisie.MoisDu = Range("L" & L).Value       '12
                                  frmsaisie.cboMoyenPai = Range("M" & L).Value  '13
                            
                             End If
                            
                          End Sub
                          1. Contributeur

                            bonjour,

                            la valeur de L est indéterminée dans btnChercher2_Click().

                            1. bonjour ,

                              Merci pour ta réponse je vais aller voir cet méthode find dans VBA et je revient  dire si ça ma aider.

                              Je joint une photo de mon formulaire