Autres Enregistrer un code barre dans la cellule avant le titre qui est déja enregistré

Chatron

XLDnaute Junior
Bonsoir à tous
Je reviens vers vous toujours pour l'amélioration de mon application de gestion de bibliothèque
Grace à votre aide, nous pouvons désormais utiliser un lecteur de code-barres pour gérer les prêts, mais il y a un soucis auquel je n'avais pas prêté attention

en effet ça a été assez fastidieux de relever les code ISBN de plus de 5000 livres et certains sont passés au travers
On peut toujours enregistrer le prêt de ces livres en faisant la recherche par le nom de l'auteur, mais, quand le cas se présente, on aimerait pouvoir y ajouter le code sans avoir à aller dans le fichier des livres (GdA)

J'ai donc ajouté une routine avec un bouton de commande (CmbCode) mais mon code ne fonctionne pas
voici mon code
VB:
Private Sub CmbCode_Click()
Dim lig As Integer
Dim Tit As Variant
Dim Aut As Integer
        With Sheets("GdA")
            For Each Tit In Sheets("GdA").Range("G9:G" & Range("G65536").End(xlUp).Row)
            lig = lig + 1
            If Tit.Value = CBb3 Then Exit For  ' And Aut.Value = CB2
            Next
                    On Error Resume Next
                    Range(Cells(lig, 5)) = TbX_Douchette.Value
        End With
End Sub
Je joins mes fichier : c'est UserForm1 qui est concerné
je précise que notre ordinateur fonctionne sous XP et Office 97-2000
Merci pour votre aide
 

Pièces jointes

  • GdP_GdA1.xls
    474.5 KB · Affichages: 3
  • Gest_biblio_24.zip
    214.1 KB · Affichages: 6
C

Compte Supprimé 979

Guest
Bonjour Chatron,

Petite question : le fichier base se trouve toujours avec le même dossier que le fichier Gestion ou pas !?
Sinon voici le fichier Gest_biblio quelque peu modifié

Vous n'utilisez pas de variable objet, ce que j'ai modifié, mais pas partout à vous de vous inspirer ou j'ai indiqué "Modifié par BrunoM45"

Exemple : Plutôt que d'activer le fichier Base, j'utilise l'objet "WbkBase" qui définit le classeur en question

J'espère que ce sera assez clair pour vous

A+
 

Pièces jointes

  • Gest_biblio_24.xls
    423.5 KB · Affichages: 6
Dernière modification par un modérateur:

Chatron

XLDnaute Junior
Bonjour Chatron,

Petite question : le fichier base se trouve toujours avec le même dossier que le fichier Gestion ou pas !?
Sinon voici le fichier Gest_biblio quelque peu modifié

Vous n'utilisez pas de variable objet, ce que j'ai modifié, mais pas partout à vous de vous inspirer ou j'ai indiqué "Modifié par BrunoM45"

Exemple : Plutôt que d'activer le fichier Base, j'utilise l'objet "WbkBase" qui définit le classeur en question

J'espère que ce sera assez clair pour vous

A+
 

Chatron

XLDnaute Junior
Bonjour Bruno
Merci pour ton intervention, mais malheureusement ça ne résout pas du tout mon problème : le code ne s'enregistre pas dans la cellule correspondant au titre ( colonne E de la feuille GdA ), j'ignore s'il s'enregistre quelque part, je n'ai pas trouvé
D'autre part sachant qu'il y a 4 ou 5 userform avec, certains beaucoup plus d'options et de routines que celui que je veux modifier et qu'il y a d'autre part une quinzaine de macros ou modules, tout modifier représente pour moi un travail fastidieux (et à mon age, avec mon épouse handicapée et malade dont j'ai la charge!!!!) dont je ne vois pas trop l'intérêt, étant donné que tout fonctionne très bien
j'ai même l'impression que cette méthode ralenti le fonctionnement

J'aimerai pouvoir ajouter cette option pour enregistrer le code barre dans le fichier GdA sans être obligé de tout modifier car malgré tout ce que j'ai appris sur ce forum avec l'aide de tous ses intervenants sympa qui ne ménagent pas leur temps je suis très peu compétent en VBA

Pour répondre à ta question, sur l'ordi de la bibliothèque les 2 fichiers (application et base) sont bien dans le même dossier
Je m'excuse concernant le fichier base : celui simplifié que j'ai envoyé manque de feuilles, je renvoi la version avec toutes les feuilles

