UserForm de navigation

Dekoy

XLDnaute Nouveau
Bonsoir à tous,
je souhaiterais créer une userform qui s'affiche dès l'ouverture du fichier.
Ce userform doit me permettre de choisir l'onglet à afficher avec une combobox et me permettre d'atteindre une ligne particulière de cet onglet avec une autre combobox.
Tout cela est déja pas mal réalisé mais je n'arrive pas à afficher le userform dès l'ouverture du fichier et à atteindre une cellule particulière.
Merci d'avance pour votre aide.
 

Pièces jointes

  • Test.xls
    41.5 KB · Affichages: 88
  • Test.xls
    41.5 KB · Affichages: 84
  • Test.xls
    41.5 KB · Affichages: 85

PMO2

XLDnaute Accro
Re : UserForm de navigation

Bonjour,

Essayez avec les codes suivants

1) code à copier dans la fenêtre de code du UserFom (et qui remplace le code existant)
Code:
Dim m As String

Private Sub ComboBox1_Change()
m = ComboBox1.Value
With Sheets(m)
  .Activate
  .[a1].Select
End With
ComboBox2.ListIndex = -1
End Sub
Private Sub ComboBox2_Change()
Dim i As Long
With Sheets(m)
  For i = 1 To .[a65536].End(xlUp).Row
    If .Cells(i, 1).Value = ComboBox2.Value Then
       .Cells(i, 1).Select
      Exit For
    End If
  Next i
End With
End Sub
Private Sub UserForm_Initialize()
Dim S As Worksheet
Dim var
Set S = ThisWorkbook.Sheets("PDG")
var = S.Range("a2:a" & S.[a1].End(xlDown).Row & "")
ComboBox1.List = var
var = S.Range("b2:b" & S.[b1].End(xlDown).Row & "")
ComboBox2.List = var
End Sub

2) code à copier dans la fenêtre de code de ThisWorkbook
Code:
Private Sub Workbook_Activate()
UserForm1.Show vbModeless
End Sub

Private Sub Workbook_Deactivate()
Unload UserForm1
End Sub

Cordialement.

PMO
Patrick Morange
 

Dekoy

XLDnaute Nouveau
Re : UserForm de navigation

Merci pour tout.
Petite question pour aller un peu plus loin:
est-il possible que la cellule que je pointe se trouve en haut de l'écran (que la ligne 50 soit la première en haut par exemple)??
Merci d'avance
 

PMO2

XLDnaute Accro
Re : UserForm de navigation

Bonjour,

est-il possible que la cellule que je pointe se trouve en haut de l'écran (que la ligne 50 soit la première en haut par exemple)??

Changez le code de la procédure "ComboBox2_Change" par le code suivant
Code:
Private Sub ComboBox2_Change()
Dim i As Long
With Sheets(m)
  For i = 1 To .[a65536].End(xlUp).Row
    If .Cells(i, 1).Value = ComboBox2.Value Then
       .Cells(i, 1).Select
       
'/// modif (cellule en haut) ///
       ActiveWindow.ScrollRow = i
'//////////////////////////////
       
      Exit For
    End If
  Next i
End With
End Sub

Cordialement.

PMO
Patrick Morange
 

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 862
Membres
103 979
dernier inscrit
imed