Microsoft 365 Calcul d'une somme entre deux bornes Vba

Piment

XLDnaute Occasionnel
Bonjour à tous, Soan,
Je crée un nouveau fil de discussion car je n'ai pas eu d'aide sur mon précédent fil.
Avant tout, merci aux internautes qui ont eu la gentillesse de m'aider sur ce Forum, qui n'a pas son pareil.
Je fais appel à nouveau à vos compétences.
Ceux qui m'ont précédemment aidé sur ce fichier verront que je l'ai quelque peu fait évoluer.
Je pense être dans la dernière ligne droite.
Donc, voici ma difficulté:
Dans la feuille VentilationCouts, je voudrais que la colonne C 7 additionne les lignes se trouvant entre les deux zones vertes: additionne les dépenses de chaque "Cellule DGS" "Cellule Secrétariat..." ect...
Les Services additionnent toutes les "Cellules" qui sont à l'intérieur du Service: "Cellule DGS", "Cellule Secrétariat...", "Cellule Police..." ect.
Les Directions additionnent tous les services qui sont à l'intérieur de la Direction.
J'a beaucoup cherché, mais je n'y arrive pas.
J'ai une erreur #Nom? en C7 gérée par la ligne de code de la formule de calcul de l'USF Nouveau_Numero.
Je suis bloqué sur cette ligne de code, et donc pas beaucoup avancé.
Aussi, je serais heureux de pouvoir bénéficier d'une aide de la communauté.
Ci-joint le fichier.
Merci à vous.
 

Pièces jointes

  • 2021 Contrôle Facturation - Copie.xlsm
    276.8 KB · Affichages: 20

Piment

XLDnaute Occasionnel
Bonjour BrunoM45, Job75,tbft, le Forum
J'apporte une rectification à mon poste #15: Contrairement à ce que j'avais écrit, mon problème de tri n'était pas résolu. En effet le problème ne venait pas de la formule de calcul "LaForm2", mais d'une mauvaise sélection de la plage de tri:
VB:
Range(MaPremCel, MadernColTrie).Select
.
Je sèche toujours sur la manière de procéder pour arriver à calculer les montants pour les "Services".
Aussi, j'apprécierais énormément un coup de main.
Je vous souhaite une bonne journée.
Merci à vous.
 

ChTi160

XLDnaute Barbatruc
Bonjour Piment
je n'arrive pas dans ton fichier du post #16 à trouver la variable
"MadernColTrie" est ce normal ?
dans quelle procédure se trouve l'extrait que tu ss mis ?
VB:
Range(MaPremCel, MadernColTrie).Select
Merci
bonne journée
jean marie
 

Piment

XLDnaute Occasionnel
Bonjour Jean-Marie,
Merci beaucoup de m'accorder un peu de temps.
Je te mets en pièce jointe le fichier, en réponse à ton post.
Je rectifie mon post #16, j'ai toujours mon problème de tri.
Apparemment le problème vient bien de la formule de calcul LaForm2. Le problème risque d'être le même pour LaForm3 et LaForm4.
Si j'ai bien compris, il faudrait que la formule de calcul se fasse sur des référence relatives et non pas sur des références absolues. J'ai beaucoup essayé mais je n'y arrive pas.
Je sèche toujours sur le calcul des montants des "Services". Je ne sais comment lui dire d'additionner les Cellules du Service.
Merci de ton aide, j'apprécie.
 

Pièces jointes

  • 2022 Contrôle Facturation (5).xlsm
    234.8 KB · Affichages: 1

ChTi160

XLDnaute Barbatruc
Re
je ne comprends pas ce que tu veux faire , il faudrait que tu m'expliques quelle est la démarche que tu fais et qui t'amène a ton problème !
a partir de quel Userform
je ne suis pas sur de me faire comprendre !
merci par avance
jean marie
 

Piment

