Bonjour,

Je me permets de remonter un autre besoin relatif a la creation d'un userform.
Mon userform est cree et fonctionne bien pour le moment, il demande a un utilisateur de completer un formulaire comprenant des dates et une liste deroulante, rien de bien exceptionnel.

Toutefois j'aurais besoin de votre aide pour plusieurs points de code, avant tout voici ce que j'ai d'ores et deja code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
Private Sub DocumentReviewForm_Initialize()
 
Option Explicit
 
Dim Ws As Worksheet
Dim J As Long
Dim I As Integer
 
ComboBox1.ColumnCount = 1
ComboBox2.ColumnCount = 1
ComboBox1.List() = Array("x", "y", "z", "s", "g")
ComboBox2.List() = Array("x", "y", "z", "s", "g")
 
Set Ws = Sheets("bASE")
 
End Sub
 
Private Sub CommandButton1_Click() ' Parametre du bouton OK
Save = MsgBox("Do you want to save your data on the table ?", vbYesNo)
'il faut ajouter le fait que ca doit se sauvegarder sur la ligne qui concerne la property
 
If Save = vbYes Then
 
With Sheets("Property view")
.Range("F6").Value = TextBox_numero1
.Range("G6").Value = TextBox_numero2
.Range("H6").Value = ComboBox_numero1
.Range("I6").Value = TextBox_numero3
.Range("J6").Value = TextBox_numero4
.Range("K6").Value = ComboBox_numero2
End With
End If
If Save = vbNo Then
End
End If
End Sub
Private Sub CommandButton2_Click() ' Parametre du bouton cancel
End
End Sub
 
 
 
Private Sub ComboBox2_Change() ' Force CAPS pour Combobox2
ComboBox2.Text = UCase(ComboBox2.Text)
 
End Sub
 
Private Sub TextBox1_Change() ' Force CAPS pour Textbox1
TextBox1.Text = UCase(TextBox1.Text)
End Sub
 
Private Sub TextBox2_Change() ' Force format date pour Textbox2
'Forcer format xx/xx/xxxx
Dim Valeur As Byte
TextBox2.MaxLength = 10 'nb caracteres maxi dans textbox
 
Valeur = Len(TextBox2)
If Valeur = 2 Or Valeur = 5 Then TextBox2 = TextBox2 & "/"
 
End Sub
 
Private Sub TextBox3_Change() ' Force format date pour Textbox3
'Forcer format xx/xx/xxxx
Dim Valeur As Byte
TextBox3.MaxLength = 10 'nb caracteres maxi dans textbox
 
Valeur = Len(TextBox3)
If Valeur = 2 Or Valeur = 5 Then TextBox3 = TextBox3 & "/"
 
 
End Sub
 
Private Sub TextBox6_Change() ' Force format date pour Textbox6
'Forcer format xx/xx/xxxx
Dim Valeur As Byte
TextBox6.MaxLength = 10 'nb caracteres maxi dans textbox
 
Valeur = Len(TextBox6)
If Valeur = 2 Or Valeur = 5 Then TextBox6 = TextBox6 & "/"
 
 
End Sub
 
Private Sub TextBox7_Change() ' Force format date pour Textbox7
 
'Forcer format xx/xx/xxxx
Dim Valeur As Byte
TextBox7.MaxLength = 10 'nb caracteres maxi dans textbox
 
Valeur = Len(TextBox7)
If Valeur = 2 Or Valeur = 5 Then TextBox7 = TextBox7 & "/"
 
End Sub
 
Private Sub UserForm_Click()
 
End Sub
Besoin de vous pour :
1. Lorsque l'utilisateur a termine, qu'il clique sur OK et qu'il confirme qu'il veut sauvegarder, les donnees devraient s'enregistrer sur la plage determinee... mais ca ne fonctionne pas . Voici la partie du code concernee :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub CommandButton1_Click() ' Parametre du bouton OK
Save = MsgBox("Do you want to save your data on the table ?", vbYesNo)
'il faut ajouter le fait que ca doit se sauvegarder sur la ligne qui concerne la property
 
If Save = vbYes Then
 
With Sheets("Property view")
.Range("F6").Value = TextBox_numero1
.Range("G6").Value = TextBox_numero2
.Range("H6").Value = ComboBox_numero1
.Range("I6").Value = TextBox_numero3
.Range("J6").Value = TextBox_numero4
.Range("K6").Value = ComboBox_numero2
End With
End If
If Save = vbNo Then
End
End If
End Sub
2. (Attention, prise de tete....) J'aimerais que l'utilisateur saisisse en premier et de facon obligatoire une adresse dans la premiere textbox. Cette valeur servira a chercher si l'adresse existe deja dans une autre sheet. En gros, cela donnerait cela en texte :

User enter X dans property field
Si x =x dans Sheet 1 Range y alors update range y de x avec les donnees Z saisies par user et si Z deja presentes pour cette property dans range y sheet 1 alors les remplacer par new Z
Si x not found dans sheet 1 range y alors pas d'update et msgbox qui signale que la property n'existe pas et qu'il faut utiliser la fonction add property avant d'updater des infos

J'espere que je suis claire

3. J'ai code de facon a ce que mon user viennent chercher des donneees de mon sheet base pour mes deux listes deroulantes. toutefois quand je ferme mon code et reessaye il ne maffiche que des donnees vides...quand je le fait avec la console ouverte il me propose les donnees que je lui demande. Pourquoi ne le fait il pas quand ma console est fermee ? Voici le code concerne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub DocumentReviewForm_Initialize()
 
Option Explicit
 
Dim Ws As Worksheet
Dim J As Long
Dim I As Integer
 
ComboBox1.ColumnCount = 1
ComboBox2.ColumnCount = 1
ComboBox1.List() = Array("x", "y", "z", "s", "g")
ComboBox2.List() = Array("x", "y", "z", "s", "g")
 
Set Ws = Sheets("bASE")
 
End Sub
Merci beaucoup pour votre aide !