XL 2016 Après choix liste intuitive pouvoir modifier la cellule dans textbox

Nicolaroute

XLDnaute Nouveau
Bonjour le forum,

Je n'ai pas encore fini mon BDC, je vous explique précisément ma difficulté du jour :

Dans ma feuille ShwArticles, j'ai créer un userform pour mettre à jour le prix de ces articles. Combobox3, Textbox2.
J'ai fait quelques recherches sur la saisie intuitive que je trouve plus rapide pour trouver l'article et cela à bousculé un peu mes codes d'avant!!
Pourriez vous m'aider SVP??
les détails: quand je choisi l'article dans le combobox3 ( Code_Article) je voudrais au click que la Texbox2 affiche le prix et que la cellule correspondante dans la feuille s'active.
Ensuite apres la mise à jour du prix Bouton OK, changer le prix dans la cellule;
Voici le code que j'ai repris et modifier à Mr Boisgontier. Que je remercie au passage pour son travail.


Private Sub UserForm_Initialize()
Set f = Sheets("ShwArticles")
a = Application.Transpose([Code_Article])
Me.ComboBox3.List = a

End Sub

Private Sub ComboBox3_Change()
If Me.ComboBox3.ListIndex = -1 And IsError(Application.Match(Me.ComboBox3, a, 0)) Then
Me.ComboBox3.List = Filter(a, Me.ComboBox3.Text, True, vbTextCompare)
Me.ComboBox3.DropDown
Else
If Me.ComboBox3.ListIndex <> -1 Then Cells(Me.ComboBox3.ListIndex + 1, 3).Select " c'est là que ça coince!!
End If
Ligne = Me.ComboBox3.ListIndex

'Me.TextBox2 = f.Cells(Ligne, 3).Value "????
' f.Cells(Ligne, 3).Select

End Sub

Private Sub ComboBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

If KeyCode = 13 Then ActiveCell = Application.Proper(Me.ComboBox3.List)
End Sub


Private Sub CommandButton1_Click()
f.Cells(Ligne, 3).Value = CDbl(Me.TextBox2.Value)
Selection.Interior.ColorIndex = 40

merci par avance.
 

fanfan38

XLDnaute Barbatruc
Bonjour
VB:
Private Sub UserForm_Initialize()
Set f = Sheets("ShwArticles")
'transpose c'est pour passer en colonne des données en ligne (ou inversement)************
'n'est pas nécessaire dans ton cas*************
a = Application.Transpose([Code_Article])
Me.ComboBox3.List = a
End Sub

Private Sub ComboBox3_Change()
'la ligne ci dessous ne peux marcher a n'etant pas connu  ************************
If Me.ComboBox3.ListIndex = -1 And IsError(Application.Match(Me.ComboBox3, a, 0)) Then
Me.ComboBox3.List = Filter(a, Me.ComboBox3.Text, True, vbTextCompare)
Me.ComboBox3.DropDown
Else
If Me.ComboBox3.ListIndex <> -1 Then Cells(Me.ComboBox3.ListIndex + 1, 3).Select " c'est là que ça coince!!
End If
Ligne = Me.ComboBox3.ListIndex

'Me.TextBox2 = f.Cells(Ligne, 3).Value "????
' f.Cells(Ligne, 3).Select
End Sub

Private Sub ComboBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then ActiveCell = Application.Proper(Me.ComboBox3.List)
End Sub

Private Sub CommandButton1_Click()
f.Cells(Ligne, 3).Value = CDbl(Me.TextBox2.Value)
'où est la sélection? *****************************
Selection.Interior.ColorIndex = 40
end sub
Pourquoi déclaré f vu que c'est la feuille sur laquelle tu es...
Perso j'ai d'abord fait une macro qui lance l'userform quand tu double clic sur une ligne
clic droit sur le nom de la feuille et sélectionner visualiser le code
copier ensuite le code ci dessous
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  UserForm1.ComboBox3.Value = Range("A" & Target.Row).Value
  UserForm1.TextBox2.Value = Range("C" & Target.Row).Value
  UserForm1.Show
End Sub
quand à tes macros ci dessous macro modifiée
Code:
Private Sub ComboBox3_Change()
  If Me.ComboBox3.ListIndex <> -1 Then
    Ligne = Me.ComboBox3.ListIndex + 3
    Me.TextBox2.Value = Cells(Ligne, 3).Value
  End If
End Sub

Private Sub CommandButton1_Click()
  Ligne = Me.ComboBox3.ListIndex + 3
  Cells(Ligne, 3).Value = CDbl(Me.TextBox2.Value)
  Cells(Ligne, 3).Interior.ColorIndex = 40
End Sub
la variable ligne est déclarée pour toutes les macros mais pas sa valeur...
pour que sa valeur soit transmise avant le premier sub tu dois mettre public Ligne as long et non dim Ligne as long...
A+ François
 

Nicolaroute

XLDnaute Nouveau
Merci jacques, je préfère ta version, puisque que je choisis l'article trié dans le combobox3.
J'ai juste ajouté la commande :

Cells(Ligne, 3).Select

Pour aller dans la cellule correspondante.

Merci à fanfan38 pour son aide aussi.
Vous avez à votre disposition mon classeur, si voulez vous pouvez regarder si il n'y pas d'erreur ou modifier certaines Macro qui vous paraissent "lourdes" !!
à bientôt, ma demande est résolue!!
 
Haut Bas