Partager via

Excel VBA - Formulaire et code

Anonyme
2023-06-24T16:09:51+00:00

Bonjour,

J'ai créé un formulaire qui en même temps devrait créditer un achat avec une carte de crédit et en même temps attribuer la dépense au poste concerné.

Mais voilà, comme vous le voyez sur l'image, "Alimentation" devrait être dans le combobox du haut :

Voici le code de ce formulaire :

'Format date en nombre

Public Dat As Date

'Page d'accueil

Private Sub Accueil_Click()

Unload Me

Sheets("Accueil").Select

End Sub

'Page formulaires

Private Sub Formulaires_Click()

Unload Me

Données_Formulaires.Show

End Sub

'Appeler les comptes & les atégories

Private Sub UserForm_Initialize()

Me.ListBox1.RowSource = "Compte"

Me.ListBox2.RowSource = "Investissementscumulésdenis"

Me.ListBox3.RowSource = "Dettesolde"

Me.ListBox4.RowSource = "Surplusdéficite"

Me.catégorie.RowSource = "Sortie"

End Sub

'Appeler les sous-catégories

Private Sub catégorie_Change()

Me.souscat.RowSource = "Sortie" & Me.catégorie

End Sub

'Appeler les sous-catégories

Private Sub catégorie2_Change()

Me.souscat2.RowSource = "Sortie" & Me.catégorie2

End Sub

'Date

Private Sub txtdate_AfterUpdate()

Dat = Me.txtdate.Value

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

'Montant

Private Sub montant_AfterUpdate()

Me.montant = Replace(Me.montant, ".", ",")

Me.montant = Format(Me.montant, "currency")

End Sub

'Transfert d'un crédit dans un compte

Private Sub enregistrer_Click()

If Me.txtdate = "" Or Me.souscat.ListIndex < 0 Or Me.montant = "" Then

MsgBox ("Il manque des informations") 

Else

'Contrôler si la base de données est vide oui ou non 

If Sheets("Base de données").Range("d8") &lt;&gt; "" Then 

    Sheets("Base de données").ListObjects(1).ListRows.Add 

End If 

'Trouver la dernière ligne 

dlt = Sheets("Base de données").Range("b100000").End(xlUp).Row 

'Ajouter les infos 

Sheets("Base de données").Range("c" & dlt) = txtdate 

Sheets("Base de données").Range("d" & dlt) = "Crédit" 

Sheets("Base de données").Range("e" & dlt) = CDbl(Me.montant) 

Sheets("Base de données").Range("g" & dlt) = Me.catégorie 

Sheets("Base de données").Range("i" & dlt) = Me.souscat 

Sheets("Base de données").Range("k" & dlt) = Me.créancier 

Sheets("Base de données").Range("p" & dlt) = Me.commentaire 

'Vider le formulaire 

Me.txtdate = "" 

Me.montant = "" 

Me.créancier = "" 

Me.catégorie = "" 

Me.souscat = "" 

Me.créancier = "" 

Me.commentaire = "" 

'Ajouter les infos 

Sheets("Base de données").Range("d" & dlt) = "Sortie" 

Sheets("Base de données").Range("l" & dlt) = Me.catégorie2 

Sheets("Base de données").Range("n" & dlt) = Me.souscat2 

'Vider le formulaire 

Me.catégorie2 = "" 

Me.souscat2 = "" 

'ThisWorkbook.RefreshAll 

ThisWorkbook.Save 

Me.ListBox1.RowSource = "Compte" 

Me.ListBox2.RowSource = "Investissementscumulésdenis" 

Me.ListBox3.RowSource = "Dettesolde" 

Me.ListBox4.RowSource = "Surplusdéficite" 

End If

End Sub

Une idée du problème ?

Merci

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

