Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Modifier une base de donnée

  • Initiateur de la discussion tomdesavoie
  • Date de début
T

tomdesavoie

Guest
Bonjour,

Cette base de données indique des numéros de pièces et plusieurs informations qui y sont rattachées.

Je voudrais faire que quand une même pièce (n°d'article en colonne A) est identique est produite à des cadences différentes (colonne E), je voudrais ajouter au numéro de la pièce (colonne A) "-1","-2" ou "-3" selon que le numéro d'opération (colonne C) soit du plus petit au plus grand.

Exple :
Pour la pièce numéro 5000364448; il y a 3 cadences différentes donc je voudrais que le numéro d'article 5000364448 dont le n° d'opération est le plus petit (020 dans ce cas donc ligne 55) devienne 500036448-1, que le deuxième (ligne 56) devienne 500036448-2,...

Merci de bien vouloir m'aider et bonne chance à tous!!
 

Pièces jointes

  • essai.zip
    17.5 KB · Affichages: 48
  • essai.zip
    17.5 KB · Affichages: 48
  • essai.zip
    17.5 KB · Affichages: 50
J

Jean-Marie

Guest
Bonsoir Tom

Si j'ai bien compris ton problème, essaye cette formules matricielles, à valider par Ctrl+Shift+Entrer.
=A2&"-"&EQUIV(CNUM(C2);PETITE.VALEUR(SI(A$2:A$90=A2;CNUM(C$2:C$90);A2);LIGNE(C$2:C$90)-1);0)

Cnum transforme tes valeurs texte de la colonne C en valeur numérique.

Une fonction matricielle créer en mémoire une "matrice", d'une longueur égale à la plage définie.
La première matrice "A" va contenir le résultat de la condition SI(A$2:A$90=A2;CNUM(C$2:C$90);A2).
Petite.Valeur va trier la matrice "A", la partie LIGNE(C$2:C$90)-1, va balayer toute les valeurs de la matrice "A", le résultat du tri sera mis dans une matrice "B".
La fonction Equiv qui retourne un index de positionnement de la valeur cherchée dans la matrice "B".

@+Jean-Marie
 
J

Jean-Marie

Guest
Bonjour Tom

Pour diminuer les temps de calcul, il faut que tu passes tes valeurs de la colonne C en numérique.

Avec un affichage de cellule personnalisé avec ce type 000, une valeur numérique 20 est affichée 020.

Pour transformer toutes tes valeurs de la colonne C
1) Tape 0 dans une cellule vide
2) Fait un copier de cette cellule
3) sélectionne la plage des valeurs C2:C90
4) Fait un collage spécial des valeurs avec une opération d'addition, valide
5) Sélectionne toute la colonne C
6) Change le format de la cellule, avec le format personnalisé 000

Dans la formule du premier post, tu supprimes les CNUM()
=A2&"-"&EQUIV(C2;PETITE.VALEUR(SI(A$2:A$90=A2;C$2:C$90;A2);LIGNE(C$2:C$90)-1);0)

@+Jean-Marie
 
J

Jean-Marie

Guest
Bonsoir Thomas

J'ai reçu un complément d'info sur ma bal

[/i]Cependant, il manque une condition à ta formule.
En effet, la formule que tu m'a donné rajoute systematiquement "-1","-2",... au numéro de la pièce or je voudrais que cette déclinaison de la pièce n'apparaissent que quand les cadences (colonne J) pour un même n° de pièce (colonne A) sont différentes et qui si elles sont identiques, que le numéro de la pièce ne change pas.

Pour être plus clair, un exemple :
NARTI LIBAR1 NUMOP PDECH TPSMAC TPSHOM FAMIL aide nbre de p/c cadence
0000137156 COUVERCLE NU 050 56880 0,226 0,679 292 2 1 265 3
0000137156 COUVERCLE NU 060 56671 0,226 0,679 292 2 2 265 3
Dans ce cas là, c'est la même pièce et les 2 opérations s'effectuent à la même cadence (265) donc je veux que le NARTI ne change pas et reste 000137156

5000365383 RAIDISSEUR TRANSVERS 035 56860 0,322 0,322 &211 SOVAB & 2 186 1
5000365383 RAIDISSEUR TRANSVERS 060 56671 0,181 0,273 &211 SOVAB & 2 331 2
Par contre, là les cadences sont différentes (186 et 331) donc je veux que le NARTI de la ligne dont le NUMOP (colonne C) est le plus petit devienne 5000365383-1 et la deuxième 5000365383-2,....[/i]

@+Jean-Marie
 
J

Jean-Marie

Guest
Bonsoir

J'espère te donner la bonne formule .... Tu me le diras

=A2&SI(SOMMEPROD((FREQUENCE(J$2:J$90*(A$2:A$90=A2);J$2:J$90*(A$2:A$90=A2))>0)*1)=2;"";"-"&EQUIV(CNUM(C2);PETITE.VALEUR(SI(A$2:A$90=A2;(C$2:C$90+0);A2);LIGNE(C$2:C$90)-1);0))

@+Jean-Marie
 
J

Jean-Marie

Guest
Bonsoir Thomas

Merci beaucoup car on approche vraiment du bout!!
EN fait, il ne reste plus qu'un petit bug!!

Quand j'ai plusieurs NUMOP pour un même NARTI et que les cadences sont différentes, ça rajoute -1,-2,-3.. à chaque NARTI alors qu'il peut y avoir que 2 cadences différentes et donc je voudrais que s'inscrive seulement -1 pour les NARTI dont les cadences sont identiques et -2, -3,.. pour les autres.

Exemple :
NARTI (en A) NUMOP (en C) cadence(en J)
000500365 030 260
000500365 050 260
000500365 060 260
000500365 070 300

Avec la dernière formule, ça me donne
000500365-1
000500365-2
000500365-3
000500365-4

alors que je voudrais
000500365-1
000500365-1
000500365-1
000500365-2


Formule corrigée :
=A2&SI(SOMMEPROD((FREQUENCE(J$2:J$90*(A$2:A$90=A2);J$2:J$90*(A$2:A$90=A2))>0)*1)=2;"";"-"&SOMMEPROD((FREQUENCE((J$2:J$90<J2)*(A$2:A$90=A2)*J$2:J$90;(J$2:J$90<J2)*(A$2:A$90=A2)*J$2:J$90)>0)*1))

@+Jean-Marie
 

Discussions similaires

Réponses
10
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…