XLDnaute Occasionnel
Bonjour Jean-Marie,
Je t'explique:
Lorsque j'ai un nouvel agent à intégrer dans mon fichier, j'ouvre l'Usf "Ajouter Nouveau Numéro" dont la commande se trouve dans l'Usf "Menu" (Nouveau Numéro").
Lorsque je valide, les données entrées s'inscrivent dans le tableau de la feuille "Controle", et sont réparties dans la feuille "VentilationCouts" dans la Direction, le Service et la Cellule concernés.
Lors de l'intégration des données dans la cellule de la feuille "VentilationCouts", le montant du Mois est calculé (Zone Verte dans le tableau: C8, D8...): ligne de code: LaForm1.
La ligne de code LaForm2 doit lui calculer le total des montants de tous les Mois/Agent (cellule O8): c'est la somme de la plage, par exemple, C9:N9.
Le code LaForm3 calcul (cellule R9) en pourcentage le montant de ce que l'agent a consommé par rapport à un seuil fixé : 600,00€ ou 240,00€: Droits Ouverts (cellule P8). Ce montant 600€ ou 240€ s'inscrit automatiquement lors de l'intégration des données suite à sa saisi dans la feuille "Controle".
Le code LaForm4 lui fait le calcul sur les mêmes bases de ce qui reste à consommer en pourcentage (cellule S8).
Mon problème se situe sur la formule de calcul de LaForm2: cette formule de calcul pose problème lors du tri à l'intérieur du bloc "Cellule". Lors du classement il met correctement les noms, le numéro de téléphone associé, ainsi que les montants saisis, mais le total lié à l'agent lui ne bouge pas.
J'ai fini par comprendre que c'était lié au fait que dans le calcul, le signe $ est inséré, ce qui verrouille le calcul sur la zone initiale lors de l'intégration des données. La formule est donc en Référence Absolue.
Il faudrait qu'elle soit en Référence Relative.
J'ai énormément cherché, je n'ai pas réussi à le faire d'où mon appel au Forum.
Probablement qu'il faudra aussi mettre les autres calculs en Référence Relative (LaForm3 et LaForm4).
Dans l'absolue, lorsque le tri se fera, les calculs ne poseront plus de problème.
Mon deuxième souci consiste à faire les calculs par Services (C7). Cette cellule (C7) doit être la somme des cellules faisant parties du service: exemple "Service Direction Général": somme de C8, C10, C12, C14, C16, C20.
Même principe pour les "Directions".
La méthode serait que lorsqu'un agent est intégré dans le tableau, au même titre qu'il cherche la cellule pour l'intégrer les formules se calculent, qu'il cherche le "Service" concerné: le calcul sur le service se fasse, qu'il cherche la "Direction" et le calcul sur la Direction se fasse.
J'espère ne pas avoir été trop brouillon dans mes explications.
Jean-Marie merci beaucoup pour ton aide.
 

ChTi160

XLDnaute Barbatruc
Bonjour Piment
merci de tes explications
j'ai tenté de Comprendre en jouant de la Touche F8 Lol
mais je n'arrive toujours pas a comprendre à visualiser le problème !
je ne comprends pas cette histoire de Trie !
si une colonne n'est pas prise en compte lors d'un tri , c'est quelle n'est pas incluse dans la Plage qui doit être triée !
après l'ajout d'un nouveau Numéro , comment entres tu des chiffres dans les colonnes Mois
je regarderai à nouveau ce soir
Bonne journée
jean marie
 
Dernière édition:

Piment

XLDnaute Occasionnel
Jean_Marie,
Le problème qui se posait lors du tri était que, dans la formule de calcul les cellules étaient "verrouillés" par le symbole $, le tri ne s'effectuait pas correctement.
Pourque tu comprennes ce qui se passait:
Tout d'abord vas dans le module Nouveau_Numero, cherche la ligne de code LaForm2 et modifie-la ainsi:
VB:
LaForm2 = "=SOMME(" & Range(Cells(MaPrLigne, MaPremCol), Cells(MaPrLigne, MadernColCalcul)).Address(1, 0) & ")"
Ensuite:
1) Supprime la Ligne ABRIEL Henri dans la feuille "Controle" et "VentilationCouts",
2) Ouvre l'Usf "Nouveau Numéro" saisi les données : 0692 99 99 99 ZABRIEL Henri, Directions: choisi Direction Générale des Services, Services: Service Direction Générale des Services, Cellules: Cellule police Municipale, Montant Droits ouverts: 600.00 et valide.
Vas alors sur la feuille "Ventilation Couts" et regarde ce qui s'est passé dans la cellule Police Municipale.
Click sur la cellule O13. Le calcul se fait sur de Références Absolues.
Du coup lors du tri il reclasse le numéro de téléphone, le nom, les cellule C à N, mais pas le reste.
ZABRIEL se retrouve avec une cellule vide qui correspond en faites à la dernière donnée avant la validation du nouveau numéro. Pour rappel le nouveau numéro s'insère juste après la zone "Cellule Police Municipale"
Pour corriger ce beug, il faut que les calculs LaForm2, Laform3, Laform4 se fassent avec des Références Relatives.
C'est ce que je cherchais à faire.
Aussi, , j'ai fini par comprendre ce qu'il fallait faire: la formule de calcul est bonne, mais pour éviter que le calcul se fasse sur des Références Absolues qui entraine un mauvais tri, il faut rajouter False par deux fois dans le .Address
Pour ceux que cela pourrait intéresser voici la formule de calcul:
Code:
LaForm2 = "=SOMME(" & Range(Cells(MaPrLigne, MaPremCol), Cells(MaPrLigne, MadernColCalcul)).Address(False, False) & ")"
Ainsi, le calcul se fait sur des Références Relatives, ce qui ne pose plus aucun problème pour le tri!
Au sujet de ta deuxième question, les consommations sont saisi à l'aide de l'Usf "Modifier ou Ajouter des Dépenses Mensuelles".
L'Usf "Modifier Affectation" permet si un agent est muté dans une autre cellule ou service d'extraire les données et l'intégrer dans sa nouvelle cellule ou Service (Il supprime les données dans l'ancienne affectation.)
Par contre je sèche toujours pour les calculs des Services. Je ne sais pas comment lui dire de faire la somme des cellules qui sont dans le Service.
Je joint le fichier rectifié.
Merci à toi pour l'attention que tu porte à mon projet.
Je reste dans l'attente d'une solution pour les calculs des services. Je continu à chercher de mon coté!
 

