Réaliser une activation de feuille sur VBA

golock91 Messages postés 1 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'aurais besoin d'un coup de main pour réaliser une box sur excel
J'ai un fichier excel avec en page 1 une liste de noms
Ensuite il y a autant de pages que de noms
Quand j'entre le nombre d'heures réalisées par Mr X sur la page de Mr X, automatiquement, le nombre d'heures est ajouté à Mr X en page récapitulative, jusqu'ici assez simple
Ce que je voudrais faire c'est qu'au moment ou j'ouvre excel, en appuyant sur un bouton, une box s'ouvre et me demande le nom de la personne (si possible en tapant les 3 premières lettres j'ai tous les noms commençant par ces lettres qui s'affichent) et qu'une fois le nom sélectionné, sa page s'ouvre automatiquement.

Ceci me permettrait de ne pas chercher à chaque fois la bonne feuille car il y a pas mal de noms.

Merci d'avance
Je peux vous envoyer le fichier par mail si besoin

1 réponse

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    Sous VBA, créer un UserForm (Insertion / Userform sous vbe) appelé userForm1.
    Dans cet Userform, dessiner un textBox appelé : ZtxtNOMS et une listbox appelée : ListboxNOMS.
    Appeler = propriété "Name" de chaque contrôle
    Dessiner un bouton de commande appelé : CommandButton1 avec en propriété "caption" : Go (ou ce que vous voulez)...

    D'après un exemple de Michel_m :
    Le code de l'Userform :

    Option Explicit
    
    Private Sub CommandButton1_Click()
    If ListboxNOMS.ListIndex = -1 Then
        MsgBox "Veuillez sélectionner un nom dans la liste. Merci."
        Exit Sub
    End If
    Sheets(ListboxNOMS.List(ListboxNOMS.ListIndex)).Activate
    UserForm2.Hide
    End Sub
    
    Private Sub ZtxtNOMS_Change()
    'cf : https://forums.commentcamarche.net/forum/affich-14847865-recherche-semi-auto-dans-excel
    Dim Tablo
    Dim lettre As String, test As String
    Dim cptr As Integer, cptr_tablo As Integer, derLig As Integer
    
    lettre = UCase(ZtxtNOMS.Value)
    If lettre = "" Then Exit Sub
    ReDim Tablo(0)
    ListboxNOMS.Clear
    derLig = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
    With Sheets("Feuil1")
        For cptr = 1 To derLig
            test = .Cells(cptr, 1)
             If .Cells(cptr, 1) Like lettre & "*" Then
                Tablo(cptr_tablo) = .Cells(cptr, 1)
                cptr_tablo = cptr_tablo + 1
                ReDim Preserve Tablo(cptr_tablo)
            End If
    Next
    End With
    For cptr_tablo = LBound(Tablo) To UBound(Tablo)
        ListboxNOMS.AddItem Tablo(cptr_tablo)
    Next
    End Sub


    Le fichier exemple sisi c'est gratuit, ça fait plaisir!
    0