Finalisation d'un Userform
Bonjour les EXCEL-LENTS,
J'ai réussi à créer mon premier projet VBA grâce aux membres de ce formidable forum, et je vous en serais toujours reconnaissant.
Bon maintenant que mon fichier (Base de données Excel) est entièrement exploitable par le Userform, j'ose encore sollicité votre savoir faire s'il vous plait :
1 - le Boutton "Annuler la saisie" est sensé effacer toute la saisie sur le Userform, Hors que quand je clique dessus, toute la saisie est effacé sauf (Combobox2 - Combobox3 - Combobox4) à quoi ça pourrait être dû ?
2 - sur mon userform, je peux chercher un client via sa C.I.N (Combobox5 sur "G") , Je veux pouvoir aussi chercher par (CIN Co-empreinteur Colonne "AE" ) - N° de bien (Combobox2 "C") ou encore N° Titre foncier (Combobox3 "D").
3 - et si c'est possible, j'ai deux colonnes (Mois "U") et (Année "V") qui sont attaché respectivement aux ComboBox12 et ComboBox13 (je sais même pas si c'est nécessaire d'avoir ces deux Combobox), mais ce que je veux en effet, c'est qu'en tapant Date de présentation à la banque sur le Userform, le Mois de cette date doit être renseigner automatiquement sur la colonne Mois "U" et également l'année sur la colonne "V" dans la même ligne de saisie.
- Finalement je veux que la saisie sur cette base de données ne soi possible qu'en passant par le Formulaire, donc pas d’accès directe sur les cellules du tableau.
merci à tout ceux pour qui interviennent à notre secours. et qui prennent le temps de vider le verre d'eau dans lequel on se noie.
Merci pour les différentes aides, tutoriels etc...
NB : Mon fichier dépasse la taille autorisé pour l'upload sur le forum, prière de telecharger le fichier par ici
Bonjour Simo025,
Bô cadeau de Noël, peux-tu nous communiquer ton mot de passe pour accéder VBAProject ?
Pour ma par difficile de répondre si je n'ai pas cet accès.
En ce qui concerne l'effacement des données dans les combobox, ajoute ceci au programme de ton bouton
ComboBox2.Clear
ComboBox3.Clear
ComboBox4.Clear
A bientôt
Bonjour,
Merci et1000lio, c'est super maintenant c'est Ok pour l'annulation de la saisie, Bravo
excusez moi si j'ai oublier d'enlever le Mot de passe du projet VBA avant d'uploader le fichier, le mot de passe est : la3fou
mes sincères remerciements.
à plus tard.
Simo025
Allez on avance encore, voici ce que j'ai modifié :
1) Ouverture automatique du formulaire se fait à l'ouverture du fichier. Pas de possibilité d'accès aux feuilles. Code dans ThisWorkBook
Pour info VbModeless permet l'accès aux feuille. Ici exclu du programme.
Private Sub Workbook_Open()
'Affichage automatique de l'userform à l'ouverture du fichier.
UserForm1.Show 'vbModeless
End Sub
2) Changement de programme pour le bouton "Quitter". Si l'on appuie sur celui-ci, il enregistre le fichier et le ferme.
Pour le code il y a peut-être mieux :
'pour le boutton quitter
Private Sub CommandButton3_Click()
Unload Me
Workbooks("suivi Prêts Immobiliers.xls").Save
Workbooks("suivi Prêts Immobiliers.xls").Close 1 'Ferme le classeur mais ne l'enregistre pas
End Sub
3) Les recherches peuvent aussi se faire par les combobox suivantes
N° de bien (Combobox2 "C") ou encore N° Titre foncier (Combobox3 "D").
4) La recherche par (CIN Co-empreinteur Colonne "AE" ), je ne l'ai pas développé pour l'instant.
5) Pour les dates cela peut se faire.... je reviens vers toi dès que j'ai trouvé 5 minutes....
@+
Complément pour le code du formulaire :
1) Initialize
'Pour le formulaire
Private Sub UserForm_Initialize()
Dim J As Long
Dim K As Long
Dim L As Long
Dim I As Integer
ComboBox6.ColumnCount = 1 'Pour la liste déroulante Mode de payement
ComboBox6.List() = Array("", "Comptant", "Crédit")
ComboBox7.ColumnCount = 1 'Pour la liste déroulante Qualification
ComboBox7.List() = Array("", "à relancer", "Injoignable", "Désistement/Transfert", "Traitement Hors Cafpi", "Faux Numero", "RDV/Constitution")
ComboBox8.ColumnCount = 1 'Pour la liste déroulante Type de crédit
ComboBox8.List() = Array("", "Fogarim", "Fogaloge", "Fogalef", "Crédit Classique", "Fonction Publique")
ComboBox9.ColumnCount = 1 'Pour la liste déroulante Banque client
ComboBox9.List() = Array("", "ATW", "BP", "BMCE", "BMCI", "CDM", "CAM", "CIH", "BAM", "SGMB", "WAB", "sans banque")
ComboBox10.ColumnCount = 1 'Pour la liste déroulante Statut du dossier
ComboBox10.List() = Array("", "En constitution", "Dépôt banque", "Accordé", "Acceptation Client", "Ouverture de Compte", "Edition du contrat de crédit", "Signature Notaire", "Perdu")
ComboBox11.ColumnCount = 1 'Pour la liste déroulante Banque séléctionnée
ComboBox11.List() = Array("", "ATW", "BP", "BMCE", "BMCI", "CDM", "CAM", "CIH", "BAM", "SGMB", "WAB")
ComboBox12.ColumnCount = 1 'Pour la liste déroulante mois de dépot
ComboBox12.List() = Array("", "Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "septembre", "Octobre", "Novembre", "décembre")
ComboBox13.ColumnCount = 1 'Pour la liste déroulante année de dépot
ComboBox13.List() = Array("", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020")
ComboBox14.ColumnCount = 1 'Pour la liste déroulante reponse CB
ComboBox14.List() = Array("", "Ok", "Fiché")
ComboBox15.ColumnCount = 1 'Pour la liste déroulante Acceptation client
ComboBox15.List() = Array("", "Oui", "Non")
ComboBox16.ColumnCount = 1 'Pour la liste déroulante Reponse banque
ComboBox16.List() = Array("", "Accord", "Rejet")
Set Ws = Sheets("Feuil1") 'Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox5
For J = 2 To Ws.Range("G" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("G" & J)
Next J
End With
With Me.ComboBox2
For K = 2 To Ws.Range("C" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("C" & K)
Next K
End With
With Me.ComboBox3
For L = 2 To Ws.Range("D" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("D" & L)
Next L
End With
For I = 1 To 12
Me.Controls("TextBox" & I).Visible = True
Next I
End Sub
2) Combobox2
Private Sub ComboBox2_Change()
Dim Ligne As Long
Dim I As Integer
If Me.ComboBox2.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox2.ListIndex + 2
ComboBox2 = Ws.Cells(Ligne, "C")
ComboBox3 = Ws.Cells(Ligne, "D")
ComboBox4 = Ws.Cells(Ligne, "E")
ComboBox5 = Ws.Cells(Ligne, "G")
ComboBox6 = Ws.Cells(Ligne, "L")
ComboBox7 = Ws.Cells(Ligne, "M")
ComboBox8 = Ws.Cells(Ligne, "N")
ComboBox9 = Ws.Cells(Ligne, "P")
ComboBox10 = Ws.Cells(Ligne, "Q")
ComboBox11 = Ws.Cells(Ligne, "S")
ComboBox12 = Ws.Cells(Ligne, "U")
ComboBox13 = Ws.Cells(Ligne, "V")
ComboBox14 = Ws.Cells(Ligne, "W")
ComboBox15 = Ws.Cells(Ligne, "Y")
ComboBox16 = Ws.Cells(Ligne, "X")
For I = 1 To 12
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
TextBox1 = Ws.Cells(Ligne, "F")
TextBox2 = Ws.Cells(Ligne, "H")
TextBox3 = Ws.Cells(Ligne, "I")
TextBox4 = Ws.Cells(Ligne, "J")
TextBox5 = Ws.Cells(Ligne, "K")
TextBox6 = Ws.Cells(Ligne, "O")
TextBox7 = Ws.Cells(Ligne, "R")
TextBox8 = Ws.Cells(Ligne, "T")
TextBox9 = Ws.Cells(Ligne, "Z")
TextBox10 = Ws.Cells(Ligne, "AA")
TextBox11 = Ws.Cells(Ligne, "AB")
TextBox12 = Ws.Cells(Ligne, "AC")
TextBox14 = Ws.Cells(Ligne, "AD")
TextBox15 = Ws.Cells(Ligne, "AE")
TextBox16 = Ws.Cells(Ligne, "AF")
TextBox17 = Ws.Cells(Ligne, "AG")
TextBox18 = Ws.Cells(Ligne, "AH")
Next I
End Sub
3) Combobox3
Private Sub ComboBox3_Change()
Dim Ligne As Long
Dim I As Integer
If Me.ComboBox3.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox3.ListIndex + 2
ComboBox2 = Ws.Cells(Ligne, "C")
ComboBox3 = Ws.Cells(Ligne, "D")
ComboBox4 = Ws.Cells(Ligne, "E")
ComboBox5 = Ws.Cells(Ligne, "G")
ComboBox6 = Ws.Cells(Ligne, "L")
ComboBox7 = Ws.Cells(Ligne, "M")
ComboBox8 = Ws.Cells(Ligne, "N")
ComboBox9 = Ws.Cells(Ligne, "P")
ComboBox10 = Ws.Cells(Ligne, "Q")
ComboBox11 = Ws.Cells(Ligne, "S")
ComboBox12 = Ws.Cells(Ligne, "U")
ComboBox13 = Ws.Cells(Ligne, "V")
ComboBox14 = Ws.Cells(Ligne, "W")
ComboBox15 = Ws.Cells(Ligne, "Y")
ComboBox16 = Ws.Cells(Ligne, "X")
For I = 1 To 12
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
TextBox1 = Ws.Cells(Ligne, "F")
TextBox2 = Ws.Cells(Ligne, "H")
TextBox3 = Ws.Cells(Ligne, "I")
TextBox4 = Ws.Cells(Ligne, "J")
TextBox5 = Ws.Cells(Ligne, "K")
TextBox6 = Ws.Cells(Ligne, "O")
TextBox7 = Ws.Cells(Ligne, "R")
TextBox8 = Ws.Cells(Ligne, "T")
TextBox9 = Ws.Cells(Ligne, "Z")
TextBox10 = Ws.Cells(Ligne, "AA")
TextBox11 = Ws.Cells(Ligne, "AB")
TextBox12 = Ws.Cells(Ligne, "AC")
TextBox14 = Ws.Cells(Ligne, "AD")
TextBox15 = Ws.Cells(Ligne, "AE")
TextBox16 = Ws.Cells(Ligne, "AF")
TextBox17 = Ws.Cells(Ligne, "AG")
TextBox18 = Ws.Cells(Ligne, "AH")
Next I
End Sub
En espérant n'avoir rien oublié
@+
ET le fichier c'est mieux ..
Simeo025
Je viens de m'apercevoir que si l'on clique sur la croix rouge du formulaire, il se ferme et l'on a accès à la feuille de donnée....
Je l'avais zappé celle-la...
Donc pour y palier, on va ôter cette croix, ce qui obligera la fermeture par le bouton "Quitter"
1) Mettre le code suivant dans un module :
Option Explicit
'pour enlever la croix rouge d'un UF
Declare Function GetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Sub OteCroix(Caption As String)
Dim hwnd As Long
hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") _
& "Frame", Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub
2) et ajouter le code suivant dans Initialize
'Ote la croix de l'userform - Code Option Explicit dans module xxx
OteCroix Me.Caption
Voili ... voilou
@+