Pièces jointes

  • 2022 Contrôle Facturation (5) (1) (1).xlsm
    250.1 KB · Affichages: 3

Piment

XLDnaute Occasionnel
Jean-Marie, BrunoM45, Le Forum bonjour,
Je reviens vers vous car je n'ai toujours pas réussi à résoudre mon problème de calcul pour les Services.
J'en arrive à penser que ce que je souhaite faire n'est pas réalisable.
En même temps je me dis que ce n'est pas possible: il doit forcément y avoir une solution. Mais laquelle?
Je ne sais absolument pas par quel bout le prendre!
Aussi, si d'aventure quelqu'un saurait faire, je suis preneur.
Merci d'avance.
Bonne journée à tous.
 

Piment

XLDnaute Occasionnel
Bonjour Jean-Marie,
Ce que je cherche à faire, est la somme des cellules qui sont dans le Service.
La cellule C6 doit faire la somme des cellules: C7,C11,C13,C18,C20 et C55.
La cellule C58 doit faire la somme de C59.
En un mot , la cellule qui se trouve après la Cellule Service (colonne C.... ) doit faire le calcul des cellules (Vertes) se trouvant dans le Service.
Le même calcul doit se faire pour tous les mois: C à N. (sur la même ligne).
En gros la cellule C (Couleur bleu) doit faire la somme de toutes les cellules (Couleurs Vertes) qui se trouvent entre 2 services.
Si je n'ai pas été assez clair dans mes explications je reste à ta disposition pour essayer d'être plus précis.
Le même principe sera appliqué pour les Directions qui devra faire le calcul de tous les services se trouvant entre 2 Directions.
Ton post me redonne quelques espoirs.
En tout cas merci beaucoup pour ton aide.
 

