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 ,

    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

    1. Contributeur

      bonjour,

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

      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. Bonjour,

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

          C'est un objet de l'userform ou? 

          1. Bonjour,

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

            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 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 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. 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,

                    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,

                      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 ,

                      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. 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,

                          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,

                             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,

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

                              cordialement.