Userform relation Combobox

Merci!

Le code n'est pas en erreur, mais ca ne fait pas se que je veux...

SI
texte dans Combobox est absent du tableaustock Code Barre

ALORS
Message erreur (et ne transcris rien dans mes textbox)

SINON (donc si le text dans la Combobox est présent dans la liste)
affiche dans combobox2 et textbox1-2-3-4

Désolé...

Je t'ai déjà donnée le code ici
Si tu ne rajoute pas de Else et End If il doit bien marcher.

Ca fonctionne jusqu'a se que je tape le 12ème caractère.

Je tape du 1er au 11ème parfait rien ne s'affiche dans mes textbox, et quand je tape le 12 eme (/13) paf il m'inscrit le premier code barre qu'il trouve avec ses 12 caractères.

Di coup si j'ai 1234567891234 dans ma liste, si je tape 1234567891235 il m'ecris les infos de 1234567891234

Ok je viens de voir et en effet.

Le problème vient du fait que tu veuilles écrire dans une combobox qui est déjà remplis par des items dans l'UserForm_Initialise.
Pourquoi ne pas plutôt utiliser une TextBox ?

Le même code dans une TextBox marcherait parfaitement. Et pas besoin d'une ComboBox puisque tu scanneras tes articles à la douchette et que le code barre s'affichera automatiquement

Oui c'est vrai, je n'en ai pas besoin, par contre en remplacent Combobox par textbox forcement ca ne fonctionne pas...

Private Sub UserForm_Initialize()
   TextBox7.Value = DateValue(Now)
   TextBox8.Value = DateValue(Now)
      TextBox9.Value = 0
   Dim J As Long
   Dim i As Integer

   ComboBox2.ColumnCount = 1

   Set Ws = Sheets("PRODUIT - Stock")   'Correspond au nom de votre onglet dans le fichier Excel

   With Me.TextBox13

      For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
         .AddItem Ws.Range("A" & J)
      Next J

   End With
   With Me.ComboBox2

      For J = 2 To Ws.Range("B" & Rows.Count).End(xlUp).Row
         .AddItem Ws.Range("B" & J)
      Next J

   End With
   For i = 1 To 7
      Me.Controls("TextBox" & i).Visible = True
   Next i

End Sub
'Pour la liste déroulante Code client

Private Sub TextBox13_Change()

   Dim Ligne As Long
   Dim i As Integer

   If Me.TextBox13.ListIndex = -1 Then Exit Sub

   Ligne = Me.TextBox13.ListIndex + 2

   ComboBox2 = Ws.Cells(Ligne, "B")

   For i = 1 To 4
      Me.Controls("TextBox" & i) = Ws.Cells(Ligne, i + 2)
   Next i

End Sub

Bonjour MaxXx39,

T'intéresses-tu au code que tu écris ? Où fais-tu simplement un copié/collé, me rapportes les erreurs et attends que je les corrige ?

Car là tu :

  1. n'as pas utilisé le code que je t'ai fourni
  2. as utilisé des propriétés impropres aux TextBox

Mon but n'est pas de faire ton code, mais que tu comprennes ce que tu fais !
Renseigne-toi sur la propriété ListIndex. Et reprend le code que je t'ai fourni précédemment pour adapter le code à la TextBox et à ton besoin.

Reviens ici si tu n'y arrives toujours pas en me présentant ce que tu as essayé de faire et ce qui bloque

Bonne journée,

Baboutz

J'ai essayé plusieurs choses en vain,

Merci de ton aide.

Juste que je n'ai jamais codé je veux juste faire se tableau correctement je ne fais jamais d'Excel sinon, donc je n'ai pas le temps de trop me pencher sur la VBA (bien que jy ai déjà passé des dizaine d'heures! juste pour 1 tableau...)

Salut MaxXx39,

Très bien, envoie moi donc ton fichier qui a du évolué depuis le début que j'y jette un coup d’œil

Merci,

