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

Incrémentation spéciale

  • Initiateur de la discussion Initiateur de la discussion Kayl
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

K

Kayl

Guest
Bonjour/soir

alors voilà, je voudrais remplir automatiquement un tableau excel avec des valeurs un peu tordues
en fait je voudrais pouvoir partir d'une référence P-1-T000A à P-1-T033H en incrémentant le 000 de 1 à chaque fois que j'arrive à H (T001A T001B... T001H T010A T010B...) je pense qu'il faut déj)à virer le P-1-T puisqu'il est fixe on peut le concaténer par la suite et il faut traiter les unités séparément car je ne veux pas dépasser 5 (quand on arrive à T005 on passe à T010, puis à T0015 on va à T020....

Pour corser le tout je voudrais avec une autre fonction, faire le même genre de traitement mais uniquement pour des unités qui se suivent comme ça 0, 2, 5, 0, 2, 5...

Si vous pouviez m'aider ça serait le pied
 
Re : Incrémentation spéciale

Bonsoir et bienvenue sur XLD

Aide nous à t'aider
Mets la main à la pate
En créant un fichier exemple.
Ce n'est pas à nous de le faire, non ?

PS: oui je sais , c'est un accueil un peu rude, mais fallait lire la charte du forum avant de poster Monsieur Kyle
(Ah non là je confonds avec Jarod )
 
Re : Incrémentation spéciale

Bonsoir et bienvenue sur XLD
PS: oui je sais , c'est un accueil un peu rude, mais fallait lire la charte du forum

Oui certes c'est vrai que comme accueil j'ai vu mieux, mais bon c'est vrai que j'ai été light... d'un autre côté je suis tellement nul que je me tape le remplissage à la main...
d'ailleurs je veux pas remplir le tableau mais une colonne du tableau...

alors je continue un peu et je reviens vers vous
 
Re : Incrémentation spéciale

Voilà, alors tu a très bienfait de me rappeller à l'ordre parce qu'en plus j'ai mal expliquer le problème... puisque j'ai oublier une condition à la 2eme partie, à savoir que je ne vais plus jusqu'à H mais jusqu'à F.
Cependant, comme vous pourrez le voir dans le fichier, je reprends les numéro depuis la fin de la série en H

Vous occupez pas des couleurs c'était juste que pour taper à la main histoire de pas me mélanger les pinceaux.

Désolé si j'explique mal mon problème... je sais ça vous aide pas.

Et bien sûr je me plante de version... c'est corrigé
 

Pièces jointes

Dernière modification par un modérateur:
Re : Incrémentation spéciale

Bonsoir,

Je tente un truc, mais faute d'avoir compris les explications (que je n'ai pas trouvées), pas évident ... :

en B2 :

Code:
="P-1-T"&TEXTE(ENT(ENT(LIGNE()-2)/48)*10+MOD(ENT((LIGNE()-2)/8);6);"000")&CAR(
MOD(LIGNE()-2;8)+65)
à recopier vers le bas

Si pas ça, reviens avec plus de détails et explications.

@+
 
Re : Incrémentation spéciale

Merci Tibo, ça marche super pour la première partie

Par contre j'aimerais qu'on m'explique un peu cette formule, parce que j'aime pas bêtement recopier, si je comprends pas autant rien faire, donc si vous connaissez un bon lien pour avoir des explications, histoire que je m'instruise sans vous em***der ou si quelqu'un a le temps de m'expliquer par mp ou ici même ça serait sympa.
Je pense que si je comprends cete formule je devrais pouvoir faire la deuxième sans trop de problème (enfin faut le dire vite, mais j'aurais une chance d'y arriver)

Encore un gros merci Tibo

EDIT

Bon alors, en réfléchissant un peu j'ai compris le pourquoi de certaines valeurs, le 65 c'est par rapport au nombre de caractère ASCII c'est ça ?
les -2 c'est parce que le tableau commence à la seconde ligne, c'est en quelques sorte pour "décaler" le calcul le /8 c'est parce qu'on va de A à H, le ;6 c'est parce qu'on va de 0 à 5 le "000" c'est tout bêtement le point de départ par contre les " /48)*10 " j'avoue que je sèche un peu, voire beaucoup......

