IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème Macro de recherche


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Conducteur de Travaux
    Inscrit en
    Mars 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conducteur de Travaux
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2014
    Messages : 2
    Par défaut Problème Macro de recherche
    Bonjour,

    J'ai fais en début d'année un classeur excel avec macros et userforms (pour faciliter la saisie). Ce dernier sert à verifier les entrées et sorties de matériel suivant les chef d'équipes des différents chantiers et ainsi à suivre les stock. Depuis peu je me suis lancé pour faciliter encore plus la saisie à assigner un code barre à chaque article.
    Dans un premier temps j'ai donc fait un nouveau classeur en rajoutant ces codes barres et j'ai fait un userform avec une textbox et une combobox auquel j'ai assigné le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub TextBox1_Change()
     
    Dim i, x As Long
     
     
    x = Cells(2, 3).End(xlDown).Row
     
    For i = 2 To x
     
     
         If Cells(i, 3).Value = UserForm2.TextBox1.Value Then UserForm2.ComboBox1 = Cells(i, 2).Value
     
     
         Next i
     
    End Sub
    ainsi en rentrant le code barre dans la textbox, la combobox me ressort la désignation de l'article ça marche nickel (voir pièce jointe "projet_code-barre.xlsm" dans l'archive)

    Je m'attelle donc à la tâche de transformer mon userform initial de gestion des stocks afin de prendre en compte les codes barres. Je rajoute donc des textbox devant les combobox déjà présentent pour rechercher les articles, j'applique le code ci dessus en modifiant les dénomination afin que ça colle avec mon projet initial etc etc... (voir pièce jointe "Sortir_Rentrer du matériel.xlsm" dans l'archive)

    Et problème, rien ne ce passe.

    Je viens de passer ma matinée là dessus et je deviens fou aidez moi SVP!!

    PS: je ne suis pas un pro de VBA j'ai appris un peu sur le tas avec quelques bases d'un langage improbable (Python) appris à la fac quelques années plus tôt vous risquez surement de trouver mon code peu esthétique et je ne parle même pas du classeur en lui même, soyez cléments!

    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Pabzaille, bonjour le forum,

    Pour le fichier Projert_code-barre.xlsm, je pense que le code sur le changement de la textbox ralentit l'exécution de la macro. En effet à chaque nouveau caractère éditée, la boucle se fait sur une centaine de lignes. Comme pour taper le code en entier il te faut 13 caractères... Ça fait boucler 13 fois sur plus de 100 lignes. Je te propose donc d'effectuer un test à la sortie de la textbox en supprimant la procédure Change et en le remplaçant par la procédure Exit ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'à la sortie de la TextBox1
    Dim R As Range 'décalre la variable R (Recherche)
     
    'définit la recherche R (recherche le code barre dans la colonne 3 (=C) de l'onglet "Feuil1")
    Set R = Sheets("Feuil1").Columns(3).Find(Me.TextBox1.Value, , xlFormulas, xlWhole)
    If Not R Is Nothing Then 'condition : si il existe au moins une occurrence trouvée
        Me.ComboBox1.Value = R.Offset(0, -1).Value 'récupère la désignation dans la ComboBox1
    Else 'sinon (condition 1)
        MsgBox "code erroné ! Recommencez." 'message
        Cancel = True 'empêche la sortie de la TextBox1
        With Me.TextBox1 'prend en compte la TextBox1
            'sélectionne le texte
            .SelStart = 0 'début de la sélection
            .SelLength = Len(.Value) 'longueur de la sélection
        End With 'fin de la prise en compote de la TextBox1
    End If
    End Sub
    Pour le fichier Sortir_Rentrer du matériel.xlsm, tu as omis de mettre le classeur liste materiel à jour.xlsx ce qui faisait planter l'ouverture de l'Userform1...
    Sinon, même procédé. Mais il faudrait copier le code Exit de la TextBox11 pour les textboxes 12 à 18...
    Je te propose donc une autre solution qui consiste à double-cliquer dans la ListBox1 pour rappatrier les données de la ligne double-cliquée dans la série de trois fois huit contrôles en dessus.
    Ton fichier modifié, avec le code commenté, en pièce jointe. Désolé j'ai du modifié la taille de l'UserForm1 car je ne voyais pas les contrôles en dessous...
    Fichiers attachés Fichiers attachés

  3. #3
    Candidat au Club
    Homme Profil pro
    Conducteur de Travaux
    Inscrit en
    Mars 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conducteur de Travaux
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2014
    Messages : 2
    Par défaut Merci
    Merci Thautheme, ça fonctionne nickel, je vais prendre les deux versions, celle du double clic et je réécrirais le code pour les textbox 12 à 18 car le code correspond à un code-barre donc inséré directement par lecture de ce dernier avec douchette. Merci encore pour la rapidité de ta réponse et la qualité de ton travail.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Problème macro recherche
    Par nickosept dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/03/2015, 06h56
  2. [XL-2002] problème macro excel pour rechercher valeur dans un intervalle
    Par lanomade04 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/05/2011, 16h59
  3. Réponses: 10
    Dernier message: 11/05/2008, 18h49
  4. Problème moteur de recherche htdig
    Par mr_neness dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 09/01/2006, 11h44
  5. Problème sur la recherche fulltext en v4 !
    Par poppa dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/05/2004, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo