Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres code barre dans textbox pour sélectionner ligne a afficher dans listbox

Chatron

XLDnaute Junior
Bonjour les amis qui m'avez beaucoup aidé à débuter en VBA
J'ai encore besoin de votre aide
Je suis toujours sous Excell 2000
J'ai une routine qui fonctionne dans plusieurs Userform, mais que je n'arrive pas à faire fonctionner sur cette sélection
Je m'explique et je joindrai un fichier :
j'ai un userform qui me permet d'enregistrer des titres d'ouvrage dans un autre classeur
L'enregistrement fonctionne,
la consultation du fichier fonctionne par "auteur", par "date de prêt", mais pas par "code barre"
Est ce parce que il y a des cases vides dans la colonne des codes barre ?
J'ai essaye de trier par code barre, mais je n'obtiens rien
Voici mon code:

VB:
Private Sub TbX_Douch_Change()
Dim A As Range
ListBox1.Clear
Windows("GdP_GdA.xls").Activate
Sheets("GdA").Select
 Range("E8").Select
    Range("E8:H65536").Sort Key1:=Range("E9"), Order1:=xlAscending, Key2:= _
        Range("F9"), Order2:=xlAscending, Key3:=Range("G9"), Order3:=xlAscending _
        , Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
        xlTopToBottom, DataOption1:=xlSortTextAsNumbers, DataOption2:=xlSortNormal _
        , DataOption3:=xlSortNormal
    With ListBox1
        For Each A In Sheets("GdA").Range("E9:E" & Range("E65536").End(xlUp).Row)
            If A.Value = Me.TbX_Douch.Value Then
                .AddItem A(1, 1)
                .List(.ListCount - 1, 1) = A(1, 2)
                .List(.ListCount - 1, 2) = A(1, 3)
                .List(.ListCount - 1, 3) = A(1, 4)
            End If
        Next A
    End With

End Sub
Merci pour votre aide
 

Pièces jointes

  • GdP_GdA1.xls
    474.5 KB · Affichages: 13
  • userformJPG.JPG
    91 KB · Affichages: 21
Solution
Bonjour Hervé
J'ai profité du passage de mon fils qui travaille dans l'informatique pour lui soumettre mon problème
comme il a l'habitude de la programmation il a pu voir la ou ça clochait (espions que je ne sais pas utiliser)
Par rapport au fichier test que tu m'avais envoyé et qui marchait alors que copié dans mon userform , il ne marchait pas il a constaté que le "c" de "Set c = Rng.Find" avait une valeur "As Variant" dans le test et était devenu "As Byte" chez moi
Il ajuste ajouté une boucle avant pour vérifier si c'est numérique et a remplacé le "c" par "cv"
Il pense qu'il doit y avoir un autre "c" dans une autre routine qui vient perturber ???
Je te joins ce qu'il a modifié
VB:
If Not IsNumeric(TbX_Douch.Value) Then
    'MsgBox...

herve62

XLDnaute Barbatruc
Supporter XLD
Ok donc c'est pas ça
Sinon comme dit BRUNO faut vérifier dans le VBA > outils > référence s'il n'y a pas une ligne notée Manquant
si oui > décocher
Pour terminer , peux tu tester cette petite appli complètement indépendante de ton programme ,mais sur la même base ..on verra
Verifie le chemin d'ouverture du GdP_GdA.xls dans la sub Open de Main adapte pour chez toi
Si Blocage idem .... c'est ta version Excel 2000 qui n'accepte plus certaines syntaxes
Tu fais un copier/coller ( GdP_GdA) d'un code BARRE pour coller dans la textBox
 

Pièces jointes

  • Test Find.zip
    111.7 KB · Affichages: 5

Chatron

XLDnaute Junior
Bonsoir
j'ai essayé ce que tu propose
déjà le commandButton est inerte
j'ai exécuté l'userform par la commande de visual basic et collé un code barre dans la case, mais rien ne se passe même si je valide par "entrée" (plusieurs essais infructueux)
J'ai regardé les références, seules 5 sont cochées, je te joins une copie d'écran
Ce qui me révulse, c'est d'avoir des routines qui marchent avec le nom de l'auteur, les dates la listbox affiche ce qu'il faut ou avec la douchette qui marche pour remplir des combobox et des textbox et qui ne fonctionnent pas pour la listbox
J’apprécie beaucoup qu'on se dévoue pour résoudre mon problème, mais ne pas comprendre ce que je fais, m'ennuie beaucoup
Merci en tout cas de passer autant de temps pour moi
 

Pièces jointes

  • references.JPG
    76.8 KB · Affichages: 16

herve62

XLDnaute Barbatruc
Supporter XLD
déjà le commandButton est inerte
Verifie ce qu'il fait comme dans ma vidéo
Ensuite regarde comment utiliser ... moi ça marche sans Pb tu le vois bien
Tu peux recréer un nouveau Post pour demander au forum de tester ce que je propose en essai tu verras bien d'autres réponses . Si cela fonctionne chez les autres ........ t'a plus qu'à changer de version Excel .... au moins le 2010
la listbox affiche ce qu'il faut ou avec la douchette qui marche
là j'ai un doute ??? car il y a aussi un find ??
J'arrive au bout du rouleau .....;d'idée
Le dernier truc c'est que c'est moi qui crée le Post avec ce fichier , là mes potes Barbatruc vont intervenir et tu t'incrustes comme ça tu verras ce qu'ils proposent et tu continues avec eux !!!
 

