Cet article existe déjà alors que c'est faux
- Messages
- 1'214
- Excel
- 2024 FR
- Inscrit
- 18/07/2014
- Emploi
- Retraité fonction publique territoriale
Bonjour Arturo83,
Feuille accueil, clic sur le bouton de commande Créer crédits budgétaires BP;
Formulaire : Catégorie : Budget primitif dépenses alimentaires; Nature article : Dépenses alimentaires; Article : Avocats desserts
a) j'ai le message comme quoi l'article existe déjà dans la feuille BD crédits budgétaires, tableau structuré TabBDCréditsBudgétaires; je clique sur oui : le formulaire reste à l'écran mais aucune information n'est intégrée (et pour cause !); retour feuille accueil
b) Clic sur le bouton de commande Créer crédits budgétaires BP; Formulaire : catégorie : Budget primitif dépenses alimentaires; Nature article : dépenses alimentaires; Article : Café; pas de message comme quoi l'article existe déjà; je remplis prix unitaire et quantité; tout ce qui concerne période et conditionnement sort automatiquement; je clique sur Validation.
c) un nouvel article : soit il me sort le message d'existence ou pas.
Je vous avais joint le fichier budgets-1-4.xlsm pour vous fassiez également des tests de création mais apparemment cela ne vous intéresse pas; cela pourrait peut-être vous aider à voir le pourquoi du problème dans mon fichier BUDGETS.xlsm. Mis à part les deux feuilles accueil qui sont différentes, les deux formulaires semblent identiques ainsi que code (excepté, peut-être, éventuellement, le nom des objets, des outils).
Il semblerait qu'il y ait la variable I(indice) qui n'est pas réinitialisée, elle conserverait en mémoire la valeur précédente, essayez ceci:
Private Sub cbArticle_Change()
I = 0 'initialisation à 0 de l'indice I- Messages
- 1'214
- Excel
- 2024 FR
- Inscrit
- 18/07/2014
- Emploi
- Retraité fonction publique territoriale
j'ai ajouté votre instruction proposée. J'ai créé plusieurs crédits budgétaires d'articles inexistants (pas de message). J'ai tenté de créer des crédits budgétaires pour des articles existant déjà : cet article existe déjà. Merci beaucoup Arturo83. Par contre, j'ai créé un crédit budgétaire pour l'article Pâtes à la sauce tomates, pas de problème mais il n'a pas pris la place qui devrait être la sienne.
Pour ne pas mourir idiot, avez-vous une idée sur le fait que dans mon BUDGETS.xlsm, on doit ajouter cette instruction dans la procédure Private Sub cbArticle_Change alors que dans budgets-1-4.xlsm, même procédure, elle est absente ?
Enfin, pourriez-vous me donner une réponse à ma question posée hier : point d'arrêt, retour feuille accueil, clic sur Créer crédits budgétaires BP, passage de la souris sur la ligne point d'arrêt, tbCodeArticle.value ="", Que devrais-je voir ?
Pour ne pas mourir idiot, avez-vous une idée sur le fait que dans mon BUDGETS.xlsm, on doit ajouter cette instruction dans la procédure Private Sub cbArticle_Change alors que dans budgets-1-4.xlsm, même procédure, elle est absente ?
Oui, je le conseille
**************************************************************************************************
Enfin, pourriez-vous me donner une réponse à ma question posée hier : point d'arrêt, retour feuille accueil, clic sur Créer crédits budgétaires BP, passage de la souris sur la ligne point d'arrêt, tbCodeArticle.value ="", Que devrais-je voir ?
Le code de l'article doit apparaitre après avoir cliqué sur F8 pour dépasser la ligne en question, si le point d'arrêt est sur cette ligne, cela veut dire qu'il ne l'a pas encore lu, donc c'est normal que cela soit égal à "".
Exemple: si vous avez choisi l'article "Café", lancement de la macro, elle s'arrête au point d'arrêt, faites F8, la variable doit contenir la valeur DA20.
Vous pouvez aussi faire un clic droit sur la variable et sélectionner "Ajouter un espion", comme ça vous aurez la lecture directe du contenu de la variable dans une autre fenêtre en bas de la feuille. Vous pouvez ajouter autant d'espions que vous le souhaitez.
**************************************************************************************************
Edit: J'ai zappé cette ligne:
, j'ai créé un crédit budgétaire pour l'article Pâtes à la sauce tomates, pas de problème mais il n'a pas pris la place qui devrait être la sienne.
Précisez
- Messages
- 1'214
- Excel
- 2024 FR
- Inscrit
- 18/07/2014
- Emploi
- Retraité fonction publique territoriale
Dans le tabBDCréditsBudgétaires et le tabBDCréditsBudgétairesBudgetPrimitifDépensesAlimentaires, il se met à la dernière ligne du tableau au lieu du dessus de la ligne 10.
Pour ne pas mourir idiot, avez-vous une idée sur le fait que dans mon BUDGETS.xlsm, on doit ajouter cette instruction dans la procédure Private Sub cbArticle_Change alors que dans budgets-1-4.xlsm, même procédure, elle est absente ?
Oui, je le conseille
Vous me conseillez de la mettre aussi dans budgets-1-4 ?
Que devrais-je voir ? Je vais essayez les manipulations proposées pour me rendre compte de ce qui se produit. Exact, j'ai compris et j'ai vu.
Dans le tabBDCréditsBudgétaires et le tabBDCréditsBudgétairesBudgetPrimitifDépensesAlimentaires, il se met à la dernière ligne du tableau au lieu du dessus de la ligne 10.
Le tri est correct (agit sur 3 critères, Code article, suivi de Article, suivi de catégorie) le tri se fait sur les caractères en partant de la gauche, exemple: DA121 avec DA74, pour les 2 premiers caractères "DA", aucune incidence par contre le caractère suivant, c'est 1 pour DA121 et 7 pour DA74, le 1 étant inférieur à 7 c'est lui qui sera placé en première position bien 121 soit plus grand que 74.
Pour remédier à cela, il faut forcer les nombres sur 3 chiffres et là, le tri correspondra à vos attentes. Mais si je me souviens bien, cela déjà fait l'obget d'une des nombreuses discussions.
- Messages
- 1'214
- Excel
- 2024 FR
- Inscrit
- 18/07/2014
- Emploi
- Retraité fonction publique territoriale
Donc, la meilleure façon de remédier au problème, c'est de modifier le code article dans la feuille Liste de choix pour chaque tableau structuré et de le mettre à trois chiffres pour tout ce qui inférieur à 100 ? Dans le cas contraire, si cela vous est possible, d'avance merci de me donner les références de la discussion dans laquelle ce problème a été discuté.
Pour I= 0, vous me conseillez de l'inclure également dans budgets-1-4.xlsm ?
- Messages
- 1'214
- Excel
- 2024 FR
- Inscrit
- 18/07/2014
- Emploi
- Retraité fonction publique territoriale
Oui pour les deux ?
Je vais donc inclure I= 0 et modifier les codes articles dans budgets-1-4, créer des crédits budgétaires budget primitif pour des articles inexistants. Si le résultat est satisfaisant, je passerai à la création des crédits budgétaires budget DM1 :
1) avec I =0, j'espère que là aussi, je n'aurai plus le message article existant;
2) J'emploierai la formule de votre message du 06 mai2024 (messagerie privée, autant que je m'en souvienne) pour transférer total BP dans la feuille BD budgets DM1. Le 1) et le2) posant actuellement des problèmes.
Sub EffacerFeuilleBDCréditsBudgétaires()
Application.ScreenUpdating = False
'Si le tableau structure TabBDCréditsBudgétairess comporte au moins une ligne.
If Range("TabBDCréditsBudgétaires").ListObject.ListRows.Count > 0 Then
'Alors.
Réponse = MsgBox("Attention toutes les données de la feuille BD crédits budgétaires, tableau structuré TabBDCréditsBudgétaires vont être effacées !" & vbCrLf & vbCrLf & _
"Pas de retour en arrière possible !" & vbCrLf & vbCrLf & "Voulez-vous continuer ?", vbYesNo + vbCritical)
If Réponse = vbYes Then 'Si oui à la question Voulez-vous continuer , alors
'Supprimer toutes les lignes de la feuille BD crédits budgétaires, tableau structuré TabBDCréditsBudgétaires.
Range("TabBDCréditsBudgétaires").Delete
'Avec la feuille sh04, va la rendre visible, l'activer et se positionner dans la cellule A1.
With sh04
.Visible = xlSheetVisible
.Activate
.Range("A1").Select
End With
End If
End If
Call EffacerTabBDCréditsBudgétairesBudgetPrimitifDépensesAlimentaires
End Sub
Sub EffacerTabBDCréditsBudgétairesBudgetPrimitifDépensesAlimentaires()
Application.ScreenUpdating = False
'Alerte sur l'action demandée et ses conséquences.
'vbCrLf: dans l'aide de Microsoft Visual Basic pour Applications, dans la cadre en haut à gauche, taper Constances diverses. vbCrLf : Visual Basic Caractère de saut de para-
'graphe. vbLf : Visual Basic Caractère de saut de ligne. CrLf : Visual Basic combinaison des caractères de retour de chariot et de saut de ligne. vbInformation : dans l'aide de Mi-
'crosoft Visual Basic pour Applications, dans le cadre en haut à gauche, taper MsgBox Constances. vbInformation : Visual Basic Message d'information.
Réponse = MsgBox("Attention : toutes les données du Tableau structuré TabBDCréditsBudgétairesBudgetPrimitifDépensesAlimentaires vont être effacées !" & vbCrLf & _
vbCrLf & "Voulez-vous continuer ?", vbYesNo + vbExclamation)
'Effacer toutes les données du Tableau structuré TabBDCréditsBudgétairesBudgetPrimitifDépensesAlimentaires.
If Réponse = vbYes Then Call PurgerTabBDCréditsBudgétairesBudgetPrimitifDépensesAlimentaires
Application.ScreenUpdating = True
End Sub
Sub PurgerTabBDCréditsBudgétairesBudgetPrimitifDépensesAlimentaires()
'Supprime toutes les données du Tableau structure TabBDCréditsBudgétairesBudgetPrimitifDépensesAlimentaires.
NbLignes = Range("TabBDCréditsBudgétairesBudgetPrimitifdépensesAlimentaires").ListObject.ListRows.Count
If NbLignes <> 0 Then
For I = NbLignes To 1 Step -1
Range("TabBDCréditsBudgétairesBudgetPrimitifDépensesAlimentaires").ListObject.ListRows(1).Delete
Next I
End If
End Sub
Dans la première procédure, après le dernier end if, il y a : Call EffacerTabBDCréditsBudgétairesBudgetPrimitifDépensesAlimentaires. Serait-il possible de mettre un If.Then selon la catégorie pour effacer le contenu du tableau structuré destinataire correspondant ? Dans les deux autres procédure, faudrait-il prévoir également le même genre d'instructions.
J'ai modifié le code article (je l'ai mis à trois chiffres) dans les tableaux structurés DA et DNA et également dans la BD articles budgétaires pour tout ce qui concerne DA et DNA.
- Messages
- 1'214
- Excel
- 2024 FR
- Inscrit
- 18/07/2014
- Emploi
- Retraité fonction publique territoriale
Bonjour à toutes et à tous,
Voici une solution qui m'a été proposée sur un autre site. Elle répond à mes besoins et semble fonctionner correctement.