Module MGénérerTabBD : procédure Sub GénérerTabBD

Bonjour à toutes et à tous,

Dans le module et la procédure cités dans titre du sujet, je souhaite limiter le nombre d'instructions par un regroupement d'instructions qui sont communes. Il semblerait, contrairement à ce qui m'a été dit, qu'un select case n'est pas accepté dans un module puisque pour Select case cbCatégorie.value je reçois le message "Variable non définie".

Merci à celle (celles), à celui (ceux) qui pourra (pourront) m'aider à résoudre ce problème.

Bonnes journée et continuation à toutes et à tous. Prenez bien soin de vous.

12budgets-a83.zip (299.81 Ko)

Bonjour,

- Ajoutez et déclarez la variable "Categorie as string" dans le module "MVariablesPubliques".

- Dans le macro "cmdValidation_Click", remplacez

        If cbCatégorie = "Budget primitif dépenses alimentaires" Then
            Call GénérerTabBD

par

        If cbCatégorie = "Budget primitif dépenses alimentaires" Then
            Categorie
            Call GénérerTabBD

et dans la macro "GénérerTabBD"

    Select Case Catégorie

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

Par contre pour les lignes suivantes(mais vous n'avez peut-être pas fini! puisqu'il manque le "Next i")

Range .ListObject.ListRows.Add de quel tableau s'agit-il?, il faudrait peut-être le spécifier.

Cdlt

Heureusement que je regarde un peu le forum pour voir si j'ai des messages. J'attends toujours la notification de l'arrivée de votre message dans ma boîte de réception !

Merci pour vos suggestions. Je vais modifier en conséquence, tester et je vous tiendrai au courant des résultats.

If cbCatégorie = "Budget primitif dépenses alimentaires" Then
            Call GénérerTabBD

par

 If cbCatégorie = "Budget primitif dépenses alimentaires" Then
            Categorie
            Call GénérerTabBD

catégorie : cela sort une erreur et aucun enregistrement.

12budgets-a83.zip (305.00 Ko)

pour éviter certaines confusions, remplacez lz variable" Categorie" par "vCategorie", ce qui donnera

- Ajoutez et déclarez la variable "vCategorie as string" dans le module "MVariablesPubliques".

 If cbCatégorie = "Budget primitif dépenses alimentaires" Then
            vCategorie
            Call GénérerTabBD

et dans la macro "GénérerTabBD"

 Select Case vCatégorie

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

Par contre pour les lignes suivantes(mais vous n'avez peut-être pas fini! puisqu'il manque le "Next i")

Range .ListObject.ListRows.Add de quel tableau s'agit-il?, il faudrait peut-être le spécifier.

Cdlt

If cbCatégorie = "Budget primitif dépenses alimentaires" Then
            vCategorie
            Call GénérerTabBD
Toujours la même erreur : procédure attendue et non variable.
14budgets-a83.zip (284.65 Ko)

Pardon, mauvais copié/collé de ma part

        If cbCatégorie = "Budget primitif dépenses alimentaires" Then
            vCatégorie = cbCatégorie.Value
            Call GénérerTabBD

attention aussi à la déclaration de la variable: vCatégorie As String et pas VCatégorie As String

Select Case vCatégorie.Value vCatégorie : qualificateur incorrect (dans le cmdValidation_Click du formulaire).

Case Is = "Budget primitif dépenses alimentaires", "Budget primitif dépenses bancaires", "Budget primitif dépenses horticoles", "Budget primitif dépenses médicales", "Budget _primitif dépenses non alimentaires", "Budget primitif recettes bancaires", "Budget primitif recettes médicales", "Budget primitif recettes numéraires"

Bonjour,

J'ai écrit ceci:

 Select Case vCatégorie

et pas cela:

 Select Case vCatégorie.value

Bonjour Arturo83,

Mille excuses. Je vais rectifier et tester. Le v précédant catégorie, c'est un choix au hasard (n'importe quelle lettre serait acceptée) ou c'est une obligation dû au vba ?

Après correction des erreurs signalées dans différentes procédures, je n'ai plus de message d'erreur. Contrairement à ce que je pensais, il est inutile de modifier le code de cmdValidation_Clicks, sauf ajouter de nouvelles lignes pour les autres items autres que celui-là :

If cbCatégorie = "Budget primitif dépenses alimentaires" Then
vCatégorie = cbCatégorie.Value
Call GénérerTabBD

À moins que cela soit nécessaire, faut-il effacer tout la partie insérer les données et les recopier pour chaque if cbCatégorie ? Le if if cbCatégorie est-il à la bonne place ou dois-je le déplacer : si oui, à quel endroit doit-il être transféré ? Si possible, si mieux, merci de me proposer toute solution qui permettrait d'alléger le code en obtenant le même résultat.

Dans le module et la procédure cités dans titre du sujet, je souhaite limiter le nombre d'instructions par un regroupement d'instructions qui sont communes.

Ainsi dans les tableaux structurés destinataires, tous situés à droite du tableau structuré TabBDCréditsBudgétaires, toutes ces colonnes sont communes : Catégorie, Nature article, Article, Date création, Numéro création. Pour insérer les données, je pense qu'une seule ligne par colonne serait bien, en utilisant, si nécessaire, un Select Case sur cbCatégorie ou vCatégorie. Puis utiliser une SuiteAjout: pour Total BP pour les items Budget primitif dépenses... et Budget décision modificative numéro une... puis une SuiteAjoutBPEtDM1: et une SuiteAjoutDM1EtDM2: : pour Total DM1 pour les items Budget décision modificative numéro une dépenses... et Budget décision modificative numéro deux dépenses... Ce principe devrait être utilisé dans toutes les procédures où cela sera possible. Voir pour cela le fichier joint, module MGénérerTabBudgets, procédure GénérerTabBD, partie SuiteAjout: serait-il possible de trouver une solution afin que je n'ai pas à taper autant d'instructions nécessaires selon qu'il s'agit d'un TabBDBudgetPrimitifDépensesAlimentaires, TabBDBudgetPrimitifDépensesBancaires, etc. ? Il en sera de même pour le tableau structuré source. Pour l'instant, on ne s'occupe pas des budgets mensuels, on verra cela plus tard.

J'ai créé le crédit budgétaire pour Agneau. Tri et renumérotation s'exécutent correctement. J'ai tenté de recréer Agneau : pas de message comme quoi cet article existe déjà.

Merci de me répondre globalement mais à chaque problème ou questions soulevés ou de me répondre individuellement (une réponse pour ceci, une deuxième réponse pour cela, une troisième réponse pour un autre problème ou question soulevés, etc.), c'est-à-dire autant de messages individuels que de problèmes ou questions soulevés..

Je ne répondrai qu'à ceci:

Le v précédant catégorie, c'est un choix au hasard (n'importe quelle lettre serait acceptée) ou c'est une obligation dû au vba ?

J'ai mis un v comme variable puisque "vCategorie" est une variable, on pourrait mettre n'importe quoi, l'idée étant de conserver une même logique pour les noms utilisés: cb pour combobox, tb pour textbox etc...

En nommant cette variable vCategorie, cela évite aussi les confusions avec les titres "Catégorie" de chaque tableau .

Pour le reste, je regarderai quand j'aurai plus de temps à moins que d'ici là, il y ait un autre intervenant.

Merci. "à moins que d'ici là, il y ait un autre intervenant." : je ne crois plus au Père Noël, désolé.

Rechercher des sujets similaires à "module mgenerertabbd procedure sub generertabbd"