Bonjour à toutes et à tous,
Feuille accueil : clic sur le bouton de commande Créer crédits budgétaires BP;
Formulaire uf02CréerCréditsBudgétairesBP : catégorie : Budget primitif dépenses alimentaires; Article : Agneau; Date création : 18 juin 2024.
Mon but : que le programme aille dans la feuille BD articles budgétaires, tableau structuré TabBDArticlesBudgétaires : là, selon la catégorie et selon article, qu'il prenne le contenu de la colonne G (Période) afin de remplir la cbPériodeArticle du formulaire UF02CréerCréditsBudgétairesBP. Les instructions suivantes ont eu pour conséquence de sortir l'erreur : erreur définie par l'application ou par l'objet :
Private Sub PrédéfinitionsPériode()
Application.ScreenUpdating = False
Set F4 = Sheets("BD articles budgétaires")
Set F5 = Sheets("Bd crédits budgétaires")
Tab1_F4 = "TabBDArticlesBudgétaires"
Tab1_F5 = "TabBDCréditsBudgétaires"
DerLig_F5 = Range("TabBDCréditsBudgétaires").ListObject.ListRows.Count + 3
F5.Range("E4").FormulaR1C1 = "=index(" & Tab1_F4 & "[#All],match(" & Tab1_F4 & "[@[Code article]]," & Tab1_F4 & "[[#All],[Code article]],0),match (" & Tab1_F5 & "[[#headers], [Période]]," & Tab1_F4 & "[#headers],0))"
F5.Range("e4:e" & DerLig_F5).Value = F5.Range("e4:e" & DerLig_F5).Value
End Sub
J'ai modifié ce qui devait l'être afin que cela corresponde à mes feuilles.
Les instructions suivantes ont eu pour effet de supprimer l'erreur signalée ci-dessus mais le cbPériodeArticle ne se remplit pas.
Private Sub PrédéfinitionsPériode()
On Error GoTo ErrorHandler
Application.ScreenUpdating = False
Dim wsArticles As Worksheet
Dim wsCredits As Worksheet
Dim tableArticles As String
Dim tableCredits As String
Dim lastRowCredits As Long
' Set worksheet references
Set wsArticles = Sheets("BD articles budgétaires")
Set wsCredits = Sheets("BD Crédits budgétaires")
' Table names
tableArticles = "TabBDArticlesBudgétaires"
tableCredits = "TabBDCréditsBudgétaires"
' Find the last row in the Credits table
lastRowCredits = wsCredits.ListObjects(tableCredits).ListRows.Count + 3
' Set the formula in the first cell
wsCredits.Range("E5").Formula = "=INDEX(" & tableArticles & ", MATCH([@[Code article]], " & tableArticles & "[[Code article]], 0), MATCH(""Période"", " & tableArticles & "[#Headers], 0))"
' Convert formulas to values
wsCredits.Range("E5:E" & lastRowCredits).Value = wsCredits.Range("E5:E" & lastRowCredits).Value
Cleanup:
' Re-enable screen updating
Application.ScreenUpdating = True
' Release object references
Set wsArticles = Nothing
Set wsCredits = Nothing
Exit Sub
ErrorHandler:
' Handle errors
MsgBox "An error occurred: " & Err.Description, vbCritical
Resume Cleanup
End Sub
Merci de m'aider à résoudre ce problème.