Pièces jointes

  • select_code.zip
    934.5 KB · Affichages: 8

Chatron

XLDnaute Junior
Bonjour

j'ai retravaillé sur ton test
en fait quand je veux visualiser le code de la commande button il n'y a rien, le module a disparu
J'ai donc recrée le module et affecté à un bouton qui ouvre bien userform
Par contre, je me suis aperçu que lorsque je colle un code barre dans la textbox il y a le symbole en fin de nombre
Si je supprime ce symbole ton test fonctionne, de même si j'utilise la douchette sur un livre enregistré ça fonctionne également
Tout content je copie la routine et l'adapte à mon userform en utilisant le même fichier GdP_GdA (pour être sur que ce n'est pas mon fichier original qui est corrompu) et la Paf : la gifle, bug sur le "c =" de "Set c = Rng.Find....."
J'essaie de renommer TbX_Douch en TextBox2 (j'ai déjà un TextBox1), mais ça plante toujours
Je vais bientôt me mettre à bêler comme une chèvre
est ce que ce "c" pourrait avoir une interférence avec une autre routine de l'Userform ?? ou bien est ce au niveau de la programmation des options bouton (OpB2 OpB5) ?
Les mystères de VBA sont pour moi insondables
Bonne fin de journée
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Pour info, j'ai essayé le fichier de #3, et ça a l'air de fonctionner : une fois que tous les chiffres du "code barre" sont saisis, les bonnes données correspondantes s'affichent dans les trois autres champs.
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Pourquoi ici ???
Parce que Chatron dit ceci :
Donc je teste et je me rends compte que chez moi ça fonctionne, donc je le signale.


Je viens de créer un Post SPECIFIQUE à une appli pour la tester !! il me semble que c'est pas le cas ici ?
Ah bon ? Quel rapport avec ma réponse ?


Est ce que j'ai parlé de ça ..? non c'est pas le fichier que je veux tester
Je ne sais pas si tu as parlé de ça ou d'autre chose. Et je ne vois pas bien le rapport avec ma réponse.
Libre à toi de tester le fichier que tu veux.
 

Chatron

XLDnaute Junior
Bonjour Hervé
J'ai profité du passage de mon fils qui travaille dans l'informatique pour lui soumettre mon problème
comme il a l'habitude de la programmation il a pu voir la ou ça clochait (espions que je ne sais pas utiliser)
Par rapport au fichier test que tu m'avais envoyé et qui marchait alors que copié dans mon userform , il ne marchait pas il a constaté que le "c" de "Set c = Rng.Find" avait une valeur "As Variant" dans le test et était devenu "As Byte" chez moi
Il ajuste ajouté une boucle avant pour vérifier si c'est numérique et a remplacé le "c" par "cv"
Il pense qu'il doit y avoir un autre "c" dans une autre routine qui vient perturber ???
Je te joins ce qu'il a modifié
VB:
If Not IsNumeric(TbX_Douch.Value) Then
    'MsgBox "message erreur"
    Exit Sub
End If

Set cv = Rng.Find(CDbl(Me.TbX_Douch.Value), LookIn:=xlValues)


 If Not cv Is Nothing Then
    premier = cv.Address
   If Sheets("GdA").Range(premier) Like "*" & TbX_Douch.Value & "*" Then
 
   I = 0
  Do
     Me.ListBox1.AddItem
     Me.ListBox1.List(I, 0) = cv.Offset(0, 0).Value
     Me.ListBox1.List(I, 1) = cv.Offset(0, 1).Value
     Me.ListBox1.List(I, 2) = cv.Offset(0, 2).Value
     Me.ListBox1.List(I, 3) = cv.Offset(0, 3).Value
        Set cv = Rng.FindNext(cv)
     I = I + 1
   Loop While Not cv Is Nothing And cv.Address <> premier
ou il a remplacé tous les "c" par "cv"
Ce qui était incompréhensible pour moi, c'est que la même routine avec le même fichier source fonctionne dans test et pas dans TxB_Douch
Le Problème venait, dans mon cas, que le "c" était déclaré "public As Byte" dans un autre Userform
Merci pour ton aide et ta patience car je sais comme ça peut être pénible d'expliquer quelque chose à quelqu'un qui n'y comprend rien
Bonne journée
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir Chatron
J'ai fait une recherche de la variable c dans ton fichier d'origine ... rien trouvé sauf A , B , D , E , S
Sinon teste ce fichier ( peut être revoir les chemins si les 2 dans même Rep > c'est ok) , tu copies un code et quand tu es dans l'USF > Ctrl + v ( coller) si ça marche chez toi met le code du textBox dans ton fichier et teste
Normalement c'est aussi ok
 

Pièces jointes

  • Test Find.zip
    109.6 KB · Affichages: 5

Chatron

XLDnaute Junior
bonsoir
j'ai trouvé la variable "c" déclaré "public" : elle utilisée dans un module qui gère les boutons d'un autre userfom (Archives)
Mais pour la TxB_Douch, j'ai remplacé cette variable par "cv" et ça marche très bien
Merci de ton aide
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Donc on pouvait pas trouver puisque le fichier joint ici n'était , en fait , toujours pas le fichier d'utilisation réelle
Comme quoi quand on dit de joindre le BON !! fichier
Donc c'est ok pour tout ?
Si oui mettre RESOLU
Bon week end
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…