Renseigner TextBox selon 2 choix

Bonjour à Tous,

Les TextBox 1-7-13-19-25-31-37-43-49 alimentent les Textbox à leurs droite.

Les TextBox 1-7-13-19-25-31-37-43-49 prennent l'information de l'onglet "Pièces" de la colonne A.

Comme nous venons de migrer vers SAP, les numéros de pièces ont changés.

Y a t'il un moyen quelconque, que l'utilisateur ait le choix d'inscrire, soit le numéro SAP ou IVARA

dans les TextBox 1-7-13-19-25-31-37-43-49, et que les Textbox à leurs droite se renseignent quand

même. Pour le moment en inscrivant le numéro de pièce SAP, les TextBox se renseignent.

Quand l'utilisateur inscris soit le numéro SAP ou IVARA, dans les TextBox 1-7-13-19-25-31-37-43-49,

il faut que ds les Textbox 1-7-13-19-25-31-37-43-49 s'inscrivent le numéro de SAP seulement.

Faut-il qu'au lieu de TextBox, je mette des ComboBox avec le choix de SAP ou IVARA ?

Ou s'il y a une autre façon de faire.

J'ai besoin de vos conseils S.V.P.

Je joins un fichier exemple.

Merci

Jean

16formulaire-v-01.xlsm (321.76 Ko)

Bonjour,

j'ai changé l'événement "TextBox1_Change" par l'événement "TextBox1_AfterUpdate"

et utilisé la fonction EQUIV

mais je trouve que ton idée de ComboBox serait très bien

Private Sub TextBox1_AfterUpdate()
Dim Cel As Range, rw As Long, Pièces As String
Dim Ligne As Long
Dim T1 As Integer
For T1 = 2 To 4
 Me.Controls("TextBox" & T1) = ""
Next T1

With Sheets("Pièces")
 Pièces = Me.TextBox1

  If Not IsError(Application.Match(Pièces, .Range("A:A"), 0)) Then
   rw = Application.Match(Pièces, .Range("A:A"), 0)
  Else
   rw = Application.Match(Pièces, .Range("E:E"), 0)
  End If   'note/ cela ne tient pas en compte si Pièces n'est trouvé dans aucune des 2 colonnes

  For T1 = 2 To 4
    Me.Controls("TextBox" & T1) = .Cells(rw, T1)
  Next T1

End With
End Sub

Bonsoir sabV,

Merci de m'aider,

Si j'écris une pièce de la colonne PIECE IVARA, EXEMPLE: 28551 ds le TextBox1, j'ai un message d'erreur:

Incompatibilité de Type qui m'amène sur la ligne en VBA:

rw = Application.Match(Pièces, .Range("E:E"), 0).

Mais je n'ai pas d'erreur si j'écris une pièce de la colonne PIECE SAP exemple: 14024960.

Merci

Jean

1 2

bonjour,

pourriez vous faire un test en remplacent la ligne

rw = Application.Match(Pièces, .Range("E:E"), 0)

par

rw = Application.Match(Val(Pièces), .Range("E:E"), 0)

je pense que les données de la colonne e ne sont pas en "Texte"

C’était plus simple que je l'avais vue,

Il suffit d'allongé la plage de recherche

en remplacant

Set Cel = .Columns("A").Find(what:=Me.TextBox1, LookIn:=xlValues, lookat:=xlWhole)

par

Set Cel = .Columns("A:E").Find(what:=Me.TextBox1, LookIn:=xlValues, lookat:=xlWhole)
Private Sub TextBox1_AfterUpdate()
Dim Cel As Range
Dim Ligne As Long
Dim T1 As Integer
For T1 = 2 To 4
Me.Controls("TextBox" & T1) = ""
Next T1
With Sheets("Pièces")
Set Cel = .Columns("A:E").Find(what:=Me.TextBox1, LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
For T1 = 2 To 4
Me.Controls("TextBox" & T1) = .Cells(Cel.Row, T1)
Next T1
Else
End If
End With
End Sub

Bonsoir sabV,

Excusez-moi pour le délai de réponse, je travaille de soir cette semaine.

Oui maintenant ça fonctionne. J'ai une autre petite demande si possible:

Est-ce qu'en inscrivant un numéro de pièce de la colonne "E" PIECES IVARA ds les TextBox 1-7-13-19-25-31-37-43-49,

que le résultat me donne le numéro de pièce SAP au lieu de celui d'Ivara.

Merci Beaucoup de votre AIDE.

Jean

Bonsoir,

voilà,

j'ai ajouté cette condition

If Len(Cel) = 5 Then Me.TextBox1 = .Cells(Cel.Row, 1)
Private Sub TextBox1_AfterUpdate()
Dim Cel As Range
Dim Ligne As Long
Dim T1 As Integer
Application.EnableEvents = False
For T1 = 2 To 4
Me.Controls("TextBox" & T1) = ""
Next T1
With Sheets("Pièces")
Set Cel = .Columns("A:E").Find(what:=Me.TextBox1, LookIn:=xlValues, lookat:=xlWhole)
If Len(Cel) = 5 Then Me.TextBox1 = .Cells(Cel.Row, 1)
If Not Cel Is Nothing Then
For T1 = 2 To 4
Me.Controls("TextBox" & T1) = .Cells(Cel.Row, T1)
Next T1
Else
End If
End With
Application.EnableEvents = True
End Sub

Bonsoir sabV,

C'est le le résultat que je cherchais.

Est-ce qu'il est possible d'étendre ce résultat pour les TextBox 1-7-13-19-25-31-37-43-49.

Merci encore de votre AIDE.

Jean

selon la création du UserForm, la seule manière est de recopier la macro pour autant de TextBox 1-7-13-19-25-31-37-43-49, de modifier Textbox1 par TextboxX et adapter la boucle For T1 = 2 To 4 au bon numéro.

sinon il faudrait refaire le UserForm et créer les controls en utilisant un module de classe.

Bonjour sabV,

Je vais faire le test avec les deux solutions que vous me proposer.

Vous m'avez fait avancé de beaucoup.

Un très GROS MERCI.

Jean.

Rechercher des sujets similaires à "renseigner textbox choix"