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 :

Remplissage automatique de textbox [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Par défaut Remplissage automatique de textbox
    Bonjour à tous,

    J'espère que vous pourrez encore m'aider sur mon nouveau problème. Je m'explique : j'ai une base de données excel d'une part. D'autre part j'ai un userform qui permet à l'utilisateur de faire une recherche dans cette bdd. Je veux faire en sorte que lorsque la fonction trouve une correspondance entre le nom saisi par l'utilisateur et la bdd ça affiche un userform pré-rempli avec les données récupérées dans la bdd.

    J'ai donc créé une variable public dans le module de code du userform formulaire (on va l'appeler ligne). Lorsque la fonction recherche a trouvé le nom rentré par l'utilisateur, elle actualise la valeur de ligne avec le numéro de la ligne sur laquelle se trouve le résultat de la recherche.
    Après quoi j'ai dit dans mon UserForm_Initialize() que les textbox doivent prendre la valeur des cellules de cette ligne.
    Mais c'est là que ça plante : j'ai sans cesse droit à "Erreur définie par l'application ou par l'objet" et ça me surligne UserForm1.Show. Je comprends pas

    Voilà le code pour plus de clarté :
    Variable public:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public ligne As Integer
    La fonction recherche :
    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
    Sub ok_Click()
    If Len(TextBox_recherche.Text) < 3 Then
        MsgBox "Veuillez saisir au moins 3 lettres"
    Else
        With Worksheets(2).Columns("A:A")
            Set c = .Find(TextBox_recherche.Text, Range("A1"), xlFormulas, xlPart, xlByRows, xlNext)
        If c Is Nothing Then
            MsgBox "Introuvable"
        Else
            ligne = c.Row
            Me.Hide
            UserForm1.Show
            Unload Rechercher
        End If
        End With
    End If
    End Sub
    Et l'initialisation (c'est ça qui plante) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub UserForm_Initialize()
        TextBox_NOM.Text = Worksheets(2).Cells(ligne, 1).Value
        TextBox_Prenom.Text = Worksheets(2).Cells(ligne, 2).Value
    End Sub
    Voilà, j'espère vraiment que vous pourrez m'aider

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je n'ai pas encore regardé ton code mais déjà je changerais Public ligne As Integer et Public ligne As Long. Un entier ne peut contenir de valeur supérieur à 32768 or une feuille Excel à plus de lignes

    Dans ta procédure événementielle d'initialisation du UserForm que vaut la valeur de la variable ligne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub UserForm_Initialize()
        TextBox_NOM.Text = Worksheets(2).Cells(ligne, 1).Value
        TextBox_Prenom.Text = Worksheets(2).Cells(ligne, 2).Value
    End Sub
    Si elle vaut 0, il ne faut pas chercher plus loin.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Par défaut
    Justement elle est sensée être initialisée dans la procédure ok_Click() et doit correspondre au numéro de ligne du nom recherché.

    Etant donné que j'utilise Userform1.show après avoir affecté une valeur à ligne il ne devrait pas y avoir de problème si ?

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je suppose que ta procédure ok_Click() fait partie du UserForm.
    Si c'est le cas UserForm_Initialize est le premier événement du UserForm lorsque on l'invoque. Ce n'est donc pas dans cette procédure qu'il faut placer ces lignes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TextBox_NOM.Text = Worksheets(2).Cells(ligne, 1).Value
    TextBox_Prenom.Text = Worksheets(2).Cells(ligne, 2).Value
    mais bien dans la même procédure ok_Click ou dans une procédure indépendante appelée depuis ok_Click.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Par défaut
    ok_click fait partie d'un autre userform, appelons-le UserForm2, appelé avant UserForm1 dont j'ai posté la fonction Initialize.
    C'est pour ça que je ne comprends pas

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La seule manière de savoir d'où vient le problème, c'est de déboguer ton code.
    Tu installes un point d'arrêt (touche F9 ou clic dans la partie grise à gauche du code) et à partir de là, utilise le "pas à pas" avec la touche F8.
    Tu peux aussi utiliser les espions pour connaître la valeur des variables ou passer avec la souris au dessus de la variable.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. [XL-2013] Userform - Textbox - remplissage automatique
    Par mperou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/03/2015, 10h52
  2. [XL-MAC 2011] Problème remplissage automatique textbox
    Par Fremal11 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/03/2014, 12h31
  3. Réponses: 4
    Dernier message: 23/06/2010, 10h17
  4. [XL-2003] Remplissage automatique après saisie TextBox
    Par Artoche dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/05/2010, 16h19
  5. [C#] Remplissage automatique de 2 TextBox
    Par dacamp dans le forum ASP.NET
    Réponses: 8
    Dernier message: 29/09/2004, 17h50

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