Bonsoir,
Après moultes recherches sur le forum, impossible de trouver une réponse à mon problème !
Depuis quelques jours je développe en VBA un classeur de suivis de comptes.
Les données seront rentrées via un userform de ce type :
Et ensuite redirigées vers cette feuille excel :
J'ai bien tout codé en VBA, tout fonctionne, jusqu'à ce que je fasse une modification de la largeur du userform, et la ça ne veut plus du tout se lancer, j'ai une erreur 400 au niveau de mon DepenseForm.show, et même en essayant de mettre juste avant Unload DepenseForm, rien ne se passe.
Voila mes deux macros qui me servent à lancer les userform depuis les boutons présents sur la feuille.
Et le code de la userform que j'ai renommé DepenseForm :
Je ne sais plus quoi faire ! Je ne comprends pas pourquoi cela ne fonctionne plus
Pouvez vous m'aider ?
Merci
Après moultes recherches sur le forum, impossible de trouver une réponse à mon problème !
Depuis quelques jours je développe en VBA un classeur de suivis de comptes.
Les données seront rentrées via un userform de ce type :
Et ensuite redirigées vers cette feuille excel :
J'ai bien tout codé en VBA, tout fonctionne, jusqu'à ce que je fasse une modification de la largeur du userform, et la ça ne veut plus du tout se lancer, j'ai une erreur 400 au niveau de mon DepenseForm.show, et même en essayant de mettre juste avant Unload DepenseForm, rien ne se passe.
Code:
Sub Depense()
DepenseForm.Show
End Sub
Sub Revenus()
RevenusForm.Show
End Sub
Et le code de la userform que j'ai renommé DepenseForm :
Code:
Private Sub Userform_initialize()
With categoriedepense
.AddItem "Alimentaire"
.AddItem "Assurances"
.AddItem "Autre"
.AddItem "Cadeaux"
.AddItem "Cigarettes"
.AddItem "Crédit"
.AddItem "Epargne"
.AddItem "Etat"
.AddItem "Extras"
.AddItem "Frais Bancaires"
.AddItem "Internet/Téléphone"
.AddItem "Logement"
.AddItem "Loisirs"
.AddItem "Santé"
.AddItem "Véhicules"
.AddItem "Divers pro"
End With
With comptedepense
.AddItem "Loulou"
.AddItem "Chouchou"
.AddItem "Pro"
End With
With moisdepense
.AddItem "Janvier"
.AddItem "Février"
.AddItem "Mars"
.AddItem "Avril"
.AddItem "Mai"
.AddItem "Juin"
.AddItem "Juillet"
.AddItem "Aout"
.AddItem "Septembre"
.AddItem "Octobre"
.AddItem "Novembre"
.AddItem "Décembre"
End With
'transforme la date en format français jour/mois
'datedepense.Value = Format(Now(), "dd/mm") plus utile avec la séparation jour et mois
End Sub
Private Sub Commandannuler_Click()
Unload DepenseForm
End Sub
Private Sub Commandvalider_Click()
'test de saisie de la date
If Me.datedepense.Text = "" Then
MsgBox "Vous devez entrer une date."
Me.datedepense.SetFocus
Exit Sub
End If
'test de saisie du mois
If Me.moisdepense = "" Then
MsgBox "Vous devez choisir un mois."
Exit Sub
End If
'test de saisie d'un montant
If montantdepense.Text = "" Then
MsgBox "Vous devez entrer un montant."
Exit Sub
End If
'test de saisie de la catégorie
If categoriedepense = "" Then
MsgBox "Veuillez sélectionner une catégorie de dépense."
Exit Sub
End If
'Test de saisie de l'objet de la dépense
If objetdepense = "" Then
MsgBox "Veuillez saisir un objet."
Exit Sub
End If
'test de saisie du compte de dépense
If comptedepense = "" Then
MsgBox " Veuillez sélectionner un compte à débiter."
Exit Sub
End If
'mise en place des valeurs saisies à la suite des précédentes
Range("A65536").End(xlUp).Offset(1, 0).Value = Me.datedepense.Text
Range("B65536").End(xlUp).Offset(1, 0).Value = Me.moisdepense.Text
Range("C65536").End(xlUp).Offset(1, 0).Value = CCur(montantdepense.Text) * (-1)
Range("E65536").End(xlUp).Offset(1, 0).Value = Me.categoriedepense.Text
Range("F65536").End(xlUp).Offset(1, 0).Value = Me.objetdepense.Text
Range("G65536").End(xlUp).Offset(1, 0).Value = Me.comptedepense.Text
'défini la valeur 0 dans les revenus.
Range("D65536").End(xlUp).Offset(1, 0).Value = CCur("0,00")
'fait la somme des cellules en cumulé depuis le début
Cells(3, 9) = CCur(WorksheetFunction.Sum(Feuil1.Range("C3:C65000")) + WorksheetFunction.Sum(Feuil1.Range("D3:D65000")))
'fait la somme des dépenses effectuées en décembre
'compte le nombre de cellules non vides
Dim n As Single
n = Application.WorksheetFunction.CountA(Range("B:B"))
n = n - 1 'soustrait la valeur de l'entête
n = n + 3 'incrémentation de n commence à la 3ème ligne
For i = 3 To n
If Cells(i, 2) = "Décembre" Then
somme = somme + Cells(i, 3).Value
End If
Next i
Cells(3, 8) = somme
' fermeture du userform
Unload DepenseForm
End Sub
Private Sub montantdepense_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 46 Then KeyAscii = 44
'Transforme le point en virgule pour être interprété en nombre
End Sub
Je ne sais plus quoi faire ! Je ne comprends pas pourquoi cela ne fonctionne plus
Pouvez vous m'aider ?
Merci
Pièces jointes
Dernière édition: