Argument ou appel de procédure incorrect

Bonjour à toutes et à tous,

Feuille accueil : clic sur le bouton de commande Crédits budgétaires

Le formulaire UF02CréditBudgétaires est chargé : Catégorie : dans la liste déroulante, cliquer sur Budget primitif dépenses alimentaires; Nature article : dans la lidye déroulante : cliquer sur Dépenses alimentaires; Article : dans la liste déroulante, cliquer sur le dernier de la liste (yaourts matin) : alors surgit l'erreur : Argument ou appel de procédure incorrect. Dans la feuille code, procédure cbArticle_Change, Case Budget primitif dépenses alimentaires, l'instruction suivante se colore en jaune :

tbNuméroCréationBP = tbCodeCatégorie.Value & "-" & Format(WorksheetFunction.CountIf(sh04.ListObjects("TabBDCréditsBudgétaires").ListColumns(15).DataBodyRange, tbCodeCatégorie & "*") + 1, "00")

D'avance merci à celle, à celui qui va pouvoir m'aider à supprimer cette erreur. Dans le fichier modèleliege-test-220829-1.xlsm, qui me sert de modèle, la création d'un crédit budgétaire entraîne également une erreur.

Mon fichier :

Mon fichier modifié : cela fonctionne, je n'ai plus le message d'erreur. Ne me demandez pas pourquoi, car je n'en sais rien. Si quelqu'un a la solution pour supprimer le message d'erreur de Mon fichier, merci de me la communiquer. De plus, le tri et renuméroter s'exécutent convenablement, selon mes souhaits. Reste à régler le problème d'un article déjà existant afin qu'il me le signale.

Fichier me servant de modèle :

Bonjour,

Le tableau "TabBDCréditsBudgétaires" est vide, or comme il cherche une valeur en colonne 15, et que la première cellule de cette colonne du tableau est vide, cela génère une erreur. Pour le vérifier, mettez le chiffre 1 en O5 de la feuille "BD budgets primitifs" et lancez la procédure. cela devrait marcher.

Il ne reste plus qu'à remplir ce tableau pour ne plus avoir ce problème.

Cdlt

Bonjour Arturo83,

Merci. Je vais essayer en fin de matinée ou cette après-midi. Là, je me prépare pour aller à mon rendez-vous semestriel de consultation de mon médecin généraliste. J'ai rempli manuellement un ligne complète du tableau et je n'ai pas eu de message d'erreur. Pensez-vous qu'il soit possible de créer une instruction qui permettrait de valider une création alors que le tableau est vide et qui permettrait ainsi de ne pas avoir ce message d'erreur ? Je pense que oui : j'ai déjà eu une telle instruction mais cela fait longtemps et je ne sais plus dans quel fichier.

Procédure Sub RécupérationCréditsBudgétairesBP(ByVal I As Long) : il est prévu qu'un message s'affiche si l'article existe déjà. Malheureusement, il ne s'affiche pas. D'avance merci de m'aider à résoudre ce problème.

Procédures Private Function IndiceCréditsBudgétairesBP(ByVal CodeArticle As String) As Long et Private Sub RécupérationInfosCréditsBudgétairesBP(ByVal Indice As Long) : sont-elles vraiment utiles ? Si oui, par la suite, il y aura ces trois procédures pour DM1, DM2 et BM. Un select case pourrait-il simplifier le code : RécupérationCréditsBudgétaires : select case cbCatégorie ; case : tout ce qui a le mot budget primitif; case : tout ce qui a DM1 et ainsi de suite. dito pour les deux autres procédures. Pour le tri, il va avoir une deuxième key base soit sur catégorie, soit sur Nature article.

Je ne comprends pas, mais le Générer BudgetPrimitifDépensesAlimentaires ne fonctionne plus.

Bonjour,

Procédure Sub RécupérationCréditsBudgétairesBP(ByVal I As Long) : il est prévu qu'un message s'affiche si l'article existe déjà. Malheureusement, il ne s'affiche pas. D'avance merci de m'aider à résoudre ce problème.

C'est normal, tout le début de la procédure est en "Remarque", ce qui interdit toute lecture de début du code, revoici le code avec les ' supprimées.

Sub RécupérationCréditsBudgétairesBP(ByVal I As Long)
    With Range("TabBDCréditsBudgétaires").ListObject
        If I > 0 Then
            'Si larticle existe : on demande confirmation de la modification.
            If MsgBox("Larticle " & cbArticle.Value & " " & "existe déjà dans la feuille BD budgets primitifs, tableau structuré TabBDCréditsBudgétaires." & vbCrLf & vbCrLf & _
            "Voulez-vous le modifier ou le supprimer ?", vbExclamation + vbYesNo) = vbYes Then
                'Modification acceptée : on récupère les infos article non encore renseignées.
                'DataBodyRange :Cette propriété renvoie un objet Range qui représente la plage de valeurs, à lexception de la ligne den-tête dans une table. Type de données en
                'lecture seule. cbTYpeValue : nom de lobjet, de loutil dans le formulaire; .ListColumns : Cette propriété renvoie une collection ListColumns qui représente toutes les
                'colonnes dun objet ListObject. Type de données en lecture seule. Le contenu de la parenthèse du .ListColumns représente le nom de la colonne tel quil figure dans
                'le tableau structuré mentionné sur la ligne With.
                cbPériodeBP.Value = .ListColumns("Période").DataBodyRange(I)
                tbCodePériodeBP.Value = .ListColumns("Code période").DataBodyRange(I)
                cbConditionnementBP.Value = .ListColumns("Conditionnement").DataBodyRange(I)
                tbCodeConditionnementBP.Value = .ListColumns("Code conditionnement").DataBodyRange(I)
                tbPrixUnitaire.Value = .ListColumns("Prix unitaire").DataBodyRange
                tbQuantité.Value = .ListColumns("Quantité").DataBodyRange
                tbTotalBudgetPrimitif.Value = .ListColumns("Total BP").DataBodyRange
                tbDateCréationBP.Value = .ListColumns("Date création").DataBodyRange(I)
                tbNuméroCréationBP.Value = .ListColumns("Numéro création").DataBodyRange(I)
            Else
                'Modification refusée : on efface le nom article.
                cbArticle.Value = Empty
            End If
        End If
    End With
'Recherche existence crédits budgétaires.

    I = IndiceCréditsBudgétairesBP(cbArticle.Value)
'Si I supérieur à Zéro alors
    If I > 0 Then
'Crédit budgétaire existant : Affichage d'un message informant de l'existence de ce crédit.
    MsgBox "L'article " & cbArticle.Value & " existe déjà dans la feuille BD budgets primitifs, tableau structuré TabBDCrédits budgétaires." & vbCrLf & vbCrLf & _
    "Vous pouvez le modifier oule supprimer.", vbInformation
    Call RécupérationInfosCréditsBudgétairesBP(I)
    J = I
    End If
End Sub

****************************************************************************************************************************

Procédures Private Function IndiceCréditsBudgétairesBP(ByVal CodeArticle As String) As Long et Private Sub RécupérationInfosCréditsBudgétairesBP(ByVal Indice As Long) : sont-elles vraiment utiles ? Si oui, par la suite, il y aura ces trois procédures pour DM1, DM2 et BM. Un select case pourrait-il simplifier le code :
RécupérationCréditsBudgétaires : select case cbCatégorie ; case : tout ce qui a le mot budget primitif; case : tout ce qui a DM1 et ainsi de suite. dito pour les deux autres procédures. Pour le tri, il va avoir une deuxième key base soit sur catégorie, soit sur Nature article.

Pourquoi voulez-vous supprimer ces Fonctions et Sub, si elles sont là, c'est que le concepteur à juger utile de le faire et si vous faites une recherche, vous verrez quelles sont appelées par d'autres Sub.

Mon conseil:
-D'abord, ne poser qu'une question par paragraphe
-Ensuite: Essayer de comprendre, c'est bien mais ne cherchez pas trop à tout vouloir maîtriser, cela va vite devenir imbuvable, pour vous comme pour ceux qui veulent vous aider, car ça oblige à à tout reprendre en se mettant à la place et d'éplucher le travail de celui qui s'est déjà décarcassé pour créer l'outil. Epuisant.

*****************************************************************************************************

Je ne comprends pas, mais le Générer BudgetPrimitifDépensesAlimentaires ne fonctionne plus.

Solution dans l'autre fil.

Cdlt

Bonjour Artureo83,

J'ai modifié mon programme mais une erreur survient dans la procédure Sub RécupérationCréditsBudgétaires, sur la ligne cbPériodeBP.Value = .ListColumns("Période").DataBodyRange(I) : Référence incorrecte ou non qualifiée (si je mets cette ligne en commentaires, la même erreur se produit sur la ligne suivante).

Vous avez oublié d'enlever l'apostrophe devant "With Range("TabBDCréditsBudgétaires").ListObject"

Merci. Cela fonctionne maintenant. Reste le problème du message qui ne s'affiche toujours pas. Voir le fil correspondant (cet article existe déjà : ne s'exécute pas)

Dans "Sub RécupérationCréditsBudgétairesBP(ByVal I As Long)", remplacez:

I = IndiceCréditsBudgétairesBP(cbArticle.Value)

par

I = IndiceCréditsBudgétairesBP(tbCodeArticle)
Rechercher des sujets similaires à "argument appel procedure incorrect"