Excel, VBA, Base de donnée
#1
Aspirant XLPages

Inscription: 07/03/2009

Messages: 35

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 31-12-2009 16h19
Bonjour à tous.

Tout d'abord Bonnes Fêtes de fin d'année à toutes et à tous !!!

Je souhaiterais créer un formulaire avec un bouton de validation qui enverrais
l'information dans une base de donnée. La base de donnée que je souhaiterais exploiter
sous forme de graphique.

En voici un exemple dans lequel je n'arrive plus à avancer.

Merci de votre aide.

Michel.G

Pièce jointe:
zip formulaire1.zip   [ Taille: 20.72 Ko - Téléchargements: 613 ]
Hors Ligne
Rapport   Haut 

Re: Excel, VBA, Base de donnée
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 03-01-2010 01h04
Bonsoir mishka, le Forum,

Tu trouveras ci-joint peut-être une façon de faire.

J'ai tout d'abord échangé tes zones de liste issues de la barre d'outils "Formulaires" contre ceux issus de la boîte à outils Contrôles Visual Basic (voir au besoin le Tuto n° 3 pour faire connaissance avec la barre d'outils VBA). C'est à mon avis le premier réflexe à avoir pour celui ou celle qui veut faire du VBA.

Pour simplifier la procédure, j'ai aussi lié ces contrôles ComboBox aux 10 premières cellules de la colonne O sur la même feuille (colonne qu'il conviendra de masquer au même titre que les colonnes I à N).

Réduit à l'essentiel, le code VBA est ensuite saisi dans le module de code de la feuille "Questionnaire" :
Option Explicit
' myDearFriend!  -  www.mdf-xlpages.com

Private Sub btnAjouter_Click()
Dim R As Range
Dim L As Long
    If Application.CountA(Range("O1:O10")) < 10 Then
        MsgBox "Tous les éléments doivent être renseignés !"
        Exit Sub
    End If
    With Sheets("BD-Réponse")
        'Numéro de la prochaine ligne libre dans la base
        L = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        'Stockage des données
        .Range(.Cells(L, 1), .Cells(L, 10)).Value = Application.Transpose(Range("O1:O10").Value)
    End With
    'RAZ du formulaire
    Range("O1:O10").ClearContents
    Beep
End Sub

Private Sub ComboBox1_Change()
    'Pour conserver le format date dans le ComboBox1
    If ComboBox1.Text <> "" Then
        ComboBox1.Value = Format(CDate(ComboBox1.Value), "dd/mm/yyyy")
    End If
End Sub

En espérant que ça puisse t'aider...

Cordialement,
Pièce jointe:
zip PourMishka.zip   [ Taille: 26.84 Ko - Téléchargements: 762 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Excel, VBA, Base de donnée
#3
Aspirant XLPages

Inscription: 07/03/2009

Messages: 35

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 08-01-2010 12h42
Bonjour.

Merci de votre réponse qui me convient parfaitement et je me mets au VBA pour pouvoir
réaliser mes futurs travaux.

A ce propos après plusieurs recherche infructueuse sur internet, je reviens vers vous
pour avoir des informations sur la possiblité d'enregistrer et de fermer le fichier excel après validation du formulaire.

Merci de votre réponse.

Michel.G
Hors Ligne
Rapport   Haut 

Re: Excel, VBA, Base de donnée
#4
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 08-01-2010 16h47
Bonjour Miskha, le Forum,

Citation :
mishka a écrit :
A ce propos après plusieurs recherche infructueuse sur internet, je reviens vers vous
pour avoir des informations sur la possiblité d'enregistrer et de fermer le fichier excel après validation du formulaire.

Merci de votre réponse.


Dans ce cas, tu peux modifier la dernière ligne de la procédure btnAjouter_Click() comme suit :
Private Sub btnAjouter_Click()
Dim R As Range
Dim L As Long
    If Application.CountA(Range("O1:O10")) < 10 Then
        MsgBox "Tous les éléments doivent être renseignés !"
        Exit Sub
    End If
    With Sheets("BD-Réponse")
        'Numéro de la prochaine ligne libre dans la base
        L = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        'Stockage des données
        .Range(.Cells(L, 1), .Cells(L, 10)).Value = Application.Transpose(Range("O1:O10").Value)
    End With
    'RAZ du formulaire
    Range("O1:O10").ClearContents
    'Ferme le classeur en l'enregistrant
    ThisWorkbook.Close True
End Sub

Si la réponse te convient, merci de mettre en pratique ce qui est indiqué au bas de ma signature...

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes