Fichier BUDGETS V1 SMP.xltm : global a échoué

Bonsoir à toutes et à tous,

fichier BUDGETS V1 SMP.xlsm :

Feuille Accueil, clic sur Création articles budgétaires

Formulaire UF01CréationArticlesBudgétaires : Nom création articles budgétaires : dans la liste déroulante, cliquer sur Articles dépenses budgétaires. Un message d'erreur apparaît à l'écran : La méthode "Range" de l'objet '_Global' a échoué. Je vous joints le fichier MENUS SMP.xltm qui me sert de modèle, formulaire UF01_CréationArticlesMenus.

D'avance merci pour l'aide que vous pourrez m'apporter.

Bonnes fin de soirée, nuit et continuation à toutes et à tous. Prenez bien soin de vous.

18menus-smp.zip (322.42 Ko)
22budgets-v1-smp.xlsm (233.06 Ko)

Bonjour,

Il me semble que les tableaux "TabArticlesDepenseBudgetaires" et "TabRecettesBudgetaires" ne sont pas encore créés.

Cdlt

Salut,

Alors comment dire, on se répète je pense.

Private Sub cbNomCréationArticlesBudgétaires_Change()        
'....
'....
'On reconstitué le nom de la liste à partir de la sélection dans "cbNomCatégorieArticlesBudgétaires"
        Tablo = "Tab" & Replace(cbNomCatégorieArticlesBudgétaires, " ", "")
    End If

Dans la procédure ci-dessus tu colles un point d'arrêt sur la ligne Tablo tu regardes la valeur de Tablo, et tu vas vite te rendre compte de ta bourde.

Maintenant quelques réflexions :

  • Il y a trois listes déroulantes sur le formulaire, et cinq zones de texte. As-ton besoin de leurs donner des noms à couché dehors ?
  • Idem pour les tableaux.

De simple tbDate, cmbArticles, cmbCategories sans accents, (Une bonne habitude à prendre) font très bien l'affaire.

Je te laisse méditer là-dessus.

Allez une édition...

Quand tu accèdes à une colonne d'un tableau, tu dois connaître son parent (le tableau) donc pourquoi faire ceci :

  • TabNomConditionnementArticleBudgétaire[Nom conditionnement article budgétaire]

Alors que ceci et quand même plus lisible :

  • tab_Conditionnements[Nom]

Un conditionnement reste un conditionnement, alors que fait ceci dans le tableau ?

  • 1 pack de 100 cure-dents
  • 1 pack de 100 sacs (Poubelle)

Un paquet de 100 reste un paquet de 100 que ce soit des cigarettes ou des sacs poubelles. Idem pour le reste.

000327

Ajouter des lettres sur les codes articles ne fait qu'alourdir le code pour rien. Passe la colonne en position 1 et fait une incrémentation simple quand la liste sera chargée dans une liste déroulante tu pourras faire référence à la ligne par son numéro d'ID

000329

Voici une fonction qui va permettre cela, elle charge une ligne du tableau (si elle existe) tu peux ensuite l'utiliser à ta guise.

'@Description "Retourne une ligne d'un tableau depuis la recherche d'une valeur dans une colonne"
Public Function GetListRow(ByVal Table As Excel.ListObject, ByVal ColumnName As String, ByVal Value As Variant) As Excel.ListRow
    Dim Formula As String
    Dim index As Long

    If TypeName(Value) = "String" Then Value = """" & Value & """" Else Value = Value * 1
    Formula = "iferror(match({value},{table}[{column}],0),0)"
    Formula = Replace(Formula, "{value}", Value)
    Formula = Replace(Formula, "{table}", Table.Name)
    Formula = Replace(Formula, "{column}", ColumnName)
    index = Evaluate(Formula)
    If index > 0 Then Set GetListRow = Table.ListRows(index)
End Function

L'appel est très simple :

Public Sub TestGetListRow()
    ' Pour le test
    Dim Value As Long
    Value = 5

    Dim PeriodeListRow As Excel.ListRow
    Set PeriodeListRow = GetListRow(Range("tab_Periodes").ListObject, "ID", Value)

    If Not PeriodeListRow Is Nothing Then
        MsgBox "Vous avez sélectionné l'item n° : " & PeriodeListRow.Range(.Parent.ListColumns("ID").index).Value
    Else
        MsgBox "Aucun élément n'a été trouvé !"
    End If
End Sub

Bonjour Arturo83 et Jean-Paul,

Pour Arturo83, si j'ai bien compris votre réponse, les deux tab dont vous faites mention sont inexistantes et, normalement ne vont pas exister : tout est dans la feuille Liste de choix, tableau structuré TabNomArticlesBudgétaires. Donc, quelque part, je dois faire mention de ce tab mais où ?

Pour Jean-Paul : point d'arrêt sur tablo : à chaque tablo, il mentionne "TabArticlesDépensesBudgétaires" : 1) Où a-t-il pris cette référence ? 2) Désolé, je ne vois pas où est ma bourde. Peut-être a-t-elle une relation avec les propos d'Arturo83 et la réponse que je lui ai faite ?