Voici le dernier qui est fonctionnel (il me manque 2 onglets que je doit enlevé car supérieur a 1.5Mo je ne sais pas pourquoi d'ailleurs... mais ne change pas les fonctionnement des produits)

Ton fichier :

13maxxx39.zip (1.17 Mo)

Je remarque quand même que la TextBox que j'avais recommandé d'utiliser n'étais pas là ainsi que le code qui va avec...
Attention, j'ai enlever ta macro dans la Workbook_Open qui me créait pleins de fichiers sur mon bureau.

Tres bien merci, ca à l'air de fonctionner!

Hello,

J'ai juste un problème...

J'ai des Codes barres a 12 caractères, du coup lorsque j'en tape 12 il ne fait pas de recherche ...

J'ai essayé de remplacer <13 par 12 et mettre OR entre les 2 mais non.

Private Sub TextBox_CodeBarre_Change()

    If Len(TextBox_CodeBarre) < 12 Or Len(TextBox_CodeBarre) < 13 Then Exit Sub 'À ajuster en fct de tes codes barres, si 12/13 caractères alors <12

    'Recherche dans 'TableauStock' la présence ou non du code barre
    Set recherche = Worksheets("Produit - Stock").Range("TableauStock[Code Barre]").Find(What:=TextBox_CodeBarre.Value, LookAt:=xlWhole)

    'Si le code barre n'existe pas, affiche un message et sort de la procédure
    If recherche Is Nothing Then MsgBox "Ce code barre n'existe pas.": Exit Sub
  Set f = Sheets("PRODUIT - Stock")
  ligne = recherche.Row
  Me.ComboBox2 = f.Cells(ligne, 2)
  Me.TextBox1 = f.Cells(ligne, 3)
  Me.TextBox2 = f.Cells(ligne, 4)
  Me.TextBox3 = f.Cells(ligne, 5)
  Me.TextBox4 = f.Cells(ligne, 6)

End Sub

Salut MaxXx39,

Ce n'est pas logique... Essaye comme ceci :

 If Not Len(TextBox_CodeBarre) > 11 Then Exit Sub
Private Sub TextBox_CodeBarre_Change()

    If Not Len(TextBox_CodeBarre) > 11 Then Exit Sub 'À ajuster en fct de tes codes barres, si 12/13 caractères alors <12

    'Recherche dans 'TableauStock' la présence ou non du code barre
    Set recherche = Worksheets("Produit - Stock").Range("TableauStock[Code Barre]").Find(What:=TextBox_CodeBarre.Value, LookAt:=xlWhole)

    'Si le code barre n'existe pas, affiche un message et sort de la procédure
    If recherche Is Nothing Then MsgBox "Ce code barre n'existe pas.": Exit Sub
  Set f = Sheets("PRODUIT - Stock")
  ligne = recherche.Row
  Me.ComboBox2 = f.Cells(ligne, 2)
  Me.TextBox1 = f.Cells(ligne, 3)
  Me.TextBox2 = f.Cells(ligne, 4)
  Me.TextBox3 = f.Cells(ligne, 5)
  Me.TextBox4 = f.Cells(ligne, 6)

End Sub

Merci,

Avec celui ci dès que je tape le 12eme caractère J'ai le message Ce code Barre n'existe pas

Tu as ce problème en tapant à la main, mais in fine, si j'ai bien compris, ce sera ta douchette qui entrera l'info et donc là plus de soucis. Non ?

Il faut que j'essai avec la douchette effectivement,

Mais dans l'absolu il faudrait que sa fonctionne également à la main (si code barre ne fonctionne pas par exemple)

Je te tiens au courant,

Merci

Salut MaxXx39,

Quand l'utilisateur tape le code barre, il n'y a aucun moyen de savoir si l'utilisateur veut taper un code à 12 ou 13 chiffres...
Donc à cela, je vois deux solutions :

  • Passez tous les codes à 12 chiffres en code à 13 chiffres ou inversement (je ne sais pas si c'est possible)
  • Ne pas afficher une msgbox quand le code = 12 chiffres mais pas forcément le plus pratique

Merci,

Pour la première solution impossible, les codes barres sont sur des produits existants et certaines marques n'affiche pas le 13ème caractère (Je n'ai qu'une marque dans se cas...)

J'ai essayé de changer le >11 par 12, mais la recherche des codes à 12 ne se fait plus...

Oui c'est bien ce qu'il me semblait que c'est pas nous qui choisissons...
Sinon, au lieu de chercher pendant la saisie, tu peux ajouter un petit bouton recherche, regarde la version deux :

11maxxx39-v2.zip (1.19 Mo)

À noter que j'ai également restreint la TextBox pour n'autoriser que les chiffres (-> voir le code).

Cela te convient de cette manière ?

C'est pas mal comme ca!

Et pour faire la recherche, est-il possible de la faire
- si le curseur est dans la textbox et qu'on presse Enter (la douchette est programmé pour ecrire le code puis CR soit Enter)

- ou en cliquant sur la loupe

Rechercher des sujets similaires à "userform relation combobox"