Merci
 

Pièces jointes

  • GdP_GdA.xls
    477.5 KB · Affichages: 4
C

Compte Supprimé 979

Guest
Bonjour,

Remplacer des ".select" par des appels à l'objet directement ne ralenti en lien l'exécution, bien au contraire

Je suis désolé, mais je ne pourrais pas vous aider plus, surtout s'il vous manque du temps

Bon courage
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

J'ai donc ajouté une routine avec un bouton de commande (CmbCode) mais mon code ne fonctionne pas
voici mon code
Tu peux déjà essayer de remplacer ta macro :
VB:
Private Sub CmbCode_Click()
Dim lig As Integer
Dim Tit As Variant
Dim Aut As Integer
        With Sheets("GdA")
            For Each Tit In Sheets("GdA").Range("G9:G" & Range("G65536").End(xlUp).Row)
            lig = lig + 1
            If Tit.Value = CBb3 Then Exit For  ' And Aut.Value = CB2
            Next
                    On Error Resume Next
                    Range(Cells(lig, 5)) = TbX_Douchette.Value
        End With
End Sub
par ceci :
VB:
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

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



Remarque : je pense que les Windows().Activate plus Sheets().Seclect doivent pouvoir être évités et avantageusement remplacés, par exemple, par un With Workbooks().Sheets() ... End With.

L'idéal étant probablement d'assigner chacun des deux classeurs à une variable utilisable ensuite dans tout le projet.
Par exemple :
VB:
Private Sub Workbook_Open()
'
    Application.ScreenUpdating = False

    Set wk_Gest = ThisWorkbook

'    Workbooks.Open Filename:="H:\GdP_GdA.xls"                      ' G
    Workbooks.Open Filename:="F:\Bibliothèque\essai\GdP_GdA.xls"   ' portable perso
    Set wk_BDD = ActiveWorkbook
    wk_BDD.Windows.Application.WindowState = xlMinimized

    wk_Gest.Activate
    Sheets("Saisie").Select
    Range("A1").Select

End Sub
Ensuite, tu peux utiliser wk_Gest ou wk_BDD pour adresser un classeur ou l'autre.
 
Dernière édition:
C

Compte Supprimé 979

Guest
Bonsoir,

Qu'est-ce que j'apprécie les gens comme vous... Ma proposition était la même en #2 :rolleyes:
Sauf qu'en #4
D'autre part sachant qu'il y a 4 ou 5 userform avec, certains beaucoup plus d'options et de routines que celui que je veux modifier et qu'il y a d'autre part une quinzaine de macros ou modules, tout modifier représente pour moi un travail fastidieux dont je ne vois pas trop l'intérêt, étant donné que tout fonctionne très bien
j'ai même l'impression que cette méthode ralenti le fonctionnement
Maintenant vous allez quand même perdre du temps 🤔 bavo 👏👍

Bref... lancez votre USF en mode débogage avec F8
Vous vous positionnez sur la 1ère ligne de Userform_Initialize et F8 pour faire du pas à pas

A un moment donné, le code va bloqué et vous saurez où 😜

A+
 
Dernière modification par un modérateur:

Chatron

XLDnaute Junior
Bonjour

VB:
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

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


Bonjour mes amis que je sollicite souvent
J'avais fait les essais de cette routine sans avoir de douchettes sous la main, mais en faisant un copier coller dans la textbox_Douchette et ça fonctionnait tes bien, mais quand j'ai cru pouvoir l'utiliser avec la Douchette ça Bugue
Si le titre recherché est enregistré avec le code, ça fonctionne
Mais si le titre est enregistré sans le code barre ça plante
Il semble qu'il y a conflit entre la routine
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)
               ' Else: Exit Sub
            'CbB2.SetFocus
        End If
       'TbX_Douchette.SetFocus
       
    End If
End Sub
et
VB:
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
J'ai essayé de résoudre le problème tout seul, mais après y avoir passé plusieurs heures samedi et de nouveau plusieurs aujourd'hui, je me résout à appeler au secours

Mais peut être devrai je ouvrir un autre Post
en tout cas merci pour votre aide qui ne m'a pas fait défaut jusqu'à ce jour
 

Pièces jointes

  • GEST_bibliotheque-24.zip
    215.3 KB · Affichages: 4
Dernière édition:

Statistiques des forums

Discussions
315 127
Messages
2 116 505
Membres
112 765
dernier inscrit
SIDIANW