Cet article existe déjà : ne s'exécute pas

Bonjour thev,

Dans votre dernier fichier envoyé hier (17h45), le message cet article existe déjà n'apparaît plus.

Dans le fichier tests-ccm2(1).xlsm du mardi 17 janvier 2023 à 12h35, le message apparaît bien. J'ai imprimé tout le code et la feuille. Je vais inclure la procédure sub RechercheArticlemenu dans mon fichier. J'espère que cela ne va pas être la source d'erreurs dans d'autres procédures.

Bonjour,

C'est la procédure : RécupérationArticlesMenus qui manque.

Bonjour thev,

oui, c'est bien cela.

Bonjour thev,

Pour l'instant, seul je vais créer la procédure cmdValiderCréationArticlemenu. Si j'ai un problème, je vous enverrai votre fichier d'hier (j'ai ajouté la procédure récupérationArticleMenu) afin de corriger les éventuelles erreurs. En attendant, si vous avez du temps, vous pouvez réfléchir aux instructions nécessaires pour cette procédure sans me les envoyer; D'avance merci. Je souhaite essayer de programmer seul, c'est ainsi que je vais apprendre.

Hélas, ce que je craignais s'est réalisé lors du clic sur ValiderCréationArticleMenu : dans le tableau structuré TabBDArticlesMenus, le nom des colonnes s'efface, d'où une erreur au moment du tri. Si nécessaire, prévoir une procédure de tri ou garder les actuelles instructions. Je n'ai rien prévu pour les clés article et produit

18tests-ccm2-1.xlsm (69.83 Ko)

Bonjour Budgets,

procédure création corrigée + rectification génération du numéro création article menu

        
        'Génération de Numéro création article menu.
        With [TabBDArticlesMenus].ListObject
            tbNuméroCréationArticleMenu.Value = tbCodeNatureArticleMenu & "-" & Format(Application.CountIf(.ListColumns("Code nature article menu").Range, tbCodeNatureArticleMenu.Value) + 1, "00")
        End With

ci-joint fichier

18tests-ccm2-1.xlsm (72.77 Ko)

NB : voir mon tuto sur les instructions VBA relatives à un tableau structuré : https://forum.excel-pratique.com/astuces/tableau-structure-instructions-vba-specifiques-a-cet-objet-...

Bonsoir thev,

Merci. Autre merci pour les instructions du tableau structuré.

J'ai un autre problème : quand je crée un article, les prédéfinitions ne s'exécutent pas.

Doit-on prévoir l'enregistrement de la colonne clé article de la feuille BD articles menus ? Si oui, de quelle manière ?

Doit-on prévoir l'enregistrement de la colonne clé article de la feuille BD articles menus ?

Absolument pas car, comme il s'agit d'une formule, elle est recopiée automatiquement à la création d'une nouvelle ligne.

quand je crée un article, les prédéfinitions ne s'exécutent pas.

Qu'entendez-vous par prédéfinitions ?

Bonsoir thev,

Dans la procédure cbNomArticleMenu_Change, il est prévu des prédéfinitions pour la période et le conditionnement selon le cbNomNatureArticleMenu.value et le cbNomArticleMenu.value: si je choisis Dessert midi retraite d'une part, et Pomme d'autre part, les cbNomPériodeArticleMenu et cbNomConditionnementArticlemenu doivent se remplir automatiquement avec les informations des select case et des cases.

dans votre tuto sur le vba, que signifient les lettres TS

TS = Tableau Structuré , pour rester français, plutôt que LO = ListObject(classe du tableau structuré)

quand je crée un article, les prédéfinitions ne s'exécutent pas

Rectification séquence instructions dans la procédure : cbNomArticleMenu_Change

ci-jointe nouvelle version

6tests-ccm2-2.xlsm (73.15 Ko)

Bonsoir thev,

