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

@+

Rechercher des sujets similaires à "finalisation userform"