Contrôle "Scrollbar" en fonction Précédent/Suivant
Bonjour,
Je reviens vers les experts du VBA pour un petit problème qui je pense ne sera pas de vos inconnus pour les plus expérimentés.
J'ai donc un USERFORM fort classique, avec combobox, textbox etc... Dans la combobox je rappelle un objet (nom d'un dossier) et à chaque enregistrement un numéro de chrono se génère (quand j'ajoute un enregistrement). Si bien que cela se présente ainsi:
COMBOBOX1 = Affaire Truc TEXTBOX1 (c'est le n°de chrono):2020-001
Je possède donc des affaires qui ont le même nom mais avec plusieurs n° de chrono.
Dans mon formulaire j'ai donc un code de SCROLLBAR lié au changement de la combobox1, afin de faire défiler les n°de chrono qui correspondent à l Affaire Truc.
Mon problème c'est que je suis au n°2020-013, et l'Affaire Truc, à des enregistrements avec le n° de Chrono: 2020-008 puis 2020-009 puis 2020-010 etc...jusqu'à 2020-013
Quand je fais défiler mon "scrollbar", il me balaye bien de 2020-013 à 2020-010 mais ensuite au lieu de m'afficher le 2020-009, il m'affiche le 2020-002 avec un nom d'affaire en combobox1 qui n'est même pas l'Affaire Truc.
Je ne comprends pas pourquoi il ne suit pas chronologiquement les chiffres!
Je me suis donc penchée autrement à créer deux boutons, l'un précédent et l'autre suivant, je possède la même problématique.
Voici le code de ma procédure avec Scrollbar:
Private Sub ComboBox1_Change()
Dim Ligne As Long, I As Integer, entreprise As String
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Nettoyage
'récupère les éléments des 2 dictionnaires
Ligne = ordres(Me.ComboBox1.Value)(0)
entreprise = ordres(Me.ComboBox1.Value)(1): Lignes = Entreprises(entreprise)
'initialise la ScrollBar
Me.ScrollBar1.Min = 0: Me.ScrollBar1.Max = UBound(Lignes): Me.ScrollBar1.Value = Me.ScrollBar1.Min
'positionne la scrollbar selon l'ordre de service sélectionné
For I = 0 To UBound(Lignes)
If Lignes(I) = Ligne Then ScrollBar1.Value = I
Next I
'affiche les textbox selon selon l'ordre de service sélectionné
ScrollBar1_Change
End Sub
Private Sub ScrollBar1_Change()
Dim I As Integer, Ligne As Long
Ligne = Lignes(ScrollBar1.Value)
For I = 1 To 9
Me.Controls("TextBox" & I) = OS.Cells(Ligne, I)
Next I
End Subet celui des boutons précédent et suivant:
Private Sub CommandButton5_Click()
'bouton précédent
If Me.ComboBox1.ListIndex > 0 Then
Me.ComboBox1.ListIndex = Me.ComboBox1.ListIndex - 1
End If
End Sub
Private Sub CommandButton6_Click()
'bouton suivant
If Me.ComboBox1.ListIndex < Me.ComboBox1.ListCount - 1 Then
Me.ComboBox1.ListIndex = Me.ComboBox1.ListIndex + 1
End If
End SubDans ma feuille de calcul Excel qui est donc masquée car je n'utilise que l'userform pour répertorier mes données, j'ai pris soin de configurer la colonne du n°de chrono, par format personnalisé, serait ce cela qui poserait problème?
Je crois qu'il ne boucle pas dans la succession des numéros quand cela passe d'unité à dizaine etc... car les n°de chrono peuvent aller jusqu'à "2020' - 999!
D'avance merci bien pour vos lumières et de votre aide.