Re,

En fait tu recherches un tableau dont le nom correspond au nom de l'item de la liste déroulante formaté. Mais ce tableau n'existe pas. tout simplement.

Quand on fait du copier coller de code que l'on te fournis, la première chose à faire c'est d'essayer de comprendre ce fameux code, sinon tu ne vas pas avancer dans la programmation.

De plus quand je vois cela écrit :

    If cbNomCréationArticlesBudgétaires.ListIndex = -1 Then
        'Nom création articles budgétaires invalide, on efface le contenu du tbCodeNomCréationArticlesBudgétaires et le contenu du cbNomCréationArticlesBudgétaires.

Cela peut prêter à confusion pour quelqu'un qui débute en programmation. ListIndex = -1 ne signifie pas que l'entrée est invalide, mais qu'aucun Item n'a été sélectionné !

Quelles procédures dois-je supprimer et la remplacer par la fuction que tu mentionnes dans ton message ?

Re,

Avant de te lancer à tête baissée dans le projet tu dois poser celui-ci sur le papier. Tu dois limiter le nombres de tableaux et de colonnes.

  • Supprimes les colonnes inutiles exemple dans le tableau "TabNomCréationArticlesBudgétaires"
    • D'ailleurs faut-il un tableau pour remplir une liste déroulante avec deux entrées ?
  • Supprime les tableaux inutiles, dans le précédent projet tu as déjà une liste d'articles sert-en.

Bonsoir Jean-Paul,

J'ai fait un copier-coller de tes instructions concernant GetList auxquelles je n'ai absolument rien compris d'une part, et qui semblent ne pas s'exécuter d'autre part.

En c qui concerne NomPériode articleBudgétaire, le cbNomPériodeArticleBudgétaire reste vide malgré le chox que j'ai fait et le tbCodeNomPériodeArticleBudgétaire reste vide.

Dernier point : si tu le veux bien, fais-moi une liste de choix selon tes goûts.

18budgets-v1-smp.xlsm (234.02 Ko)

Bonjour,

Pourquoi vous compliquez-vous la vie ?

Une version partielle simple qui fonctionne correctement. Bonne découverte.

Bonjour BeGood et Arturo83,

Pour Arturo 83 : la version dont vous parlez n'a aucun rapport avec Budgets. Ce sont deux programmes différents. Je viens de voir effectivement que BeGood proposait une version modifiée qui fonctionne.

Pour BeGood : Merci pour votre version modifiée. Les premiers tests semblent concluants. Si nécessaire, puisse-je créer de nouveaux modules, modifier le module Affichage en complétant la feuille Accueil avec de nouveaux boutons de commande

Bonjour,

Vous faites ce que vous pensez, mais il est plus logique de partir de ce fichier que de tout transposer dans le votre comme vous le faites habituellement.

NB : vous n'êtes pas sans savoir que l'aide en privé n'est pas conforme à la charte, si un modérateur passe par là vous pourriez être embêté.

OK pour la messagerie privée alors pourquoi le prévoir si c'est interdit par la chartre ? Je ne comprends pas, d'autant plus quand on clique sur messagerie privée, on nous explique comment procéder.

J'allais vous poser une autre question et je viens de m'apercevoir qu'il y avait une nouvelle feuille ListeBis. Si j'ai bien compris, il faut garder les deux feuilles (Liste de choix et ListesBis) ou peut-on tout mettre dans une feuille unique ?

La messagerie privée n'est pas interdite, mais elle est plutôt faite pour transmettre des infos confidentielles que l'on ne souhaite pas voir en clair sur le forum par exemple et pas pour résoudre des problèmes qui sont censés être accessibles à tous sur le forum.

Sinon pour les listes vous pouvez tout regrouper sur une seule feuille

Pour les deux tableaux structurés actuels, TabPériode et TabConditionnement, que me conseillez-vous : garder ces deux tableaux ou créer des tableaux individuels selon le même principe que les tableaux structurés de votre feuille ListeBis ou bien pour chaque tableau structuré de votre feuille ListeBis, créer 4 nouvelles colonnes (Nom période, code période, nom conditionnement, code conditionnement) ? Si création de quatre nouvelles colonnes, cela aura-t-il une incidence sur les différentes procédures de votre programme ?

Toujours à partir de votre propre programme, certaines procédures actuellement vierges de toute instruction peuvent-elles êtres gardées (lesquelles ?) ou supprimer (lesquelles ?) en supposant, ce dont je ne doute pas, que vous ayez une vue d'ensemble du but final recherché.

Certes, je ne suis pas un expert en VBA, et cela je le revendique haut et fort, je persiste et signe, mais j'étudie chaque programme et j'essaie de comprendre ce qui s'y passe afin de pouvoir créer mon propre programme car, malgré certaines remontrances sur ce sujet, je n'aime pas utiliser le copier-coller car pour moi cela ne va pas m'aider à comprendre les instructions que chaque contributeur est amené à me proposer.

Réaction d'Arturo83 au sujet de la messagerie privée.

