XL 2019 (RESOLU) Cellule qui se met à jour par addition.

HamoudaBA

XLDnaute Occasionnel
Bonjour le fil,
j'ai un fichier avec plus de 7000 réferences, je cherche qu'à chaque fois j'ajoute une entrée en stock dans la feuille "saisie" la cumul m'affiche le total sans avoir de doublons de réferences.
je joins un fichier exemple.
Merci.
 

Pièces jointes

  • test.xlsm
    20.9 KB · Affichages: 50

Dudu2

XLDnaute Barbatruc
J'ai besoin d'utiliser de préférence les titres des colonnes des tableaux structurés.
Comment fait-on pour entrer en VBA une chaine de caractères arabes ?
Sinon est-ce qu'il est possible de changer "المعرف_الوحيد" en "I.U" ("UniqueID" ou "Identifiant" aurait été plus explicite).
 

Dudu2

XLDnaute Barbatruc
J'ai changé "المعرف_الوحيد" en "I.U" en feuille Base pour être cohérent avec les autres tableaux qui utilisent l'Identifiant.

Il faut éviter de remplir les tableaux structurés avec des lignes vides. L'intérêt du Tbl.DataBodyRange.Rows.Count est d'éviter de faire les trucs incertains genre xxx.xlUp pour trouver la dernière ligne. L'insertion (en feuille MO) se fera à la suite de la dernière ligne du tableau structuré, lignes vides (à supprimer) comprises avant un tri qui mettra les Identifiants dans l'ordre croissant.
 

Pièces jointes

  • TEST 2021.zip
    954.2 KB · Affichages: 4
Dernière édition:

Dudu2

XLDnaute Barbatruc
Non la fonction est la bonne, on obtient un résultat juste.
Elle donne un résultat juste mais différent de ce qu'il y avait avant.
Avant
1611336322694.png

Après
1611336267151.png


D'autre part j'ai changé les formules pour remplacer "A2" par "[I.U]" pour ne plus avoir à gérer le n° de ligne dans la formule.
 

HamoudaBA

XLDnaute Occasionnel
Il faut donc remplacer la valeur constante de la colonne Grade de la feuille MO par une formule:
=SI(A2<>"";RECHERCHEV(A2;EFFECTIF!A$1:F$9002;5;FAUX);"")
Par contre on obtient par formule une valeur qui est différente, la constante étant précédée du chiffre 1 ou autre.
En essayant le Test, j'ai ajoué un IU à la feuille base j'ai eu un message de réference circulaire.
J'ai remarqué aussi si on ajoute un identifiant par erreur on le supprime de la Feuille base mais il n'est pas supprimer automatiquemetn de le Feuille MO
1611336927054.png
 

Dudu2

XLDnaute Barbatruc
En essayant le Test, j'ai ajoué un IU à la feuille base j'ai eu un message de réference circulaire.
Je ne comprends pas comment en changeant le titre en I.U qui est une valeur constante tu peux avoir un référence circulaire. Ce n'est pas possible.
1611337617346.png

J'ai remarqué aussi si on ajoute un identifiant par erreur on le supprime de la Feuille base mais il n'est pas supprimer automatiquemetn de le Feuille MO
Ce que tu m'as demandé ce n'est pas d'assurer la cohérence des Identifiants entre les 2 feuilles.
C'est juste de gérer le total des MO avec une répartition par année et de créer l'Identifiant en Feuille MO s'il n'existe pas. A aucun moment il n'a été question de supprimer ou vérifier la cohérence qui relève d'un traitement particulier qui n'est pas lié à la seule modification du MO en feuille Base.
c'est la même chose., pas de souci pour la numérotion de ligne automatique.
Ce n'est pas la même chose pour le code qui doit insérer la formule lorsqu'un identifiant est créé en feuille MO.
La formule avec "[I.U]" est simple. Celle avec "A2" implique de mettre à jour le n° de ligne suivant "A" dans le formule.
 

Dudu2

XLDnaute Barbatruc
La cohérence les Identifiants entre la feuille Base et la feuille MO doit faire l'objet d'un traitement spécial déclenché par la modification de l'Identifiant en feuille Base. Ça n'a plus rien à voir avec la gestion du MO en feuille Base et de son report par année en feuille MO.
C'est un traitement complexe car en feuille MO il faut être capable d'ajouter ou de supprimer des Identifiants en feuille MO selon ce qu'on trouve en feuille Base et éventuellement de regénérer les totaux MO par années en feuille MO.
 

Dudu2

