chostra
XLDnaute Nouveau
Bonjour à tous,
Aujourd'hui, je vous propose mon 1er problème, suite à plusieurs années de lecture sur ce super forum et l'utilisation de la loupe trop peu utilisée quand je vois vos innombrables réponses
Donc ,j'ai mis en place dans un planning, une succession de listes de choix avec appel automatique des noms. Sur ca, aucun problème, cependant, je ne vais pas être le seul à l'utiliser, et la névrose et les tocs de mes collègues m'impose de pousser le visse beaucoup plus loin.
Je dépose déjà mon code actuel qui fonctionne très bien :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' plage où la liste est affichée
If Not Intersect(Target, Range("f8:u" & [a65000].End(xlUp).Row + 1)) Is Nothing And Target.Count = 1 Then
'ouvre le menu de proposition de choix lors de l'entrée dans la cellule (remplace Alt + flèche du bas)
'SendKeys "%{down}" 'en attente pour l'instant, problème avec l'utilisation des keycode 40 et 38, et active et desactive de VerrNum à chaque clic...
' données de la liste
a = Application.Transpose(Sheets("BDDsPersTravail").Range("d2:d" & Sheets("BDDsPersTravail").[d65000].End(xlUp).Row).Value)
Me.ComboBox1.List = a
Me.ComboBox1.Height = Target.Height + 3
Me.ComboBox1.Width = 250
Me.ComboBox1.Top = Target.Top
Me.ComboBox1.Left = Target.Left
Me.ComboBox1 = Target
Me.ComboBox1.Visible = True
Me.ComboBox1.Activate
Me.ComboBox1.AutoTab = True
'Me.ComboBox1.DropDown ' ouverture automatique au clic dans la cellule
Else
Me.ComboBox1.Visible = False
End If
End Sub
Private Sub ComboBox1_Change()
'vérification et stop "débogage"
If Me.ComboBox1 <> "" And Me.ComboBox1.ListIndex = -1 And IsError(Application.Match(Me.ComboBox1, a, 0)) Then
Me.ComboBox1.List = Filter(a, Me.ComboBox1.Text, True, vbTextCompare)
Me.ComboBox1.DropDown
Else
ActiveCell = Me.ComboBox1
End If
End Sub
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
' touche Tabulation
If KeyCode = 9 Then ActiveCell.Offset(, 1).Select
' touche ENTRÉE
If KeyCode = 13 Then ActiveCell.Offset(, 1).Select
' touche SUPPR. (code keycode 46 pour le bouton suppr), ensuite, activecell.value donc saisie "", puis selection column + 1 puis column -1, pas très catholique mais ca fonctionne
If KeyCode = 46 Then ActiveCell.Value = "": ActiveCell.Offset(, 1).Select: ActiveCell.Offset(, -1).Select
' touches direction
'If KeyCode = 40 Then ActiveCell.Offset(1).Select 'flêche bas ne fonctionne pas encore correctement
'If KeyCode = 38 Then ActiveCell.Offset(-1).Select 'flêche haut ne fonctionne pas encore correctement
If KeyCode = 37 Then ActiveCell.Offset(, -1).Select 'flêche gauche
If KeyCode = 39 Then ActiveCell.Offset(, 1).Select 'flêche droite
End Sub
Donc ici vous pouvez voir que j'ai plusieurs soucis malgré tout, j'ai donc besoin de rendre ces listes encore plus intuitives, avec mes besoins suivant :
- j'ai besoin de pouvoir me déplacer d'une cellule à l'autre avec les flèches clavier, cependant, gauche et droite pas de soucis, mais pas haut et bas, car j'ai l'occurrence n°1 qui se sélectionne à chaque fois en plus du déplacement. C'est super gênant, d'autant que je peux avoir des cellules déjà complétées, le but étant de passer dessus sans la modifier si elle est déjà complétée. A mon sens le problème vient du fait que dans ma combobox, si j'appui sur flèche bas, cela sélectionne la première donnée après la donnée sélectionnée.
- Le scroll ne fonctionne pas quand je clic sur la flèche qui ouvre ma liste de choix (pas très important en soit mais ca peut être sympa)
- Et le plus important, j'aimerai que cette privatesub ne s'active uniquement que quand j'écris, et non quand je clic, car j'ai besoin de colorer, mettre en gras, sélectionner etc.. pour tout un tas de raison, sans ouvrir ces combobox. Cela permettra à coup sur de rendre plus fluide mon classeur par la même occasion je pense.
Désolé pour se post long, et merci d'avance pour l'aide que vous pourrai m'apporter.
Amicalement
Chostra
Aujourd'hui, je vous propose mon 1er problème, suite à plusieurs années de lecture sur ce super forum et l'utilisation de la loupe trop peu utilisée quand je vois vos innombrables réponses
Donc ,j'ai mis en place dans un planning, une succession de listes de choix avec appel automatique des noms. Sur ca, aucun problème, cependant, je ne vais pas être le seul à l'utiliser, et la névrose et les tocs de mes collègues m'impose de pousser le visse beaucoup plus loin.
Je dépose déjà mon code actuel qui fonctionne très bien :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' plage où la liste est affichée
If Not Intersect(Target, Range("f8:u" & [a65000].End(xlUp).Row + 1)) Is Nothing And Target.Count = 1 Then
'ouvre le menu de proposition de choix lors de l'entrée dans la cellule (remplace Alt + flèche du bas)
'SendKeys "%{down}" 'en attente pour l'instant, problème avec l'utilisation des keycode 40 et 38, et active et desactive de VerrNum à chaque clic...
' données de la liste
a = Application.Transpose(Sheets("BDDsPersTravail").Range("d2:d" & Sheets("BDDsPersTravail").[d65000].End(xlUp).Row).Value)
Me.ComboBox1.List = a
Me.ComboBox1.Height = Target.Height + 3
Me.ComboBox1.Width = 250
Me.ComboBox1.Top = Target.Top
Me.ComboBox1.Left = Target.Left
Me.ComboBox1 = Target
Me.ComboBox1.Visible = True
Me.ComboBox1.Activate
Me.ComboBox1.AutoTab = True
'Me.ComboBox1.DropDown ' ouverture automatique au clic dans la cellule
Else
Me.ComboBox1.Visible = False
End If
End Sub
Private Sub ComboBox1_Change()
'vérification et stop "débogage"
If Me.ComboBox1 <> "" And Me.ComboBox1.ListIndex = -1 And IsError(Application.Match(Me.ComboBox1, a, 0)) Then
Me.ComboBox1.List = Filter(a, Me.ComboBox1.Text, True, vbTextCompare)
Me.ComboBox1.DropDown
Else
ActiveCell = Me.ComboBox1
End If
End Sub
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
' touche Tabulation
If KeyCode = 9 Then ActiveCell.Offset(, 1).Select
' touche ENTRÉE
If KeyCode = 13 Then ActiveCell.Offset(, 1).Select
' touche SUPPR. (code keycode 46 pour le bouton suppr), ensuite, activecell.value donc saisie "", puis selection column + 1 puis column -1, pas très catholique mais ca fonctionne
If KeyCode = 46 Then ActiveCell.Value = "": ActiveCell.Offset(, 1).Select: ActiveCell.Offset(, -1).Select
' touches direction
'If KeyCode = 40 Then ActiveCell.Offset(1).Select 'flêche bas ne fonctionne pas encore correctement
'If KeyCode = 38 Then ActiveCell.Offset(-1).Select 'flêche haut ne fonctionne pas encore correctement
If KeyCode = 37 Then ActiveCell.Offset(, -1).Select 'flêche gauche
If KeyCode = 39 Then ActiveCell.Offset(, 1).Select 'flêche droite
End Sub
Donc ici vous pouvez voir que j'ai plusieurs soucis malgré tout, j'ai donc besoin de rendre ces listes encore plus intuitives, avec mes besoins suivant :
- j'ai besoin de pouvoir me déplacer d'une cellule à l'autre avec les flèches clavier, cependant, gauche et droite pas de soucis, mais pas haut et bas, car j'ai l'occurrence n°1 qui se sélectionne à chaque fois en plus du déplacement. C'est super gênant, d'autant que je peux avoir des cellules déjà complétées, le but étant de passer dessus sans la modifier si elle est déjà complétée. A mon sens le problème vient du fait que dans ma combobox, si j'appui sur flèche bas, cela sélectionne la première donnée après la donnée sélectionnée.
- Le scroll ne fonctionne pas quand je clic sur la flèche qui ouvre ma liste de choix (pas très important en soit mais ca peut être sympa)
- Et le plus important, j'aimerai que cette privatesub ne s'active uniquement que quand j'écris, et non quand je clic, car j'ai besoin de colorer, mettre en gras, sélectionner etc.. pour tout un tas de raison, sans ouvrir ces combobox. Cela permettra à coup sur de rendre plus fluide mon classeur par la même occasion je pense.
Désolé pour se post long, et merci d'avance pour l'aide que vous pourrai m'apporter.
Amicalement
Chostra