Macro VBA avec formulaire

Bonjour,

J’aimerais avoir un macro qui me permettra d’ouvrir un formulaire de contact vba à l’ouverture d’un fichier excel. L’utilisateur verra directement un formulaire vba à l’ouverture du fichier et une fois le formulaire renseigné et qu’il clique sur le bouton enregistrer automatiquement j’aurais les données sous forme de tableau dans un onglet masqué.

Merci beaucoup

Bonsoir

Un exemple de ton fichier serait le bienvenu pour résoudre ton problème

Crdlt

Bonjour l,

Je n’ai pas créer de fichier mais l’idée c’est d’avoir un formulaire de contact (Nom, Prenom,Numero et bouton enregistrer) à l’ouverture du fichier excel et de récupérer les données dans une autre feuille sous forme de tableau.

Merci

Sur le forum on est là pour t'aider à résoudre un problème ,mais pas là pour faire le boulot.

Tu bâtis ton formulaire ,ta base de données et après tu reviens pour avoir de l'aide si besoin

Bonsoir,

ci joint une proposition :

34contacts.xlsm (27.89 Ko)

@ bientôt

LouReeD

D'accord je ne l'avais pas compris.

Je souhaite juste un formulaire basique, on renseigne les champs et on clic sur AJOUTER et ca ajoute dans mon tableau de ma feuille "CLIENTS"

Le formulaire doit s'afficher a l'ouverture du fichier Excel. L'utilisateur ne doit cliquer sur aucun bouton pour ouvrir le formulaire puis une fois cliquer sur ajouter le formulaire doit être réinitialiser.

Merci

Voir fichier sur le message au dessus du votre...
Au vu de votre fichier vous devriez pouvoir adapté la solution proposée

@ bientôt

LouReeD

Mais est- il possible d'ouvrir le formulaire sans pour autant cliquer sur le bouton renseigner?

le USF s'ouvre à l'ouverture du fichier, s'il est fermé entre temps, le bouton permet de l'afficher, vous avez du accepter les macros, du coup le fichier était déjà ouvert... non ?

@ bientôt

LouReeD

Effectivement vous avez raison.

Merci beaucoup vous avez résolu mon problème.

Merci pour votre retour et remerciements !

@ bientôt

LouReeD

Je souhaite ajouter un dernier champ de texte qui doit afficher 'OUI' ou 'NON' en fonction du nombre saisie dans le formulaire.

Si le nombre est inferieur a 50 le champs affiche 'OUI' si non 'NON'.

J'avoue que je suis nul en VBA

Bonsoir,

j'avoue ne pas avoir compris la demande : s'il y a 50 entrée dans le tableau contacts alors on affiche non, sinon oui ?
et si NON alors on interdit l'ajout de donnée ?

@ bientôt

LouReeD

Bonjour,

Je vous partage mon fichier.

L'idée est de faire une division sur le montant total et la valeur 1 et d'afficher un message box si la valeur trouvée est supérieur a 35000.

J'ai déjà réussi a faire le calcul mais je n'arrive pas a afficher le Msgbox.

Merci pour votre aide

9formulaire.xlsm (44.80 Ko)

Bonsoir,

je ne sais si j'ai tout compris :

13formulaire.xlsm (27.53 Ko)

S'il y a une erreur d'incompatibilité de type il vous faudra alors remplacer le "." par une "," pour la saisie des valeurs des TextBox 2, 3, 4 et 5.

@ bientôt

LouReeD

Merci beaucoup vous m’avez beaucoup aidé.
j’ai eu le résultat que j’attendais

Bonjour,

Merci de votre retour et vos remerciements !

@ bientôt

LouReeD

Bonjour

Je me permet d'apporter une légère contribution.

Pour faire plus professionnel, il est possible de cacher Excel

Private Sub Workbook_Open()
    ' à l'ouverture du fichier on lance le USF
    Application.Visible = False
    Formulaire.Show
End Sub

Et de le réafficher à la fin

Private Sub CommandButton1_Click()
    If TextBox5.Value <> "" And TextBox2.Value <> "" Then
        TextBox6.Value = Int(CDbl(TextBox5.Value) / CDbl(TextBox2.Value))
        If CDbl(TextBox6.Value) >= 35000 Then MsgBox "Declaration GEMS": Exit Sub
    End If
    ' on temporise afin d'afficher la valeur dans la textebox6
    Application.Wait (Now + TimeValue("0:00:01"))
    ' on dimensionne une variable Tableau structuré
    Dim MonTab As ListObject
    ' on dimensionne une variable Ligne de tableau structuré
    Dim lRow As ListRow
    ' on attribue à la variable tableau le premier tableau de la feuille Formulaire
    Set MonTab = Sheets("BDD").ListObjects(1)
    ' avec ce tableau
    With MonTab
        ' on attribue à la variable ligne, la ligne "nouvelle ligne" que l'on crée
        Set lRow = .ListRows.Add()
        ' avec cette ligne
        With lRow
            ' on crée une boucle de 1 à 37 pour remplir les 3 colonnes avec les textbox adéquate
            For I = 1 To 6
                .Range.Cells(I) = Controls("TextBox" & I).Value
            Next I
        ' on a fini de jouer avec la ligne
        End With
    ' on a fini de jouer avec le tableau
    End With
    ' une fois copiées, les données sont effacées
    For I = 1 To 6
        Controls("TextBox" & I).Value = ""
    Next

    Application.Visible = True

End Sub

Bonne journée

Bonjour,

merci pour cette intervention !

Je me suis amusé à mettre cette instruction : Application.Visible = False, dans certain projet d'application, mais je crois que ce n'est pas forcément judicieux... En cas de problème on a plus accès à la fenêtre, c'est un peu comme quand j'utilise l'instruction CursorShow = false de l'API windows, en cas de problème c'est un peu gênant.

Mieux vaut minimiser la fenêtre comme cela elle reste accessible : Application.WindowState = xlMinimized (me semble-t-il)

@ bientôt

LouReeD

Rebonjour

Cette astuce c'est juste pour cacher Excel, et ainsi que votre application ait un style d'application professionnelle.

Il est possible d'éviter le désagrément que vous avez mentionné, en procédant à une bonne gestion des erreurs.

Enfin, vous avez la possibilité moyennant un mot de passe, d'afficher de nouveau Excel pour intervenir dessus.

Quant à moi, j'ai remarqué un engouement certain, chez mes clients du fait de ne pas avoir Excel en fond.

Cordialement

Rechercher des sujets similaires à "macro vba formulaire"