VBA excel fermer userform

Résolu/Fermé
lostmain58 Messages postés 26 Date d'inscription mardi 20 décembre 2022 Statut Membre Dernière intervention 26 janvier 2023 - 22 déc. 2022 à 16:01
lostmain58 Messages postés 26 Date d'inscription mardi 20 décembre 2022 Statut Membre Dernière intervention 26 janvier 2023 - 29 déc. 2022 à 13:26

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

A voir également:

5 réponses

f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 708
Modifié le 23 déc. 2022 à 11:44

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
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
22 déc. 2022 à 16:19

Bonjour,

Voir ici


0
lostmain58 Messages postés 26 Date d'inscription mardi 20 décembre 2022 Statut Membre Dernière intervention 26 janvier 2023 2
23 déc. 2022 à 08:58

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
0
f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 708
Modifié le 23 déc. 2022 à 10:04

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
0
lostmain58 Messages postés 26 Date d'inscription mardi 20 décembre 2022 Statut Membre Dernière intervention 26 janvier 2023 2
23 déc. 2022 à 10:22

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
0
lostmain58 Messages postés 26 Date d'inscription mardi 20 décembre 2022 Statut Membre Dernière intervention 26 janvier 2023 2 > yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024
26 déc. 2022 à 14:32

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

1
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 1 538 > lostmain58 Messages postés 26 Date d'inscription mardi 20 décembre 2022 Statut Membre Dernière intervention 26 janvier 2023
26 déc. 2022 à 14:33

Montre alors ton code adapté.

1
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 1 538 > lostmain58 Messages postés 26 Date d'inscription mardi 20 décembre 2022 Statut Membre Dernière intervention 26 janvier 2023
26 déc. 2022 à 16:38

as-tu fait une recherche sur countif?

c'est équivalent à la fonction =nb.si().

1
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 1 538 > lostmain58 Messages postés 26 Date d'inscription mardi 20 décembre 2022 Statut Membre Dernière intervention 26 janvier 2023
27 déc. 2022 à 09:39

as-tu exécuté le code pas à pas?

tu peux aussi ajouter des msgbox pour comprendre ce que fait le code.

1
lostmain58 Messages postés 26 Date d'inscription mardi 20 décembre 2022 Statut Membre Dernière intervention 26 janvier 2023 2
Modifié le 27 déc. 2022 à 11:36

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)

0
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 1 538
27 déc. 2022 à 16:07

peux-tu donner un exemple?

0
lostmain58 Messages postés 26 Date d'inscription mardi 20 décembre 2022 Statut Membre Dernière intervention 26 janvier 2023 2 > yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024
28 déc. 2022 à 10:55

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

0
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 1 538 > lostmain58 Messages postés 26 Date d'inscription mardi 20 décembre 2022 Statut Membre Dernière intervention 26 janvier 2023
28 déc. 2022 à 20:21

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
1
lostmain58 Messages postés 26 Date d'inscription mardi 20 décembre 2022 Statut Membre Dernière intervention 26 janvier 2023 2 > yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024
29 déc. 2022 à 13:26

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 

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 708
27 déc. 2022 à 18:50

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

0
lostmain58 Messages postés 26 Date d'inscription mardi 20 décembre 2022 Statut Membre Dernière intervention 26 janvier 2023 2
28 déc. 2022 à 10:56

je vais essayer merci

0