Additionner des codes de ce type : XX_YY_ZZ + XX_YY_ZZ

pap

XLDnaute Nouveau
Bonjour,

J'aurai besoin d'un regard extérieur pour trouver une solution de calcul dans un tableau excel (plusieurs milliers de lignes et plusieurs dizaines de colonnes...

Alors voilà, j'ai un grand tableau excel qui regroupe une grande quantité de zones géographiques (on peut imaginer que les zones géographique soient des communes en France).
Sur chaque zone je peux avoir entre 1 et n élément(s) que j'ai qualifié avec un code.
Pour reprendre notre exemple des communes on pourrait dire que sur une commune je peux avoir entre 1 et n usines (1 usine = 1 élément).
Donc sur une commune je peux avoir entre 1 et n usine(s).
Pour chaque usine je dois attribuer une qualification environnementale (un code) qui doit rendre compte quantitativement et qualitativement du risque de pollution évalué sur 3 niveaux :

Le code est de la forme XX_YY_ZZ

Niveau 3 : risque élevé, la première partie du code (XX) en partant de la gauche

Niveau 2 : risque modéré, la partie centrale du code (YY)

Niveau 3 : risque faible, la partie à droite du code (ZZ)

Chaque partie du code permet d'évaluer la "quantité de risque" par niveau.

Le code doit ainsi exposer une vision qualitative et quantitative du risque.

Le code est rempli ainsi : une inspection d'une usine va permettre de relever tous les points pouvant engendrer un risque potentiel.
Imaginons que nous avons relever 10 points en tout avec la répartition qualitative suivante :

1 points relevant du risque élevé (niveau 3)
5 points relevant du risque modéré (niveau 2)
4 points relevant du risque faible (niveau 1)

Le code résultant pour cette usine serai donc : 01_05_04

Voici quelques exemples de codes possibles :

05_00_00 : une usine ne présentant que 5 points de risque mais tous avec le niveau max (niveau 3)

02_01_38 : une usine avec pas mal de points de risque, 3 en niveau max (niveau 3), 1 seule en niveau modéré (niveau 2) et 38 points dans le niveau le plus faible, le niveau 1

00_01_00 : une usine avec un seul point relevé, un seul risque modéré (niveau 2)

00_00_00 : une usine avec aucun point de risque particulier

L'idée, c'est qu'avec une liste de codes ainsi construit, on puisse faire un tri hiérarchisé dans excel très simplement ; le plus à risque en haut, le moins à risque en bas par exemple :
5_10_00
5_01_00
5_00_88
5_00_02
2_81_00
2_01_92
1_00_38
1_00_00
0_01_00
0_00_90
0_00_00


Mon objectif et de réaliser une carte de France (une carte des communes) du risque environnementale.
C'est à dire que je dois donner une valeur de risque à chaque commune avant de la cartographier pour obtenir en final une carte avec par exemple un dégradé de couleur allant du vert (risque inexistant) au noir (risque élevé).

Sur une commune, si j'ai plusieurs usines je vais avoir plusieurs codes à combiner.

On va considérer que les risques de même niveau se cumulent (s’additionnent)

Le petit tableau joint montre ce que je veux obtenir.

Chaque ligne correspond à une commune.
Ce que je veux, c'est trouver pour la colonne la plus à droite une formule de calcul dans excel qui me permette d'additionner toutes les cellules de la ligne en gardant le format de mon code !

Par exemple c'est d’additionner 05_00_00 avec 05_00_01 pour obtenir 10_00_01

Infos complémentaires : théoriquement dans mon travail chaque partie du code ne devrait pas dépasser 99 (théoriquement...) mais on va considérer que les choses doivent rester ouvertes et non bornées (donc de 1 à 999999....) !

MERCI de votre AIDE !
 

Pièces jointes

  • ESSAIS.xlsx
    9.9 KB · Affichages: 45
  • ESSAIS.xlsx
    9.9 KB · Affichages: 49
  • ESSAIS.xlsx
    9.9 KB · Affichages: 52

pierrejean

XLDnaute Barbatruc
Re : Additionner des codes de ce type : XX_YY_ZZ + XX_YY_ZZ

Re

@ Modeste

Voir # 8 :

oui, je connais bien le problème, mais ça ne posera pas trop de soucis pour la suite car le tableau excel sera ensuite importé dans un SIG (Système d'Information Géographique) à partir duquel je vais réaliser mes hiérarchisations qui seront cartographiques.
 

stephsteph

XLDnaute Occasionnel
Re : Additionner des codes de ce type : XX_YY_ZZ + XX_YY_ZZ

Un apparte, excusez-moi, pour toutes mes amitiés à Pierre Jean que je n'avais pas aperçu depuis longtemps (ou que le manque de chance m'avait empêché de rencontrer depuis longtemps) sur le forum.
Tout baigne, c'est un sacré bon forum.
Je suis toujours lente, hélas, cela doit être une question de cerveau gauche!
Steph
 

pap

XLDnaute Nouveau
Re : Additionner des codes de ce type : XX_YY_ZZ + XX_YY_ZZ

Bonsour®
pourquoi dans ce cas ne pas toujours utiliser uniquement un codage :
XXX_YYY_ZZZ

et un format personnalisé
000"_"000"_"000
Regarde la pièce jointe 323072

ma proposition pour les calculs et tris restent "standards" !!!
sans complication ni VBA ...:rolleyes:

Hello,

Théoriquement les cumuls ne devraient pas dépasser un nombre à deux chiffres... mais peut-être qu'exceptionnellement je pourrais avoir un nombre à 3 chiffres.
Donc le formatage XX_YY_ZZ "ouvert" sera plus lisible.
Le format personnalisé seul ne suffit pas pour ce que je cherche à faire, à savoir un cumul de plusieurs codes dans une seule colonne et en limitant idéalement les calculs intermédiaires affichés dans des colonnes.
La proposition de modeste me plait bien ... car tout est fait dans une seule colonne avec en sortie un code final formaté comme je le souhaite et qui reste néanmoins ouvert dans chaque partie pour passer de XX à XXX par exemple si besoin.
 

pap

XLDnaute Nouveau
Re : Additionner des codes de ce type : XX_YY_ZZ + XX_YY_ZZ

Bonjour pap et bienvenue,

Peut-être avec une fonction personnalisée (si j'ai bien compris!?)

[Edit:] bing et re-bing! Salut CISCO et pierrejean :D

Salut Modeste,

J'ai fait un test grandeur nature avec ta macro dans un de mes tableaux.
Ca fonctionne nickel.
Seul petit point qui bug : je n'arrive pas à faire une somme avec ta macro à partir d'une sélection manuelle de cellules à cumuler.

Par exemple, si je fais une somme en cliquant sur la première cellule (A1) et en "tirant" jusqu'à la dernière cellule souhaitée (A20) pour obtenir : =sommeRisques(A1:A20) alors ça fonctionne bien.

Par contre, si je fais une sélection manuelle, par exemple =sommeRisques(A3;A9:A12;A15:A20) et bien ça bug !

Si tu as une idée pour résoudre ça, je suis preneur.

Merci

PAP
 

Modeste geedee

XLDnaute Barbatruc
Re : Additionner des codes de ce type : XX_YY_ZZ + XX_YY_ZZ

Bonsour
Citation Envoyé par Modeste Voir le message

Bonjour pap et bienvenue,

Peut-être avec une fonction personnalisée (si j'ai bien compris!?)

[Edit:] bing et re-bing! Salut CISCO et pierrejean

Oupssss ????
il n'y a pas de macro dans ma proposition ... Capture.JPG
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    64.1 KB · Affichages: 55
  • Capture.JPG
    Capture.JPG
    64.1 KB · Affichages: 56
  • additionner-codes-type-xxx_yyy_zzz.xlsx
    19.4 KB · Affichages: 29

pap

XLDnaute Nouveau
Re : Additionner des codes de ce type : XX_YY_ZZ + XX_YY_ZZ

Bonsour

Oupssss ????
il n'y a pas de macro dans ma proposition ... Regarde la pièce jointe 323123

Hello modeste geedee,

Merci pour ta proposition.
J'ai fait quelques tests avec ta solution, elle semble bien fonctionner mais elle ne remplis pas totalement mon cahier des charges comme peuvent le faire les propositions de modeste ou de pierrejean.
Je retiens néanmoins quelques astuces dans ta proposition qui pourront m'aider pour d'autres manipes.

Merci de ton aide.

PAP
 

pap

XLDnaute Nouveau
Re : Additionner des codes de ce type : XX_YY_ZZ + XX_YY_ZZ

Re

Version de ma fonction personnalisée acceptant la somme supérieure à 99


Hello pierrejean,

J'ai testé ta nouvelle version et elle semble répondre à mon cahier des charges.
Ta proposition et celle de modeste fonctionnent bien, sauf sur un point !
En effet, si je fais une sélection manuelle des cellules que je souhaite cumuler et bien ça bug !
Enn effet, si je fais une sélection en cliquant sur la première cellule à cumuler et que j'étire ma sélection jusqu'à la dernière cellule que je souhaite cumuler, tout fonctionne parfaitement (exemple de formule : =sommespéciale(A1:W1) )
Par contre, si je fais une sélection manuelle de manière à choisir que certaines cellules que je souhaite cumuler comme par exemple =sommespéciale(A1;D1;H1;K1:p1;S1:W1) et bien ça ne fonctionne pas et j'obtiens cette erreur : #VALEUR!

Pour choisir la solution que j'utiliserais, je ne connais pas le VBA et donc je ne suis pas capable ni d'avoir un regard critique sur la programmation de modeste et sur la tienne et surtout je ne suis pas capable de juger de vos deux propositions celle qui est la plus robuste.
Mais tu arrives à résoudre le problème exposé plus haut concernant la somme sélective, je pense que je retiendrais ta proposition pour mon travail en cours.

Dans l'attente de ton retour.

Et encore merci de ton aide.

PAP
 

Modeste geedee

XLDnaute Barbatruc
Re : Additionner des codes de ce type : XX_YY_ZZ + XX_YY_ZZ

Bonsour®
:mad:
si tu nous mettais un extrait (copie de la feuille en question dans un fichier Excel)
nous pourrions au-moins essayer de comprendre pourquoi nos solutions ne sont pas à la hauteur de ton cahier des charges...

à-priori moi j'ai rien dans (A1;D1;H1;K1:p1;S1:W1)
ma proposition Lien supprimé
fonctionne avec des cellules distinctes (les cellules concernées sont au format proposé 000"_"000"_"000)
je ne connais pas le VBA et donc je ne suis pas capable ni d'avoir un regard critique sur la programmation
ma proposition est sans VBA
et utilise des calculs standard
grâce au format 000"_"000"_"000"
et est compatible avec les tris
 

Pièces jointes

  • additionner-des-codes-de-ce-type-xxx_yyy_zzz-xxx_yyy_zzz-essais.xlsx
    15.5 KB · Affichages: 10
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Additionner des codes de ce type : XX_YY_ZZ + XX_YY_ZZ

Re

Voici ma somme spéciale adaptée pour recevoir cellules et groupes de cellules distincts
La Fonction d'origine de Modeste était strictement équivalente à ma 1ere version
 

Pièces jointes

  • ESSAIS.xlsm
    17.8 KB · Affichages: 14
  • ESSAIS.xlsm
    17.8 KB · Affichages: 16
  • ESSAIS.xlsm
    17.8 KB · Affichages: 13

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 182
Membres
112 677
dernier inscrit
Justine11