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
    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...

Chatron

XLDnaute Junior
Bonjour Chatron,

Comment voulez-vous être aidé si vous ne mettez pas votre fichier avec l'USF 🤔 :rolleyes:

A+
Bonjour
Désolé, j'avais exporté l'User pour le joindre au message, mais j'ai constaté que le forum n'acceptait pas le fichier .frm et .frx
voici donc mon fichier simplifié
Bon dimanche
merci pour l’intérêt que tu me portes
 

Pièces jointes

  • GEST_bibliotheque-24.zip
    220.2 KB · Affichages: 13

Chatron

XLDnaute Junior
Bonjour Hervé
Pourquoi "bien , le fichier mais sans MdP ...........c'est mieux"
Il n'y a pas de mot de passe pour utiliser l'userform ni pour le modifier

Seule la feuille de commande est protégée par un mot de,passe pour qu'on ne modifie pas les commandes
Si vous téléchargez en même temps le fichier "GdP_GdA.xls", quand vous cliquez sur "enregistrez un titre d'ouvrage", l'UserForm s'ouvre et vous pouvez faire toutes les interventions sauf "consulter les ouvrages" "par code barre" pour éventuellement en supprimer
J'ai moi même essayé en téléchargeant les fichiers que j'ai envoyé
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Quand on regarde un sujet , on aime bien aller voir partout ... nous ne sommes pas les auteurs
Là je découvre ton appli
et moi j'aime comprendre ce que fait l'appli ; Donc je me met en "Mode Création" je clique sur la forme comme ça avec le menu je vais direct sur "affecter une macro" ce qui me donne sans erreur chaque macro affectée à une forme ..etc
Sinon tu dis :
la consultation du fichier fonctionne par "auteur", par "date de prêt", mais pas par "code barre"
et de l'autre ci dessus
l'UserForm s'ouvre et vous pouvez faire toutes les interventions sauf "consulter les ouvrages" "par code barre" pour éventuellement en supprimer
Donc on peut pas voir le tri par CODE BARRE ??
Bon déjà j'ai tout re organisé mes répertoires pour caser tes chemins de fichiers pour utiliser dans les mêmes conditions
Lorsque L'USF s'affiche j'ai pas l'option Button 5 ?? qui est déclaré False à l'initialize normal ??
Pour finir , j'ai enregistré une macro tri sur E et apparemment j'ai une alerte car il y a un mélange de format des données dans cette colonne > Nombre & texte ??
Donc mon avis , avant d'aller plus loin il faudrait peut être reformater cette colonne comme il faut ( nombre)
Comment as tu accès au choix TRI CODE BARRE ?? ( j'ai modifié Opt5 false > true pour le test)
La macro est modifiée , le résultat dans le fichier GDP_GDA2
Est ce cela ?
 

Pièces jointes

  • GEST_bibliotheque-24.xlsm
    220.7 KB · Affichages: 2
  • GdP_GdA2.xls
    487 KB · Affichages: 5

Chatron

XLDnaute Junior
Merci pour ton aide
ça ne fonctionne pas
il y a un bug sur le tri que je ne comprends pas
VB:
ActiveWorkbook.Worksheets("GdA").Sort
pourtant c'est bien la bonne feuille et le bon fichier
C'est normal que le bouton 5 soit à "False", il passe à "True" lorsqu'on choisit de consulter (OpB2)
A l'ouverture de l'userform il est programmé à l'option "enregistrer un titre" avec le code barre (TbX_Douchette)
ce que je ne comprends pas c'est que , à ce stade, si je clique un code barre qui est déjà enregistré les cases auteur, titre et code rangement affichent le livre, ce qui veut dire que il trouve bien le ligne même s'il y a des codes enregistrés comme texte
Mais avec cette formulation de recherche je n'arrive pas avoir la ligne dans la listbox pour pouvoir la supprimer; C'est pourquoi j'ai essayé avec un deuxième textbox (TbX_Douch)
Excusez moi si mes explications sont un peu flou !
Petite précision de rappel : je travaille sous excell 97_2000 car l'ordi de la bibliothèque est vieux et sous XP
Merci de ton aide
 

herve62

XLDnaute Barbatruc
Supporter XLD
Voilà j'ai fait un enregistrement (rapide) détaillé pour que tu vois ce que j'ai fait . Je suppose qu'au début on fait comme ça ensuite j'ai fait la macro en "pas à pas" car j'ai pas vu comment tu valides le choix
Sinon on voit bien le tri effectué par code barre dans l'autre fichier .... c'est pas ça ??
 

Pièces jointes

  • Tri_code_barre.zip
    736.1 KB · Affichages: 2

Chatron

XLDnaute Junior
Oui le début de la manip est exactement ce que tu montres
Pour la suite, si on pouvait se passer du tri qui allonge la procédure ce serait aussi bien, D'autant plus qu'il faut trier la totalité du fichier jusqu'à la dernière ligne (environ 5000 lignes)
( j'avais voulu trier parce que je n'arrivai à rien) mais dans les autres action avec la douchette ça marche sans le tri
VB:
[COLOR=rgb(184, 49, 47)]ActiveWorkbook.Worksheets("GdA").Sort.SortFields.Clear[/COLOR]
de toute façon, chez moi, ça bloque sur la sélection du tri
ce que je veux essentiellement c'est afficher dans la listbox tous les livres ou le livre ayant le code barre correspondant pour voir si on a des livres en double ou triple et en supprimer ou supprimer des livres que la BDP nous retire
Je ne veux pas que les bénévoles qui gèrent la bibliothèque et qui ne matrisent pas du tout excell, fassent des manips directement dans le fichier Gdp_GdA au rique de décaler les codes et les titres, ce qui rendrait le fichier inutilisable (nous avons environ 5000 ouvrages)
Je ne suis pas très doué pour m'expliquer et au ras des paquerettes en VBA et à 83 ans c'est dur à assimiler
Je ne remercierai jamais assez tous ceux qui m'ont aidé à créer cette application que je m'éfforce d'améliorer
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
Bon j'ai revu ma copie et te propose cette solution , en fait comme j'avais dit la colonne des Codes n'est pas uniforme ( mélange de texte) j'ai laissé en 139 l'exemple il y a un "!" qui se met lorsque l'on selectionne cette cellule . De toute façon j'ai modifié le critère de recherche
Là tout fonctionne , sinon c'est aussi ta version Excel2000 un peu obsolète comme pour le tri ( encore dû au format données col E ) . J'ai supprimé ce tri ..... qui te rallonge de ......... UNE seconde , 😢:eek:
Ci joint avec 2 exemples
Espèrant que cela t'aille
 

Pièces jointes

  • GEST_bibliotheque-24_2.xlsm
    227.3 KB · Affichages: 6
  • codebarre.jpg
    codebarre.jpg
    49.1 KB · Affichages: 18
  • codebarre2.jpg
    codebarre2.jpg
    59.6 KB · Affichages: 16

Chatron

XLDnaute Junior
Bonjour
Bon j'ai revu ma copie et te propose cette solution , en fait comme j'avais dit la colonne des Codes n'est pas uniforme ( mélange de texte) j'ai laissé en 139 l'exemple il y a un "!" qui se met lorsque l'on selectionne cette cellule . De toute façon j'ai modifié le critère de recherche
Là tout fonctionne , sinon c'est aussi ta version Excel2000 un peu obsolète comme pour le tri ( encore dû au format données col E ) . J'ai supprimé ce tri ..... qui te rallonge de ......... UNE seconde , 😢:eek:
Ci joint avec 2 exemples
Espèrant que cela t'aille
Bonjour
Désolé, le résultat que tu as dans tes exemples, est bien le résultat souhaité, mais ça ne fonctionne pas chez moi
ça bloque sur "

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

J'ai bien essayé de déclarer "c" comme variable "range" mais ça ne change rien
Ma listbox reste vide, sauf si je tape "1" dans le TxB_Douch ou il m'affiche le titre correspondant
si je fais le même essai avec 2 ou 10 ou13, je n'ai plus rien dans la listbox
pardonne mon ignorance mais je n'y comprends rien
Merci pour ton aide
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bon si tu as ta col E bien formatée nombre et pas d'erreur comme à l'image
tu peux remettre l'instruction :
VB:
Set c = Rng.Find(Me.TbX_Douch.Value, LookIn:=xlValues)
là ça devrait passer ( chez moi ok aussi)
Attention : si tu entres chiffres par chiffres tu va avoir une liste "bidon" qui va se restreindre jusqu'à la fin de ton code , si tu ne veux pas ça , tu changes ta Sub _change par _AfterUpdate
 

Pièces jointes

  • Err_Form.jpg
    Err_Form.jpg
    26.6 KB · Affichages: 14

Chatron

XLDnaute Junior
Bon si tu as ta col E bien formatée nombre et pas d'erreur comme à l'image
tu peux remettre l'instruction :
VB:
Set c = Rng.Find(Me.TbX_Douch.Value, LookIn:=xlValues)
là ça devrait passer ( chez moi ok aussi)
Attention : si tu entres chiffres par chiffres tu va avoir une liste "bidon" qui va se restreindre jusqu'à la fin de ton code , si tu ne veux pas ça , tu changes ta Sub _change par _AfterUpdate
J'ai bien essayé les 2 modifications que tu me conseilles, mais ça plante toujours et en en plus ça bloque le programme et je suis obligé de faire un riset pour sortir
question bête : Est ce que VBA ne confond pas ce "c" avec "C" disque windows ?
Encore merci pour le travail que je te donne
 

Pièces jointes

  • bugJPG.JPG
    bugJPG.JPG
    72.7 KB · Affichages: 16

Discussions similaires

Statistiques des forums

Discussions
315 090
Messages
2 116 104
Membres
112 661
dernier inscrit
ceucri