Merci. Bravo pour toutes vos réponses qui répondent bien à mes souhaits et pour votre rapidité (ultra "TGV" ;thev à grande vitesse).

J'ai regardé le code la procédure cbNomArticleMenu_Change : qu'avez-vous modifié ? Je n'ai rien vu mais cela fonctionne tout de même.

Prochain problème : ce sera la renumérotation. Je crée des articles dans n'importe quel ordre : le tri les remettra dans l'ordre alphabétique et le numéro de création initial devra alors changer. Voir le fichier MENUS 2023 si vous l'avez encore.

Bonsoir,

J'ai regardé le code la procédure cbNomArticleMenu_Change : qu'avez-vous modifié ?

J'ai remonté ce paquet d'instructions et donc modifié leur séquence dans la procédure.

    

    '// Recherche existence article.
    i = IndiceArticlesMenus 'IndiceNom articlemenu dans la feuille BD articles menus, tableau structuré TabBDArticlesMenus.
    'Si i supérieur à zéro alors.
    If i > 0 Then   'Article trouvé.

        Call RécupérationArticlesMenus(i)
        Exit Sub

    Else            'Article non trouvé.

        'Effacement des infos article
        For Each ctrl In Me.Frm_infos_article.Controls
            If TypeOf ctrl Is MSForms.ComboBox Or TypeOf ctrl Is MSForms.TextBox Then ctrl = Empty
        Next ctrl
        Me.tbDateCréationArticleMenu = Format(Date, "d mmmm yyyy")

        'Génération de Numéro création article menu.
        With [TabBDArticlesMenus].ListObject
            tbNuméroCréationArticleMenu.Value = tbCodeNatureArticleMenu & "-" & Format(Application.CountIf(.ListColumns("Code nature article menu").Range, tbCodeNatureArticleMenu.Value) + 1, "00")
        End With

        'Modification des libellés.
        Call ModificationLibellés
    End If

J'ai remonté ce paquet d'instructions et donc modifié leur séquence dans la procédure.

Qu'entendez-vous par remonter ? vous les avez changés de place (de leur place actuelle à la fin de la procédure avant la modification des libellés ?). J'ai vu : c'est le contraire : de la fin de la procédure vers le haut. Je suis un peu long à la détente mais j'arrive tout de même à faire les bonnes déductions, enfin j'espère.

Vu l'heure qu'il est, je pense que vous n'allez pas répondre ce soir. Donc bonnes fin de soirée, nuit et continuation. Prenez bien soin de vous; À demain.

Qu'entendez-vous par remonter ? vous les avez changés de place

Le paquet d'instructions se situe désormais avant vos prédéfinitions, ce qui évite donc leur effacement quand l'article n'existe pas.

Bonsoir thev,

Merci pour les renseignements. Je maintiens la nouvelle définition de tgv. Bonnes fin de soirée, nuit et continuation. Prenez bien soin de vous.

Bonjour thev,

Formulaire UF01-Création : création article, légumes soirs vendredi, betterave rouge : le tbcodeconditionnementarticlemenu ne se remplit pas. Il semblerait que ce n'est que pour ce produit que le problème surgit.