Ensuite il y a un problème pour la seconde formule, j'ai bien compris qu'en remplaçant simplement les /8 par /6 j'irai plus que jusqu'à F, le problème c'est que je ne veux pas les chiffres de xx0 à xx5 mais pour une même dizaine je veux uniquement les xx0, xx2, xx5, comme en bas de mon tableau donc si je commence à 100 j'aurais :
P-1-T100A
P-1-T100B
P-1-T100C
P-1-T100D
P-1-T100E
P-1-T100F
P-1-T102A
P-1-T102B
P-1-T102C
P-1-T102D
P-1-T102E
P-1-T102F
P-1-T105A
P-1-T105B
P-1-T105C
P-1-T105D
P-1-T105E
P-1-T105F
P-1-T110A ... ... ...

En gros y -a-t-il un myen de sauter des nombres tout en conservant ta superbe formule... (j'en reviens pas à quelle vitesse tu m'a pondu un truc qui marche aussi bien, encore merci)

EDIT 2

Je viens de voir la fonction "substitute", en modifiant la superbe formule de Tibo j'obtiens :

="P-1-T"&TEXTE(ENT(ENT(LIGNE()-2)/18)*10+MOD(ENT((LIGNE()-2)/6);3);"100")&CAR(
MOD(LIGNE()-2;3)+65)

ça me donne presque ce que je veux à l'exception près que cela ne tiens pas compte de la règle du 0, 2, 5.

Donc ma question est :

Est-il possible d'inclure dans la formule de Tibo la fonction substitute pour qu'elle remplace le dernier chiffre (avant-dernier caractère donc) par 2 si c'est 1 et 5 si c'est 2 (le 0 ne changeant pas) ? Cela risque t il de poser un problème de redondance et de me remplacer le 2 qui remplace déjà un 1 par un 5, me laissant ainsi avec une liste du genre :

P-1-T100A
P-1-T100B
P-1-T100C
P-1-T100D
P-1-T100E
P-1-T100F
P-1-T105A
P-1-T105B
P-1-T105C
P-1-T105D
P-1-T105E
P-1-T105F
P-1-T105A
P-1-T105B
P-1-T105C
P-1-T105D
P-1-T105E
P-1-T105F
P-1-T110A ... ...

J'essaie de tester mais je dois dire que je m'y prends comme un manche car excel n'accepte pas mes formules (mais ça ça m'étonne pas trop...)

Merci
 
Dernière modification par un modérateur:
Re : Incrémentation spéciale

Bon ben j'ai du mal là... si quelqu'un a une idée je suis preneur.

en fait je crois qu'il faut utiliser les fonction stxt pour trouver l'avant dernier caractère puis le remplacer par 2 ou 5 selonqu'il s'agit d'un 1 ou d'un 2, mais je ne vois absolument pas comment imbriquer ce bazar.

Evidemment il se peut que je me fourvoie complètement auquel cas je suis dans la m****

Edit

est-ce qu'il serait possible d'utiliser une macro par dessus la formule, qui rechercherait l'avant-dernier caractère pour le remplacer par un 2 si c'est un 1 et un 5 si c'est un 2 ?
Merci
 
Dernière modification par un modérateur:
Re : Incrémentation spéciale

Bonsoir,


Je vois que tu as bien décrypté la formule proposée hier soir.

Le 65 : correspond effectivement au code ASCCI de la lettre A

-2 : ok, rien à ajouter

le /8 : ok, rien à ajouter

le /48 * 10 : on a 6 chiffres (de 0 à 5) x 8 lettres, donc 48 lignes par dizaine

le "000" : il s'agit d'un format personnalisé pour que les nombres soient complétés par des zéros à gauche pour toujours faire 3 caractères.


Pour ton deuxième problème, cette deuxième numérotation doit commencer à partir de quelle ligne (ou référence) ?

A partir de P-1-T060A ?

ou on repart de la ligne 2 ?

A te (re)lire

@+
 
Re : Incrémentation spéciale

re,

Tentative dans l'hypothèse où cette deuxième formule débuterait en B2 (ou ailleurs en ligne 2) :

Code:
="P-1-T1"&TEXTE(ENT(ENT(LIGNE()-2)/18)*10+ARRONDI(ENT(E2)*2.4;0);"00")&CAR(MOD(
LIGNE()-2;6)+65)
à recopier vers le bas

Je te laisse tester en grand

@+

Edit : Petite correction pour gérer le passage des centaines :

Code:
="P-1-T"&TEXTE(ENT(ENT(LIGNE()-2)/18)*10+ARRONDI(ENT(E2)*2.4;0)+100;"000")&CAR(
MOD(LIGNE()-2;6)+65)
@+
 
Dernière édition:
Re : Incrémentation spéciale

Bonjour,