Piment

XLDnaute Occasionnel
Bonjour le Forum,
Je me permets de revenir vers vous car je n'ai reçu aucune aide afin de résoudre le problème soulevé dans mon dernier post.
Je continu désespérément à chercher, mais sans succès.
J'ai cherché à utiliser la méthode "Parent", utilisé par Job75 pour effectuer la somme par couleurs, mais sans succès.
Je n'ai pas trouvé grand chose sur les Forums concernant ce principe de "Parent".
Aussi, si quelqu'un a une idée, merci de me répondre.
Je pourrais faire simple, en faisant les calculs directement sur la feuille Excel, mais j'aurais voulu que ces calculs se fassent directement par VBA, pour ne plus avoir à faire aucune intervention manuelle.
C'est la dernière étape, et je n'ai pas de solution. C'est frustrant!
Dans tous les cas, Merci à tous ceux qui m'ont aidé.
 

ChTi160

XLDnaute Barbatruc
Bonjour
Bonjour le Fil ,le Forum

une autre question tu mets :
Ce que je cherche à faire, est la somme des cellules qui sont dans le Service.
La cellule C6 doit faire la somme des cellules: C7,C11,C13,C18,C20 et C55.
La cellule C58 doit faire la somme de C59.
mais ces plages comme dans "Service" sont elles fixent ou des lignes peuvent elles venir s'ajouter ?
Bonne journée
jean marie
 

Piment

XLDnaute Occasionnel
Bonjour
Bonjour le Fil ,le Forum

une autre question tu mets :

mais ces plages comme dans "Service" sont elles fixent ou des lignes peuvent elles venir s'ajouter ?
Bonne journée
jean marie
Bonjour Jean-Marie,
Heureux de voir que tu est toujours à mes cotés.
En effet, des lignes peuvent être rajoutées. Elles seront intégrées par le biais du bouton" Nouveau Numéro" de la Boite de dialogue "Menu". Le nouveau numéro s'intégrera dans la cellule choisie.
Plus précisément:
Le "Service Direction Générale des Services" contient 6 "Cellules": "Cellule DGS", "Cellule Secrétariat du Maire"..... C7 doit faire la somme des montants des "Cellule DGS", "Cellule Secrétariat du Maire".....
Chaque bloc bleu doit faire la somme des blocs verts placés entre deux blocs bleus.
Idem pour les Directions: chaque "Directions" doit faire la sommes des blocs bleus entre deux blocs de Directions: le Marron doit faire la somme de tous les blocs bleus qui se trouve entre deux blocs Marrons.
Lors de l'ajout d'un nouveau numéro dans les "Cellules", les références des cellules vont obligatoirement bouger.
J'espère avoir été un peu plus clair sur mon besoin.
N'hésite pas à demander des précisions si besoin.
Gros Merci à toi.
 

Piment

XLDnaute Occasionnel
Bonjour Jean-Marie,
Si, on pourrait travailler à partir des Numéros de la colonne A. Pour cela, j'ai modifié la nomenclature afin d'éviter les doublons.
Je te mets en pièce jointe le nouveau fichier.
Comme tu pourras le constater, j'ai encore fait évoluer mon fichier avec 2 nouvelles feuilles pour gérer les Retours et les Sorties du matériel.
Dans l'absolu, j'arrive à terme de mon projet, dès lors que les problèmes de calcul des Services et des Directions seront résolus.
Un énorme merci pour ton aide.
 

Pièces jointes

  • 2022 Contrôle Facturation Fichier de travail 1.xlsm
    258.7 KB · Affichages: 1

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 156
Membres
112 672
dernier inscrit
djudju