Autres bug sur une procédure avec textbox contenant un code barre

Chatron

XLDnaute Junior
Bonjour les amis
je reviens vers vous à cause de mon incapacité résoudre mon problème
Avant toute chose je précise que mon application pour gérer une petite bibliothèque associative fonctionne avec un ordinateur ancien
Windows Xp et Office 97 2000
C'est grâce à l'aide intensive de ce forum que mon application fonctionne, mais, à retardement, je me suis aperçu d'un problème sur la dernière procédure
J'ai une procédure TbX_Douchette qui cherche le code qui s'inscrit (avec la douchette) dans la textbox et qui remplit les CbBox avec les données des autres colonnes sur la même ligne
S'il n'y a pas de codes correspondants dans la colonne Code on peut continuer en recherchant la suite avec les combobox
Dernièrement avec l'aide de TooFatBoy et de Bruno M45 j'ai mis une commandBox pour enregistrer le code manquant directement après avoir sélectionné l'auteur, le titre et le rangement
Cette dernière procédure que j'avais essayé en en remplissant la textbox par un copier collé (je n'avais pas de lecteur de code barre sous la main) fonctionnait normalement ce n'est pas le cas avec le lecteur de code barre
Si je supprime cette dernière procédure (commandBox : CmbCode) La procédure TbX_Douchette fonctionne normalement, même s'il n'y a pas de codes correspondant dans la colonne
Par contre si la procédure commanBox n'est pas désactivée, quand je saisis le code dans la textBox avec la douchette ça bugue dans la commandBox
Code dans textBox Tbx_Douchette
VB:
Private Sub TbX_Douchette_Change() 'action douchette
Dim Code As Range
    Me.CbB2 = ""
    Me.CBb3 = ""
    Me.CbB4 = ""
 
    If TbX_Douchette <> "" Then
        Workbooks("GdP_GdA.xls").Sheets("GdA").Activate
        Set Code = Columns("E").Find(TbX_Douchette.Value, , xlValues, xlWhole)
        If Not Code Is Nothing Then
             Me.CbB2 = Code.Offset(0, 1)
             Me.CBb3 = Code.Offset(0, 2)
             Me.CbB4 = Code.Offset(0, 3)
              
        End If
       'TbX_Douchette.SetFocus
    
    End If
End Sub
Code dans CmBCode
Code:
Private Sub CmbCode_Click()
'
Dim lig As Long

    With Workbooks("GdP_GdA.xls").Sheets("GdA")
        lig = .Range("G9:G" & .Cells(.Rows.Count, 7).End(xlUp).Row).Find(CBb3.Value, LookIn:=xlValues).Row
        .Cells(lig, 5).Value = TbX_Douchette.Value
    End With

End Sub
Bloque sur
VB:
 lig = .Range("G9:G" & .Cells(.Rows.Count, 7).End(xlUp).Row).Find(CBb3.Value, LookIn:=xlValues).Row

Pourquoi la saisie douchette dans la textBox agit dans le CommandBouton ?
J'ai passé un temps fou à essayer des "if" , des "Else", "goto fin", "Exit Sub"

Merci pour votre aide

 

Pièces jointes

  • Gest_biblio_24_reduit.zip
    187.2 KB · Affichages: 4
  • GdP_GdA_anonyme.xls
    839 KB · Affichages: 4

TooFatBoy

XLDnaute Barbatruc
Bonjour,

J'ai l'impression que ça correspond à ce que je t'avais signalé dans ton fil précédent : tu vides les ComboBox, en particulier CBb3, lors de la saisie dans la TextBox TbX_Douchette :
Mais ça ne fonctionnera que si tu entres le code de la douchette avant de sélectionner l'auteur et le titre de l'ouvrage, puisque dans la macro TbX_Douchette_Change tu as mis un Me.CBb3 = "".
 

Chatron

XLDnaute Junior
Bonjour
Je rentre dans l'ordre
1 le lecteur
2 click avec la douchette sur le code
Si le code est enregistré, les combo box se remplissent
Si le code est absent c'est la que ça plante et je ne peux pas aller plus loin
Si je n'utilise pas la douchette que je rentre le code par un copié collé ou en tapant les chiffres ça marche
Et pourquoi ça plante dans la routine qui n'est pas sollicité puisque je ne touche pas la commandbox ?
Je n'arrive pas à faire que la routine de la textbox_Change s'arrête si le code est absent de la colonne

Merci de ton aide

Depuis que j'ai constaté le problème j'ai du passer plus de 20h à essayer de le corriger au point de m'empêcher de dormir
J'ai le défaut de ne pas savoir lâcher prise même si je ne suis pas compétent
 

Chatron