Oui, il a raison mais, je comprends aussi très bien que, de votre part, ayant le souci de ne pas froisser les personnes qui sont déjà intervenues, vous passiez par messages privés pour demander d'éventuelles améliorations lorsque ces dernières ne souhaitaient plus se manifester.

Si certaines de ces personnes sont disposées à reprendre le flambeau, surtout si elles sont à l'origine du projet ou qu'elles l'ont grandement amélioré, alors il ne faut pas les décevoir et continuer avec elles sinon, elles risqueraient de s'en détourner totalement. De mon côté, je me tiendrai à l'écart pour ne pas interférer sur les échanges entre tous les intervenants.

Cordialement

Ma réponse à son message.

Aujourd'hui à 16:32

Cela ne me dérangerait pas si vous interveniez également. Au contraire, je serai d'accord pour que plusieurs intervenants sur mes problèmes échangent leurs idées, leurs propositions.

Bonjour,

Pour période et conditionnement pourquoi voulez-vous éclater ? Vous pressentez un souci ?

Pour les procédures manquantes, je n'ai fait que reprendre votre fichier et le rendre similaire à celui fourni par als35 pour vos menus et que je trouve clair et efficace.

Pour la vision globale de votre projet, non je ne vois rien du tout, mais si c'est pour gérer votre budget et saisir le prix d'une baguette de pain dans une colonne dépenses ou le montant de vos pensions dans une colonne recettes, cela me semble particulièrement luxueux !

Pour le copier/coller, ré-écrire les instructions en faisant des erreurs ne vous aidera pas plus à comprendre, vous l'avez bien vu dans la partie menus.

Ci-joint le fichier complété, seules les pré-définitions éventuelles sont à votre charge.

Bonjour BeGood,

Période et conditionnement : non, je ne prévois pas de souci. C'était dans l'optique de simplifier éventuellement le programme. Jean-Paul a suggéré de faire des suppressions et des modifications sans préciser lesquelles.

Pour les procédures manquantes, donc j'utilise les informations d'Als35.

Vision globale de mon projet : oui, c'est bien cela le but final mais ce sera dans un autre formulaire avec un autre formulaire qui calculera les gains ou les pertes. On verra cela au moment venu.

Dans le nouveau fichier que vous avez joint, deux remarques : 1) vous n'avez pas reconduit le numéro création; 2) J'ai créé un article mais le tableau structuré TabBDArticlesBudgétaires de la feuille BD articles budgétaires reste vide. J'ai dû faire une mauvaise manœuvre car je viens de le créer une nouvelle fois et là mon tableau structuré est bien rempli. Recréer l'article : j'ai bien le message comme quoi il existe déjà. La suppression fonctionne également. La modification d'un cbPériode ou conditionnement fonctionne également.

Que pensez-vous des observations d'Arturo83 concernant la messagerie privée et de la réponse que je lui ai faite ?

Feuille Liste de choix, colonne AH, tableau structuré TabMois : ligne Janvier 2023 : pas de problème; Lignes Février 2023 à Décembre 2023 incluses : clic sur ! : cette cellule est incohérente avec la formule de colonne. Merci de corriger le problème. Sur la feuille Liste de choix, si je transfère C1 dans la cellule D1et que je modifié en conséquence le tableau structuré TabMois : Janvier 2023 : pas de problème; cellules suivantes : toujours le problème.

19budgets-smp.xlsm (239.66 Ko)

Bonjour à tous,

Bonne fête de Noël et joyeux réveillon pour vous et vos familles respectives.

Bonjour,

Plusieurs remarques :

Jean-Paul a suggéré de faire des suppressions et des modifications : dans le fichier que je vous ai transmis j'ai déjà supprimé les tables inutilisées sauf TabNomCatégorieBudgets qui ne sert à rien pour le moment, ou alors voyez directement avec lui

Pour les procédures manquantes, donc j'utilise les informations d'Als35 : j'ai complété ces procédures, mis à à part les pré-définitions que vous seul maitrisez

Vision globale de mon projet : avez-vous véritablement besoin d'un programme hyper compliqué juste pour saisir des dépenses et des recettes ?

Vous n'avez pas reconduit le numéro création : d'après ce que j'ai vu dans Menus, ce numéro de création variable (???) fait, au final, double emploi avec le code article

Que pensez-vous des observations concernant la messagerie privée : c'est votre cuisine, mais rendre visible sur le forum des échanges faits en privé n'est pas très correct

Feuille Liste de choix, colonne AH, tableau structuré TabMois : c'est quoi ce nouveau fichier ? Vous nous faites travailler pour vous fournir un programme et vous en aviez déjà un de prêt, c'est abuser ! (la table TabMois n'est pas utilisé dans le code, vous pouvez la supprimer). Par ailleurs vous indiquez sur la feuille Accueil, "D'après BeGood" alors qu'il n'y a pas une seule ligne de code que je vous ai fournie, pas véritablement sympa non plus. Je ne vais pas me replonger dans un nouveau code juste pour vous faire plaisir !

Bon Noël

Rechercher des sujets similaires à "fichier budgets smp xltm global echoue"