VBA excel fermer userform

Résolu

Bonjour,

voila mon soucis, j'ai fais un userform dans lequel j'ai implanté tout les différente feuille que j'ai. Maintenant je suis bloquer sur le faite de dire au programme que dés l'instant ou l'utilisateur appuis sur le bouton correspondant à une feuille, le userform ce ferme et ouvre une inputbox demandant "quelle est le numero de la pièce" puis de selectionner la ligne où se trouve les numéro de la pièce.

Pouvez vous m'aider

Merci

5 réponses

  1. Re,

    je ne comprend pas le erreurs.

    Ben Laquelle?

    Vous n'avez pas adapte la colonne: vous c'est A pas B et pas mis l'inputbox

    Si vous avez beaucoup de lignes, vous avez opte pour l'execution la plus longue

    1. Contributeur

      Bonjour,

      Voir ici


      1. bonjour,

        Merci pour le lien il est super utile.

        j'ai donc fais un programme ci dessous, il sélection bien la bonne ligne mais j'ai plusieurs ligne que ou le même numéro. j'aimerai que mon programme sélectionne la dernière ligne qui correspond a la valeur demandé précédemment. je suis complètement bloqué ici.

        Public Sub CommandButton1_Click()
        Sheets(2).Activate
            Unload UserForm1
                NumPS = InputBox("Que voulez-vous rechercher ?")
         
                    Set a = Range("A:A").Find(NumPS, lookat:=xlWhole)
         
                If Not a Is Nothing Then
        
        
                a.EntireRow.Select
           End If
         
        End Sub
    2. Bonjour a tous

      Deux facons de voir. Adaptez a votre contexte

      'boucle en partant du haut mais seulement sur les lignes avec valeur Num 
      Sub test()
          Num = 2
          Nb = Application.CountIf(Columns(2), Num)       'nombre de fois Num existe
          If Nb > 0 Then
              lig = 2     'ligne de depart
              'Boucle  du nombre de fois pour trouver la derniere ligne de avec valeur Num
              For n = 1 To Nb
                  lig = Columns(2).Find(Num, Cells(lig, 2), , xlWhole).Row        'ligne
              Next n
              Rows(lig).Select
          End If
      End Sub
      
      'boucle sur toutes les lignes
      Sub test1()
          Num = 2
          Nb = Application.CountIf(Columns(2), Num)       'Num existe?
          If Nb > 0 Then
              Derlig = Range("B" & Rows.Count).End(xlUp).Row  'derniere ligne de la colonne
              NL = Derlig     'affectation pointeur de ligne
              'boucle inverse de bas en haut
              Do While NL <> 2
                  If Cells(NL, 2) = Num Then
                      Exit Do
                  End If
                  NL = NL - 1
              Loop
              Rows(NL).Select
          End If
      End Sub
      
      1. Bonjour,

        j'ai essayer les deux programme, je n'arrive pas a les faire fonctionner, excusez moi je suis vraiment un très gros débutant en vba, voila le programme que j'ai implanter dans le mien, je ne comprend pas le erreurs.

        Dim NumPS 'numero de commande
        
        
        Sub CommandButton1_Click()
        Sheets(2).Activate
            Unload UserForm1
                NumPS = InputBox("entrer le numero de PS")
            Num = 2
            Nb = Application.CountIf(Columns(2), Num)
            If Nb > 0 Then
                Derlig = Range("B" & Rows.Count).End(xlUp).Row
                NL = Derlig
                Do While NL <> 2
                    If Cells(NL, 2) = Num Then
                        Exit Do
                    End If
                    NL = NL - 1
                Loop
                Rows(NL).Select
            End If
        
        End Sub
      2. Contributeur
        @lostmain58

        bonjour,

        Si tu souhaites rester débutant, n'essaie surtout pas de comprendre ce que fait le code.

        Supprime la ligne 8, et remplace partout Num par NumPS.

      3. @yg_be

        j'ai déjà fais ça mais la ligne ne ce sélectionne pas et merci pour ta sympathie...

      4. @yg_be
        Sub CommandButton1_Click()
        Sheets(2).Activate
            Unload UserForm1
                NumPS = InputBox("entrer le numero de PS")
        
            Nb = Application.CountIf(Columns(2), NumPS)
            If Nb > 0 Then
                Derlig = Range("A" & Rows.Count).End(xlUp).Row
                LL = Derlig
                     Do While LL <> 2
                    If Cells(LL, 2) = NumPS Then
                        Exit Do
                    End If
                    LL = LL - 1
                Loop
                Rows(LL).Select
        
        End If
        End Sub

        je me donne énormément à essayer de comprendre, je regarde sur le manuel de Microsoft tout les codes... mais une ligne reste incompréhensible pour moi

            Nb = Application.CountIf(Columns(2), NumPS)
        

        si vous avez des tuto bien détaillé a me conseillé je suis preneur

        excuser moi si je vous donne l'impression de pas chercher alors que pas du tout.

        merci pour votre aide

    3. Derniere petite question je peux inserer un code qui permet de dire contient au lieu de doit avoir dans cette colonne?


          nb = Application.CountIf(Columns(1), NumPS)

      1. Contributeur

        peux-tu donner un exemple?

      2. @yg_be

        par exemple j'ai une pièce qui s'appelle PS708541_00 et je marque juste PS708541 dans le inputbox 

      3. Contributeur
        @lostmain58

        alors, pour le countif, je ferais 

        CountIf(Columns(2), NumPS & "*")

        j'ajouterais

        dim lnum as integer
        lnum = len(NumPS)

        et je changerais le test

        left(Cells(LL, 2),lnum) = NumPS
      4. @yg_be

        sa marche a la perfection merci beaucoup, et encore désolé pour le peu de compétence que j'ai, je vais mis mettre a fond.

        Bonne fête de fin d'année 

    4. Bonjour yg_be

      lostmain58:

      C'est même chose, il faut toujours faire un test. Countif donne un nombre de fois ou zéro, ensuite test et vous en faites ce que vous voulez

      1. je vais essayer merci