XLDnaute Barbatruc
J'essaie de le faire mais c'est difficile !
Sur un Worksheet_Change() qui supprime une ou des lignes dans le tableau de la feuille Base on ne sait pas quels Identifiants on été supprimés. Il faut donc faire des manips complexes pour les mémoriser au Worksheet_SelectionChange(). De plus en cas de suppression de ligne(s), il faut recalculer les MO des Identifiants supprimés qui seraient encore présents sur d'autres lignes de la Base.
Je pense y arriver mais c'est un montage complexe.
Le plus simple et le plus sûr aurait été un bouton de synchronisation pour forcer la reconstruction complète du tableau de la feuille MO. Cette fonctionnalité sera quand même accessible puisqu'il suffit de supprimer toutes les lignes dans la feuille MO pour provoquer une reconstruction complète en faisant {Entrée} dans la barre de formule sur n'importe quel Identifiant de la feuille Base.
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
J'ai quasi passé la journée d'hier et ce matin sur ce code.
La gestion / interception des modifications (ajouts/modifications/suppressions) dans une feuille (ou un tableau) est toujours très complexe. En plus il faut ici maintenir la cohérence entre 2 tableaux et reporter les modifs de l'un dans l'autre. C'est pas piqué des vers ! Comme on dit chez moi et ce n'est certainement pas maintenable par un développeur moyen malgré la pléthore de commentaires et les noms d'objets / variables / constantes auto-descriptifs.

J'ai travaillé au maximum avec des tables mémoire chargées par Ranges entiers plutôt que directement avec les cellules des tableaux structurés pour accélérer au mieux les traitements. Je ne sais pas ce que ça peut donner sur un tableau de 7000 lignes en temps de réponse.

Je n'ai fait quelques tests et je te laisse vérifier.

P.S. je ne sais pas trop à quoi sert le code que tu as mis en Workbook.

Edit: Fichier supprimé, voir plus loin
 
Dernière édition:

HamoudaBA

XLDnaute Occasionnel
J'ai quasi passé la journée d'hier et ce matin sur ce code.
La gestion / interception des modifications (ajouts/modifications/suppressions) dans une feuille (ou un tableau) est toujours très complexe. En plus il faut ici maintenir la cohérence entre 2 tableaux et reporter les modifs de l'un dans l'autre. C'est pas piqué des vers ! Comme on dit chez moi et ce n'est certainement pas maintenable par un développeur moyen malgré la pléthore de commentaires et les noms d'objets / variables / constantes auto-descriptifs.

J'ai travaillé au maximum avec des tables mémoire chargées par Ranges entiers plutôt que directement avec les cellules des tableaux structurés pour accélérer au mieux les traitements. Je ne sais pas ce que ça peut donner sur un tableau de 7000 lignes en temps de réponse.

Je n'ai fait quelques tests et je te laisse vérifier.

P.S. je ne sais pas trop à quoi sert le code que tu as mis en Workbook.
Bonjour,
Le code dans workbook sert à déclencher une alerte à l'ouverture du fichier pour avertir des date de reprises prevues pour moins de 15 et de 7 jours.
Quand au code que vous avez mis fonctionne avec une erreur,
1) En ajoutant un I.U dans "base" tout va bien jusqu'à ce que je renseigne la colonne H "MO", là une erreur s'affiche:
1611490974724.png

1611491000308.png

Alors une ligne est inserée dans la feuille MO (Colonne A, B,C), le reste des colonnes vide.
Une fois je retappe à nouveau la durée en colonne H "MO de la feuille base, alors la j'ai l'affichage dans la feuille MO Colonne E
 

HamoudaBA

XLDnaute Occasionnel
Bonjour,
Le code dans workbook sert à déclencher une alerte à l'ouverture du fichier pour avertir des date de reprises prevues pour moins de 15 et de 7 jours.
Quand au code que vous avez mis fonctionne avec une erreur,
1) En ajoutant un I.U dans "base" tout va bien jusqu'à ce que je renseigne la colonne H "MO", là une erreur s'affiche:
Regarde la pièce jointe 1092749
Regarde la pièce jointe 1092750
Alors une ligne est inserée dans la feuille MO (Colonne A, B,C), le reste des colonnes vide.
Une fois je retappe à nouveau la durée en colonne H "MO de la feuille base, alors la j'ai l'affichage dans la feuille MO Colonne E
Sinon la supression fonctionne merveilleusement bien.
 

Discussions similaires

Statistiques des forums

Discussions
315 135
Messages
2 116 623
Membres
112 815
dernier inscrit
Pierre43