2 réponses

  1. Hecatonchire 53,540 Points de réputation Modérateur bénévole
    2023-06-24T19:10:25+00:00

    Bonjour,

    Ca manque d'information.

    ""Alimentation" devrait être dans le combobox du haut" => le quel, il y en a 4 ?

    Dans Private Sub UserForm_Initialize on a l'alimentation de 4 zones de liste inconnues

    Me.ListBox1.RowSource = "Compte"

    Me.ListBox2.RowSource = "Investissementscumulésdenis"

    Me.ListBox3.RowSource = "Dettesolde"

    Me.ListBox4.RowSource = "Surplusdéficite"

    et de Catégorie (j'imagine que c'est le comboBox Catégorie

    Me.catégorie.RowSource = "Sortie"

    Plus bas on a 2 mises à jour des sous-catégories

    Private Sub catégorie_Change()

    Me.souscat.RowSource = "Sortie" & Me.catégorie

    End Sub

    Private Sub catégorie2_Change()

    Me.souscat2.RowSource = "Sortie" & Me.catégorie2 ha on sait que c'est catégorie2 !

    End Sub

    Mais je n'ai pas vu l'alimentation de Catégorie2

    Je pense qu'il faudrait ajouter dans Private Sub UserForm_Initialize une ligne du style

    Me.catégorie2.RowSource = ....

    N'étant pas devin 😁, je ne sais pas ce qu'il faut mettre dedans (après le =)

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2023-06-24T17:00:47+00:00

    Salut DenisVerrette!

    S’il vous plaît essayer ceci:

    « Format de date en nombre Date de réception publique

    'Page d’accueil Sous-Accueil_Click privé () Déchargez-moi feuilles.Sélectionner Fin de la sous-section

    'Page Formulaires Sous-Formulaires_Click privé () Déchargez-moi Données_Formulaires.Show Fin de la sous-section

    'Comptes d’appels et catégorisations Sous-UserForm_Initialize privé () 'Mettre à jour la RowSource avec la source de données correcte pour chaque zone de liste déroulante Me.ListBox1.RowSource = « Compte » Me.ListBox2.RowSource = « Investissements cumulésdenis » Me.ListBox3.RowSource = « Debtbalance » Me.ListBox4.RowSource = « Déficit excédentaire » Me.category.RowSource = « Sortie » Fin de la sous-section

    'Sous-catégories d’appel Sous-catégorie_Change privé () 'Mettre à jour la RowSource pour la zone de liste déroulante de sous-catégorie en fonction de la catégorie sélectionnée Me.souscat.RowSource = « Sortie » & Me.category Fin de la sous-section

    'Sous-catégories d’appel Sous-catégorie2_Change privé () 'Mettre à jour la zone de liste déroulante RowSource pour la deuxième sous-catégorie en fonction de la catégorie sélectionnée2 Me.souscat2.RowSource = « Sortie » & Me.category2 Fin de la sous-section

    « Date Sous-txtdate_AfterUpdate privé () Dat = Me.txtdate.Valeur Message GoTo d’erreur Me.txtdate = Format(CDate(Me.txtdate), « aaaa-mm-jj ») Quitter Sub

    Message: MsgBox (« Vous avez entré le mauvais format de date! ») Me.txtdate = «  » Fin de la sous-section

    « Montant Sous-montant_AfterUpdate privé () Me.amount = Remplacer(Me.montant, « . », « , ») Me.amount = Format(Me.amount, « currency ») Fin de la sous-section

    « Transfert d’un crédit sur un compte Sous-enregistrer_Click privé () If Me.txtdate = "" Or Me.souscat.ListIndex < 0 Or Me.montant = "" Then MsgBox ("Il manque des informations") Else 'Control if the database is empty or not If Sheets("Base de données"). Range("d8") <> "" Then Sheets.ListObjects(1). ListRows.Add Fin Si

    'Trouver la dernière ligne dlt = Feuilles(« Base de données »). Plage(« b100000 »). Fin(xlUp). Ramer

    'Ajouter des informations Sheets.Range(« c » & dlt) = txtdate Sheets.Range(« d » & dlt) = « Crédit » Sheets.Range(« e » & dlt) = CDbl(Me.amount) Sheets.Range(« g » & dlt) = Me.category Sheets.Range(« i » & dlt) = Me.souscat Sheets.Range(« k » & dlt) = Me.creditor Sheets.Range(« p » & dlt) = Me.comment

    « Vider le formulaire Me.txtdate = «  » Me.amount = «  » Me.creditor = «  » Me.category = «  » Me.souscat = «  » Me.creditor = «  » Me.comment = «  »

    'Ajouter des informations pour la deuxième catégorie et sous-catégorie Sheets.Range(« d » & dlt) = « Sortie » Sheets.Range(« l » & dlt) = Me.category2 Sheets.Range(« n » & dlt) = Me.souscat2

    « Vider le formulaire Me.category2 = «  » Me.souscat2 = «  »

    ThisWorkbook.RefreshAll ' Actualiser les données

    Veuillez me faire savoir, si vous avez besoin d’une aide supplémentaire, je serai heureux de vous aider davantage.

    Sinceres salutations Shakiru

    Cette réponse a été traduite automatiquement. Par conséquent, il peut y avoir des erreurs grammaticales ou des expressions étranges.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire