Bonjour,
Je suis à élaborer un logiciel de gestion budgétaire pour mon entreprise avec Excel VBA sur office 365 business pro.
J'avance avec succès jusqu'à ce que je rencontre ce problème. L'un de mes formulaire répartie des montants sur 12 mois (prévisions budgétaire). Tout les paramètres fonctionnent sauf 1, soit la date du premier jour de chaque mois. ex : 2019-01-01, 2019-01-02, etc.
Au début cela fonctionnait et tout à coup ça ses mit à planter. Ex : 2019-01-01, 05/06/2019, 06/01/2019, etc. Seulement la première date est OK puis c'est n'importe quoi.
J'ai fait affaire avec un conseiller sur Microsoft community. Nous avons tenté plusieurs solutions de format de date, désinstaller office 365 et réinstaller, de même avec la suite office, copier sur un nouveau fichier. Bref rien n'a fonctionné. Pourtant, le conseiller avait mon classeur et de son côté tout fonctionnaient.
Sa conclusion est que mon classeur est peut-être corrompu. Pourtant tout mes autres formulaires fonctionnent et je n'ai rien importé et tout conçu manuellement.
Voici les codes concerné :
Voici le formulaire
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 'Date Private Sub txtdate_AfterUpdate() On Error GoTo Message Me.txtdate = Format(CDate(Me.txtdate), "yyyy-mm-dd") Exit Sub Message: MsgBox ("Vous avez entr? le mauvais format de date !") Me.txtdate = "" End Sub 'Date de paiement Private Sub txtdatefin_AfterUpdate() On Error GoTo Message Me.txtdatefin = Format(CDate(Me.txtdatefin), "yyyy-mm-dd") Exit Sub Message: MsgBox ("Vous avez entr? le mauvais format de date !") Me.txtdatefin = "" End Sub 'Bouton budg?ter Private Sub budg?ter_Click() Dim x As Integer Dim paiementmens As Double If Me.txttype < 0 Or Me.montant = "" Or Me.p?riode < 0 Or Me.cat?gorie < 0 Or Me.souscat < 0 Then MsgBox ("Il manque des informations !") Else 'V?rifier si la date de paiement est inscrite If Me.txtdatefin <> "" Then x = DateDiff("m", Me.txtdate, Me.txtdatefin) paiementmens = CDbl(Me.montant) / x '<-- Calcul des mensualit?s qu'il reste ? payer entre ces 2 dates Do Until x = 0 If Sheets("pr?visions").Range("ar76") <> "" Then Sheets("pr?visions").ListObjects(1).ListRows.Add End If 'Trouver la derni?re ligne dlt = Sheets("pr?visions").Range("ar10000").End(xlUp).Row Sheets("pr?visions").Range("ar" & dlt) = Me.txtdate Sheets("pr?visions").Range("as" & dlt) = Me.txttype Sheets("pr?visions").Range("at" & dlt) = paiementmens Sheets("pr?visions").Range("au" & dlt) = Me.cat?gorie Sheets("pr?visions").Range("aw" & dlt) = Me.souscat Sheets("pr?visions").Range("ay" & dlt) = Me.txtdescription Me.txtdate = DateAdd("m", 1, Me.txtdate) '<-- Ajout d'un mois en plus ? la date de d?part x = x - 1 '<-- D?compte du nombre de fois qu'il faut faire la boucle Loop End If Me.txtdate = "" Me.txttype = "" Me.montant = "" Me.p?riode = "" Me.txtdatefin = "" Me.cat?gorie = "" Me.souscat = "" Me.txtdescription = "" ThisWorkbook.RefreshAll ThisWorkbook.Save End If End Sub
En terminant je me suis inspiré d'un vidéo et naturellement sur le vidéo cela fonctionnait.
Avez-vous une solution autre que tout recommencé![]()
Partager