Regardez les légumes soirs vendredi dans la feuille BD articles menus : Numéro de création : champignons 01, asperges 03, avocat 04. 1) prévoir dans la feuille code du formulaire un appel à renuméroter articles;2)créer la procédure renuméroter articles : asperges devra avoir le numéro de création 1, avocat le 2, champignons le 3. Pour tous les autres articles, ce sera le même principe (j'ai abrégé ici le numéro création mais il devra rester tel qu'il a été prévu, c'est-à-dire avec les lettres). j'ai un modèle de renuméroter mais là je n'ai pas le temps de l'inclure dans mon fichier pour voir la réaction du programme. Je vais l'essayer cette après-midi. D'avance merci pour votre aide.

Bonjour thev,

Mon fichier avec la procédure Renuméroter création article menu qui ne fonctionne pas.

Bonsoir,

Formulaire UF01-Création : création article, légumes soirs vendredi, betterave rouge : le tbcodeconditionnementarticlemenu ne se remplit pas

Le nom du conditionnement dans la table TabConditionnement ne correspond pas à celui affecté par le code. Corrigé

Mon fichier avec la procédure Renuméroter création article menu qui ne fonctionne pas.

A priori la colonne concernée de la table TabBDArticlesMenus devrait être : Code nature article menu. Tri revu en conséquence.

ci-jointe nouvelle version

17tests-ccm2-3.xlsm (75.24 Ko)

Bonsoir thev,

Pour betteraves rouges, j'ai vu l'erreur : je viens de la rectifier et cela marche.

Valider : 1) Chez moi, j'avais fait un call renuméroter dans la procédure cmdvalider mais je ne l'avais pas placé au bon endroit. Mis là où il devait être, cela a fonctionné. 2) Renuméroter : j'avais code article menu, mais cela ne fonctionnait pas. J'ai essayé code nature article menu et là, miracle, tout a fonctionné correctement.

Je m'apprêtais à te le signaler mais ton message est arrivé.

Je n'ai plus que deux choses à faire : 1) vider le contenu du tableau structuré TabBDArticlesMenus (c'est fait et cela fonctionne). 2) Créer la procédure Supprimer (c'est fait et après correction des erreurs, cela donne le résultat escompté).

Dans les instructions qui suivent, j'ai une erreur sur la ligne i = IndiceArticlesMenus : incompatibilité de type

Private Sub cmdSuppressionCréationArticleMenu_Click()
Dim I As Long
'Recherche existence article.
I = IndiceArticlesMenus(tbCodeArticleMenu.Value) 'Indice code article dans la BD articles menus.
If I > 0 Then
'Article existant : on demande confirmation suppression.
If MsgBox("Souhaitez-vous supprimer l'article " & tbCodeArticleMenu.Value & " ?", vbYesNo + vbExclamation) = vbYes Then
Range("TabBDArticlesMenus").ListObject.ListRows(I).Delete
Call RenuméroterCréationArticlesMenus
Unload Me
End If
End If
End Sub

j'ai supprimé la parenthèse et son contenu et mon article a été supprimé.

Une dernière question, déjà posée mais restée sans réponse : moi à toi : tu veux un tu ou un vous ? Toi à moi : tu fais ce qui te convient le mieux.

Si tu le souhaites, je t'enverrai mon fichier final pour cette première partie. Avec le fichier que tu m'as envoyé ce soir, si tu estimes nécessaire d'agir ainsi et si tu veux bien le faire, tu peux modifier les commentaires d'une part, en ajouter des nouveaux éventuellement, d'autre part.

j'ai une erreur sur la ligne i = IndiceArticlesMenus : incompatibilité de type

La fonction n'a pas de paramètre.

Private Sub cmdSuppressionCréationArticleMenu_Click()
    Dim I As Long

    'Recherche existence article.
    I = IndiceArticlesMenus 'Indice code article dans la BD articles menus.
    If I > 0 Then
    'Article existant : on demande confirmation suppression.
        If MsgBox("Souhaitez-vous supprimer l'article " & tbCodeArticleMenu.Value & " ?", vbYesNo + vbExclamation) = vbYes Then
            Range("TabBDArticlesMenus").ListObject.ListRows(I).Delete
            Call RenuméroterCréationArticlesMenus
            Unload Me
        End If
    End If

End Sub

moi à toi : tu veux un tu ou un vous ?

Je n'ai pas de choix arrêté là-dessus. Je pense que cela finit par s'imposer naturellement dans les échanges.

Si tu le souhaites, je t'enverrai mon fichier final pour cette première partie.

Uniquement si c'est nécessaire dans le cadre de l'assistance de ce forum.

Rechercher des sujets similaires à "cet article existe deja execute pas"