Intégrer les informations d'un forulaire dans mon fichier excel
Résolu
ElHamanecer
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
ElHamanecer -
ElHamanecer -
Bonjour,
Je me lance dans la création d'un petit logiciel pour mon entreprise.
Le concept :
Créer une page d'accueil avec 4 boutons :
- Nouveau Client ( Qui me dirige vers un formulaire)
- Rendez-vous
- Planning
- Facturation
Aujourd'hui, j'attaque la première parti, le formulaire (Nouveau Client). Celui ci est déjà terminé. Cependant, je rencontre un problème lors de la validation de l'inscription dans la base de donné, je n'arrive pas, après validation, à envoyer les informations inscris sur le formulaire dans la base de donné (Cliens) de mon fichier Excel.
FICHIER CLIENT

n
CODE
Je me lance dans la création d'un petit logiciel pour mon entreprise.
Le concept :
Créer une page d'accueil avec 4 boutons :
- Nouveau Client ( Qui me dirige vers un formulaire)
- Rendez-vous
- Planning
- Facturation
Aujourd'hui, j'attaque la première parti, le formulaire (Nouveau Client). Celui ci est déjà terminé. Cependant, je rencontre un problème lors de la validation de l'inscription dans la base de donné, je n'arrive pas, après validation, à envoyer les informations inscris sur le formulaire dans la base de donné (Cliens) de mon fichier Excel.
FICHIER CLIENT

CODE
'Pour Le Formulaire
Dim Ws As Worksheet
'Civilité
'***********************************************************************************************
Private Sub userform_initialize()
ComboBox1.ColumnCount = 1
ComboBox1.List() = Array("", "M.", "Mme.", "Mlle.")
Set Ws = Sheets("Clients") 'Correspond au nom de l'onglet excel
End Sub
'***********************************************************************************************
'Pour le Bouton Nouveau client
Private Sub CommandButton1_Click()
Dim L As Integer
If MsgBox("Confirmez-vous l'inscription de ce nouveau client ?", vbYesNo, "Demande de confimation d'ajout") = vbYes Then
L = Sheets("Clients").Range("A" & Rows.Count).End(xlUp).Row + 1 'Pour enregistrer les informations clients sur la dernière ligne
Range("A" & L).Value = ComboBox1
Range("B" & L).Value = txtnom
Range("C" & L).Value = txtprenom
Range("D" & L).Value = txtrace
Range("E" & L).Value = txtcp
Range("F" & L).Value = txtmail
Dim J As Long
Dim I As Integer
ComboBox1.Clear
Set Ws = Sheets("Clients")
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
Else
'Rien
End If
End Sub
'Pour Quitter
Private Sub CommandButton2_Click()
Unload Me
End Sub
A voir également:
- Intégrer les informations d'un forulaire dans mon fichier excel
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
1 réponse
Bonjour ElHamanecer, bonjour le forum,
Le problème avec les Tableaux (ListObject) c'est que quand tu veux écrire sur la première ligne vide et que tu pars de la fin ça écrit dans la première ligne vide après le tableau. Il te faut changer la manière d'obtenir la première ligne vide du tableau. D'abord, vérifie s'il n'y a pas de données à la fin de ton tableau. puis remplace le code :
par :
Il serait aussi bien que tu rajoutes Ws. devant pour éviter que les données ne soient renvoyées dans un autre onglet :
Dans le code du Click sur le CommandButton1, supprime la ligne :
Tu as déjà définis la variable Ws à l'initialisation de l'UserForm. Ce doublon est inutile d'autant plus que tu as déclarée cette variable au niveau module, en première ligne. Donc elle garde sa portée tant que l'UserForm est ouvert...
Le problème avec les Tableaux (ListObject) c'est que quand tu veux écrire sur la première ligne vide et que tu pars de la fin ça écrit dans la première ligne vide après le tableau. Il te faut changer la manière d'obtenir la première ligne vide du tableau. D'abord, vérifie s'il n'y a pas de données à la fin de ton tableau. puis remplace le code :
L = Sheets("Clients").Range("A" & Rows.Count).End(xlUp).Row + 1
par :
L = IIf(Ws.Range("A2").Value = "", 2, Ws.Range("A1").End(xlDown).Row + 1)
Il serait aussi bien que tu rajoutes Ws. devant pour éviter que les données ne soient renvoyées dans un autre onglet :
ws.Range("A" & L).Value = ComboBox1 ws.Range("B" & L).Value = txtnom ws.Range("C" & L).Value = txtprenom ws.Range("D" & L).Value = txtrace ws.Range("E" & L).Value = txtcp ws.Range("F" & L).Value = txtmail
Dans le code du Click sur le CommandButton1, supprime la ligne :
Set Ws = Sheets("Clients")
Tu as déjà définis la variable Ws à l'initialisation de l'UserForm. Ce doublon est inutile d'autant plus que tu as déclarée cette variable au niveau module, en première ligne. Donc elle garde sa portée tant que l'UserForm est ouvert...
ça fonctionne très bien avec tes modifications !
Merci vraiment beaucoup je vais pouvoir avancer sur mon projet !
Je ne m'y connais absolument pas dans ce domaine. Je fais ce logiciel pour me facilité la vie avec mes rendez-vous et mes rentré d'argent.
Merci vraiment !