XLDnaute Junior
Re bonjour
J'ai déjà essayé d'expliquer plus haut
Je vais essayer de m'exprimer un peu mieux
Il y a l'application Gest_biblio qui contient les userform et les macros et le fichier principal (GdP_GdA) qui contient les données
Dans la feuille GdA il y a en colonne E les codes barre quand il y en a
Dans la colonne F le nom des auteurs
Dans la colonne G le titre du livre
Dans la colonne H le code rangement
Je répète dans la colonne des codes barre il y a beaucoup de vides

Dans mon user je sélectionne d'abord l'emprunteur
Puis je flasche le code barre du livre
Le code s'inscrit dans la TbX_Douchette
Si le code est bien dans la colonne E , le nom de l'auteur s'inscrit dans la CbB2 le titre dans la CbB3 et le code rangement dans la CbB4
Il ne me reste plus qu'à valider et l'emprunt s'enregistre dans la feuille GdP
Ça marche parfaitement

Par contre si le code n'est pas enregistré dans la colonne E, il faut que le code barre s'inscrive bien dans la TbX_Douchette, mais que la procédure s'arrête pour qu'on puisse sélectionner l'auteur,le titre, le code rangement dans les listes déroulantes de combobox et après, si on clique sur enregistrer le code barre celui ci s'inscrive dans la colonne E de GdA sur la ligne du titre qui est dans la CbB3

la procédure marche si on tape les chiffres du code dans la TbX_Douchette
ou si on procède pas copier coller

par contre quand, après avoir sélectionné l'emprunteur et qu'on flasche un code inexistant dans la colonne E ça plante et surligne la ligne "lig = .Range ,......" De la procédure CmbCode qui est le bouton de commande pour enregistrer le code

je ne sais pas mieux expliquer

Merci de ton soutien
 

TooFatBoy

XLDnaute Barbatruc
par contre quand, après avoir sélectionné l'emprunteur et qu'on flasche un code inexistant dans la colonne E ça plante et surligne la ligne "lig = .Range ,......" De la procédure CmbCode qui est le bouton de commande pour enregistrer le code
Merci pour cette précision.

Donc ça plante bien à l'endroit que j'avais repéré lors de ton problème précédent.
Je suppose donc que la source du problème est aussi la même : CBb3 vide au moment de la recherche.
Est-ce le cas ?
 

TooFatBoy

XLDnaute Barbatruc
Depuis le début (et même avant) je te dis que le fait que CBb3 soit vide va te poser un problème, et quand je te demande si CBb3 est vide tu me réponds "Oui bien sûr"... 😅 🙃

Ca ne peut pas être pour une "caméra cachée", donc serait-ce pour une "webcam hackée" ??? 🤔
 
Dernière édition:

Chatron

XLDnaute Junior
voici
VB:
Sheets("GdL").Select
        For Each D In Sheets("GdL").Range("B10:B" & Range("B65536").End(xlUp).Row)
 If D.Value = Me.ComboBox1.Value Then Me.TextBox2 = (D.Offset(0, 6).Value)
    If "Payé" '..........
    If "Du"'..........'
    Next
    CbB2 = "": CBb3 = "": CheckBox1 = False  'CBb3.Clear

Windows("GdP_GdA.xls").Activate
 Application.ScreenUpdating = False
CbB2.Value = "": CBb3.Clear
Sheets("GdA").Select

   DerCell = Range("A8").End(xlDown).Address
CbB2.RowSource = "A9:" & DerCell
    CbB2.RowSource = "A9:A65536"
TbX_Douchette.SetFocus
End Sub
J'ai essayé de modifier ("CBb3.Clear") par(" CBb3 = "")
j'ai essayé aussi de neutraliser le remplissage de la CbB2, mais ça ne change rien
J'ai essayé de remplacer toutes les cellules vides dans la colonne code de GdA par des 1, ça ne change rien
J'y perd mon latin ou plutôt mon anglais que je n'ai pas et avec lequel je suis fâché (sans racisme!)
 

Chatron

XLDnaute Junior
Bonjour tooFatBoy
Bonjour ChTi160
Tout ça ne résout pas mon problème
Je ne comprends pas qu'on ne puisse pas sortir de la procédure si le code n'est pas trouvé du genre
  • "si le code est trouvé dans la colonne on remplis les CbB2, CBb3, CbB4"
  • "Si le code n'est pas trouvé on arrête la procédure"

Je ne comprends pas non plus pourquoi quand on flache un code ça active la commandBox Enregistrer (se met en surbrillance) ça ne se produit pas avec les autres commandBox (Valider, Annuler, Nouveau lecteur, etc..)

SVP, ne m'abandonnez pas

Merci
 

Discussions similaires

Statistiques des forums

Discussions
314 564
Messages
2 110 747
Membres
110 910
dernier inscrit
Sergio 6531