Je n'avais pas fait attention hier que la formule proposée faisait référence au contenu d'une autre cellule (E2).

Version complète cette fois en B2 :

Code:
="P-1-T"&TEXTE(ENT(ENT(LIGNE()-2)/18)*10+ARRONDI(ENT(MOD(LIGNE()-2;18)/6)*2.4;0)
+100;"000")&CAR(MOD(LIGNE()-2;6)+65)

à recopier vers le bas.

@+
 
Re : Incrémentation spéciale

Nom de bleu...

Mais comment tu fais pour trouver des formules pareilles ? franchement ça me laisse sur le c**

Par contre je vais solliciter une dernière fois tes connaissances. D'une part, comment faire pour repartir de fin de la série précédente (donc 060A) ? et surtout d'où tu sors ce 2.4 ?

Merci encore mille fois merci, c'est juste génial d'avoir des gens qui prennent le temps de t'expliquer ^^

EDIT

au temps pour moi, il sufit de remplacer le +100 par -100 pour repartir sur la suite de chiffre, mais je suis toujours preneur pour l'explication du 2,4. Je pense que ça joue sur le passage 0 2 5 mais comment ?
 
Dernière modification par un modérateur:
Re : Incrémentation spéciale

re,

Petite tentative d'explication :

Il faut isoler cette partie de la formule :

=ARRONDI(ENT(MOD(LIGNE()-2;18)/6)*2.4;0)

Dans cette formule, si on isole :

=ENT(MOD(LIGNE()-2;18)/6)

que l'on recopie vers le bas, on obtient une série de 0, puis de 1, puis de 2 et on recommence à 0

Or, il faut obtenir à partir de cette formule une série de 0, 2, 5, 0, ...

J'ai cherché par quoi multiplier et c'est ainsi que j'ai vu qu'en multipliant par 2.4 et en appliquant un arrondi à 0 décimale, on obtient le résultat souhaité (en fait, il faut une valeur entre 2.26 et 2.49 et j'ai mis 2.4 par simplification).

Cela dit, il m'a fallu quand même un peu de temps pour trouver cette solution.


Sinon, pour renuméroter à partir de 060A avec la deuxième règle, le plus simple est de faire un test sur le n° de ligne, ce qui donne en B2 :

Code:
=SI(LIGNE()<298;"P-1-T"&TEXTE(ENT(ENT(LIGNE()-2)/48)*10+MOD(ENT((LIGNE()-2)/8);
6);"000")&CAR(MOD(LIGNE()-2;8)+65);"P-1-T"&TEXTE(ENT(ENT(LIGNE()-4)/18)*10+
ARRONDI(ENT(MOD(LIGNE()-2;18)/6)*2.4;0)+100;"000")&CAR(MOD(LIGNE()-4;6)+65))

à recopier vers le bas

@+
 
Re : Incrémentation spéciale

Salut Tibo,

Pour le "fun", j'ai cherché d'autres solutions pour l'arrondi.

Voici ce que j'ai trouvé :
=PLANCHER(A1*2.5;1)
=ENT(A1*2.5)

La dernière étant la plus courte, c'est celle qui a ma préférence.
N'empêche que ton idée de multiplication est à retenir.
 
Re : Incrémentation spéciale

Merci beaucoup Tibo.

J'ai légèrement modifier ta formule parce que la numérotation ne changeait pas au bon endroit, mais tu n'y ai pas pour grand chose vu mes explications. En plus je vais pas me plaindre puisque non seulement tu m'aides (me mâche le travail devrais-je dire) mais en plus tu m'expliques. Merci encore.

Donc en gros ça donne ça :

Code:
=SI(LIGNE()<290;"P-1-T"&TEXTE(ENT(ENT(LIGNE()-2)/48)*10+MOD(ENT((LIGNE()-2)/8);
6);"000")&CAR(MOD(LIGNE()-2;8)+65);"P-1-T"&TEXTE(ENT(ENT(LIGNE()-2)/18)*10+
ARRONDI(ENT(MOD(LIGNE()-2;18)/6)*2,4;0)-100;"000")&CAR(MOD(LIGNE()-2;6)+65))

@Hoerwind :

Merci de vouloir raccourcir la formule mais tes propositions font référence à une case vide de mon tableau, de plus les référence dépendent de la case du dessus, pâs d'une case vide. ne m'y connaissant pas assez pour me servir des fonctions que tu me donnes je ne peux qu'essayer de m'atteler à leur trouver une place pour le moment. Mais merci, de l'optimisation ça peut pas faire de mal.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…