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 :

Création d'un userforms pour enregistrement dans une BDD [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 16
    Points : 16
    Points
    16
    Par défaut Création d'un userforms pour enregistrement dans une BDD
    Bonjour à tous,

    Je commence juste à utiliser le VBA.
    Je dois créer un userforms pour facilité l'enregistrement de nouveaux produits dans une BDD.
    J'ai designé le userforms, rédigé la caption des checkbox et prévu la liste déroulante des combolist. Et j'ai beaucoup de Textbox.
    A présent j'aimerai savoir comment (à partir d'un bouton "enregistrer") je peux copier ces informations dans la première ligne vide de la BDD.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Déterminer la dernière ligne du tableau
    DernLign = Worksheets("BDD").Range("B" & Rows.Count).End(xlUp).Rows
     
    'Copier le nom du produit dans la première cellule vide de la colonne B
    Worksheets("BDD").Range("B" & DernLign + 1) = Textbox1_number.Value
    Merci d'avance à ceux qui sauront me donner un coup de main

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    C'est presque ça. Attention ce n'est pas .Rows mais .Row (sans s). Par ailleurs il ne faut pas utiliser _Change mais _AfterUpdate. Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub TextBox1_AfterUpdate()
        Dim Lign As Long
        Lign = Worksheets("BDD").Range("A" & Rows.Count).End(xlUp).Row + 1
        Worksheets("BDD").Range("A" & Lign) = TextBox1.Value
    End Sub
    Maintenant je crains que ce ne soit pas une bonne idée d'enregistrer les changements un à un. Il est sans doute préférable d'avoir un bouton qui enregistre toutes les valeurs au même moment pour faire une nouvelle ligne de données. Quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub btnEnregistrer_Click()
        Dim Lign As Long
        'Cells(Rows.Count, 1).End(xlup).Row
        Lign = Worksheets("BDD").Range("A" & Rows.Count).End(xlUp).Row + 1
        Worksheets("BDD").Range("A" & Lign).Value = TextBox1.Value
        Worksheets("BDD").Range("B" & Lign).Value = TextBox2.Value
    End Sub
    Cordialement.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Merci Eric Dgn,

    C'est exactement ce que je voulais faire. Ça fonctionne parfaitement pour les textbox. Mais le principe est-il le même pour les checkbox et les combolist ?
    Sachant que pour chaque checkbox j'ai rédigé la caption tel que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CheckBox1_Change()
     
    Select Case CheckBox1.Value
        Case True: CheckBox1.Caption = "X"
        Case False: CheckBox1.Caption = ""
    End Select
     
    End Sub
    Est-ce qu'il faut que j'écrive :

    Worksheets("BDD").Range("C" & Lign).Value = TextBox1.Value
    Worksheets("BDD").Range("D" & Lign).Value = TextBox2.Value
    Worksheets("BDD").Range("E" & Lign).Value = Checkbox1.Caption

    Merci de vos réponses.

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    tu peux t'inspirer de ma contribution sur le sujet....

    Tu gagnerais, au niveau de ton code VBA, à utiliser les tableaux structurés, qui faciliteront et généraliseront l'écriture de ton code VBA (comme je le montre d'ailleurs dans ladite contribution )
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Quand on clique sur un case à cocher (CheckBox) sa valeur change.
    Si la case apparaît cochée, elle vaut -1 (=Vrai, =Oui),
    quand elle apparaît décochée elle vaut 0 (=Faux, =Non)
    et si elle apparaît noire, c'est qu'elle n'a pas encore de valeur.
    Il n'y a aucun code à prévoir pour cela.

    Pour récupérer la valeur:
    Worksheets("BDD").Range("E" & Lign).Value = Checkbox1.Value .

    Cordialement.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Bonjour à tous,

    Merci pour vos conseils et vos ligne VBA.
    Plus que quelques problèmes à résoudre et j'aurais enfin la BDD souhaitée .

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/02/2016, 12h43
  2. Réponses: 1
    Dernier message: 11/09/2013, 10h44
  3. Userform pour information dans une TextBox
    Par Souriane dans le forum VBA Word
    Réponses: 2
    Dernier message: 03/12/2009, 17h40
  4. Réponses: 8
    Dernier message: 13/05/2008, 22h15
  5. Incrémenter une lettre pour enregistrement dans une bdd
    Par baggie dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/03/2008, 16h26

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