Bonjour,

Actuellement sur la création d'un espace d'administration pour gérer mes clients je suis à la recherche d'un système efficace pour gérer les numéros de ces clients.

Ce que je veux

Le formatage que j'ai prévu pour le numéro du client est le suivant :

AA-000
Soit :
ANNEE - Numéro de 001 à 999 (Réprésentant le numéro du client dans l'année)

Plus concretement à chaque nouvel enregistrement d'un client, je souhaite que le numéro s'incrémente ainsi :

17-001 (Client 1 de 2017)
17-002 (Client 2 de 2017)
17-003 (...)
......
17-038
17-039
17-040
....
Nouvelle année
(Le compteur reprend à zéro)
....
18-001 (Client 1 de 2018)
18-002 (Client 2 de 2018)
18-003 (...)
......
18-038
etc.. etc.. pour chaque année.

Si je fais appel à vous c'est que j'aimerai savoir quel solution vous pourriez me conseiller et si possible me diriger sur une piste. J'ai pour idée de faire ceci avec l'id du client mais sa me parait compliqué.

Je m'explique :

L'année est facile à récupérer, mais c'est le reste qui pose problème. Je souhaite faire un autoincrement de cette facon : 001, 002, 003..., 024, 025.. etc.. Vous comprenez l'idée ? Avec 1 ou deux zero devant. Es possible ? De plus, si cela est possible il faudra que chaque année le compteur se remette à zéro pour la nouvelle année. 17-001, 17-002... (pour cette année), lorsque l'on passera 2018, les deux premiers chiffres seront naturellement 18 et la suite : 001, 002, 003 (on reprend à zero) etc... pour 2019, 2020...

J'espère avoir été assez clair, pas evident à expliquer !

Je remercie vivement d'avance celui ou celle qui pourra m'aiguiller un peu, car c'est fondamentale pour la suite de ma strucutre.

MERCI A VOUS :) :)

64 réponses


Pierrot01
Réponse acceptée

Bonjour

DELIMITER //
CREATE 
    DEFINER = 'pierre'@'%'
TRIGGER prostand_profil.clientx_b_i
    BEFORE INSERT
    ON prostand_profil.clientsx
    FOR EACH ROW
BEGIN
    DECLARE annee       char(2) ; -- default '17';
    DECLARE id_annee    char(4) ; -- default '0000';

    -- on part du principe que def_client peu contenir l'année 
   IF ISNULL(new.ref_client) or TRIM(new.ref_client) =''  THEN
      SET annee = CAST(YEAR(NOW())-2000 AS CHAR(2));
    ELSE
        SET annee = new.ref_client; 
    END IF;
    SET id_annee = (SELECT MAX(CAST(SUBSTRING(ref_client,4) AS UNSIGNED)) FROM clientsx WHERE LEFT(ref_client, 2) = annee)+1;
    set id_annee = if(isnull(id_annee),'0001',id_annee); 
    SET new.ref_client = concat(annee,'-',LPAD(id_annee,4,'0'));
END //
DELIMITER ;

1 tu enlèves le definer.
2 tu mets bien le nom de ta table y compris dans le FROM du SELECT.

et pour tester :

truncate table clientsx;
insert into clientsx (rs) values ('dupont');
insert into clientsx (rs,ref_client) values ('dupont2','16');
insert into clientsx (rs,ref_client) values ('dupont3','15');
insert into clientsx (rs) values ('dupont4');
insert into clientsx (rs) values ('dupont5');
insert into clientsx (rs,ref_client) values ('dupont6','16');
select * from clientsx; 

allééééeeee , bon courage ;)
@pluche.

Pierre

Bonsoir,

Je vois la chose comme ceci:
1/ Je récupère le dernier ID
2/ Je sépare cette ID en deux parties
3/ Je compare la 1ère partie à la date actuelle.
-> Si c'est égale alors, je récupère la deuxième partie et je l'incrémente de 1
-> Si c'est différent alors je remplace la 1ère partie par la bonne valeur et remet la deuxième partie à 1
4/ Je recompose le nouvel ID

Merci beaucoup pour ta réponse Carouge10 ! C'est une bonne piste à explorer.

Cependant mon intérrogation principal est es ce que je peux faire un autoincrement sur ''trois chiffres'' ? C'est à dire qu'au lieu d'avoir le classique : 1, 2, 3, 4, 5.... ce serait --> 001, 002, 003, 004 .... 038, 039... ? Et que sa revienne à zéro chaque année.

Ou alors je fais tous simplement pas d'autoincrement et je fais mon id ''maison'', si je peux appeler sa comme ca. Mais je voyais plus simple d'utiliser l'id de ma table comme le numéro du client.

hello, perso le plus "difficile" sera de reseter tes id chaque année, car pour le formatage c assez simple :

$an = 17;
$id = 15;
echo sprintf('%d-%2$03d', $an, $id);

la doc

Comme le dit Saibe, le formatage de l'id est simple et je ne sais si c'est possible de le faire automatiquement du côté SQL.
Par contre, comme vous le dites, il faudra le faire par le code. Le code sera une automatisation de la création de l'id en fonction des données.

L'id que vous souhaitez peut très bien servir de numéro de client puisqu'il sera unique et vous permetra de connaitre l'anciennété du client à un an près.

Un grand merci à vous deux pour vos réponses et votre aide !

Merci saibe, en faisant des recherches j'étais tombé sur cette doc et avais fais quelques essai mais avais pas très bien compris. C'est exactement le formatage que je recherchais ! Merci à toi ;-)

Maintenant c'est donc ok pour le formatage, je pense que je laisse tombé pour un reset de l'id chaque année (trop compliqué) et vais proceder avec le formatage.

Du coup, je ne fais pas d'autoincrement sur l'id (= le numéro du client) de ma table et je la laisse simplement en clé primaire. Juste ?

Après j'appliquerai l'idée de carouge10 (1/ Je récupère le dernier ID, 2/ Je sépare cette ID en deux parties...etc...). Sa devrai fonctionner !

Merci encore pour votre aide ! Je vais tester tout ça ce week end et metterai ce sujet comme résolu si tout se passe comme prévu :)

Oui l'auto-incremente, c'est à vous de le faire.
N'hésiter à poster le code pour l'id client, comme ça, cela pourra aider d'autre personne et puis vous aussi si vous bloquez sur un point du code.

@kamelzagger, avec plaiz ; cela dit pour plus de compréhension du formatage tu peux faire '%1d-%2$03d'
@Carouge10, perso, g po trop capté ton idée...
si le but est de conserver une ref chrono, sans enregistrement ext, basé sur des id autoincrement (primary j'imagine?) , c compliqué... sans parlé des désinscriptions ;) tu ne pourrais plus te baser sur un COUNT...
bref, je verrai davantage un ti fichier .log ou un champ d'une table app_options que tu incrémenterais et réseterais le 01.01.xx, en gros une variable ext...
je sais pas ;)

Salut,
Pourquoi ne pas faire un trigger ?
exemple :
DELIMITERS //

CREATE TRIGGER nom_de_ta_base.nom_de_ta_tatable_b_u
BEFORE INSERT
ON nom_de_ta_table
FOR EACH ROW
BEGIN
declare annee char(2) default '17';
declare id_annee char(4) default '0000';

set annee = year(now())-2000;
set id_annee = (select count(id) from tabable where nom_de_ton_champ_id like'%'+annee);

nom_de_ton_champ_id.new= concat(annee,'-',s,id_annee);

END

DELIMITER ;

@+

@Pierrot1 +1

Haaaa, la boulette :D

rectification :

remplacer

nom_de_ton_champ_id.new= concat(annee,'-',s,id_annee);

par

nom_de_ton_champ_id.new= concat(annee,'-',s,lpad(id_annee,4,'0'));

@pluche

Merci pour ta reponse @Pierrot1 !

Je ne connaissais pas cette methode de ''trigger'' mais j'ai l'impression que c'est une bonne piste.

En revanche, je t'avoue que je ne comprend pas tout (comme il s'agit de qqch de nouveau pour moi).

C'est un code que je dois executer sur le serveur sql (phpmyadmin) donc ? Ce qui permettra de ''formater'' ma table comme je le souhaite d'apres ce que j'ai compris ?

Je dois donc créer deux champs suplementaires : annee et id_annee ?

Ensuite avec ces deux valeurs je les rassembles pour creer l'id principal c'est ca ?

Ais-je bien tout compris ? ^^

Merci encore a toi !

Salut,
Non, annee et id_annee sont des variables.
normalement, tu remplaces juste les noms génériques que j'ai mis, et ça devrait marcher.
Tu lances cette requete une fois, et ça créer une procédure qui sera appelée avant chaque insertion dans ta table.

@pluche.

Pierre

Ha ok d'accord, c'est interessant !

Je vais tester tout ça cette semaine ;-)

PS : Dans ta rectification je vois ''Ipad'', faute de frappe ou c'est bien ca que je dois mettre ? ^^

MERCI A TOI ;-)

oui tu doit mettre LPAD ;)

tu doit mettre ça exactement :
set nom_de_ton_champ_id.new= concat(annee,'-',s,lpad(id_annee,4,'0'));

@pluche

heu, je me permet de rajouter que, même si l'utilisation d'un trigger semble être la bonne idée, tu ne pourras pas utiliser le code de @Pierrot01 tel kel...
d'une part il faudra que tu ais l'année d'enregistrement ds ta table, et d'autre part, comme je l'avais dit plus haut attention avec l'utilisation du COUNT si tu prévois de supprimer un user... à la limite ajoute un champ actif, et considère une suppression quand actif=0...

Pas la peine de mettre unchamp en plus.
Au lieude faireune select count tufais un select max ;)
@pluche

Oui c'est vrai que si je souhaite supprimer un client le COUNT ne sera plus juste. C'est un probleme.

De plus lors d'un auout d'un nouveau client j'aimerais egalement avoir la possibilité de choisir l'année (Si au cas ou j'ai oublié d'ajouter un client d'une année précedente) et si je ne choisis pas l'année c'est l'annee en cours qui est appliqué. Mais il me semble qu'avec ce systeme de triger, ce sera toujours l'annee en cours qui sera appliqué.

;) je sais pas comment tu fais set id_annee = (select count(id) from tabable where nom_de_ton_champ_id like'%'+annee); sans rajouter un champ annee ? et je rajouterais que l'utilisation de la variable nom_de_ton_champ_id n'est pas très pertinente... non ?

Il suffit de mettre dans l'id-formaté l'année et de tester dans le trigger
Du style :
IF id_formater > '' THEN
      faire les choses;
END IF

Jai faisun peu à l'arrache
Suis sur mon tel
Where idxx like annee+'℅'
Sinon, c'estla voie à prendre
a++

oui, je confirme que c la voie la plus élégante ;) mais elle n'enlève pas certains pb...
ce n'est pas une question simple.... ;)
du moins si on a envie de faire de cette nomenclature des id primary :))
parce que sinon, tout est là :)

C'est sur qu'il y à des problèmes
Mais je crois que notre métier est de les résoudres, nan?
Mais c'est pas très compliqué

@Pierrot01 :
:) si tu ne trouves pas ça compliqué, je passe la main...
c possible, biensur ; mais formater des clés primaires uniques d'une table avec les contraintes de @kamelzagger, ça va demander quelques lignes de code (euphémisme)... et bien plus, si je comprends bien, sans rajouter de champs....
je suis curieux (et impatient) de voir la solution :))
++

@kamelzagger,
franchement ;) le plus simple serait de te faire une ref_user : AA-000id (donc un id formater sur 5 char) ; et 99999 clients tu as le temps de voir venir...

Le plus simple est de bien faire ;)
un ref_user AA-XXX obligerais une echange entre php et mysql donc, changement de thread voir de serveur dans la plupart des cas.
Donc, pour l'optimisation, c'est pas ça.
Donc, pour couper court, laissez moi qq minutes, et je vais le faire ce trigger ;)
@+

DELIMITER //
CREATE clients_b_i BEFORE INSERT ON clients
FOR EACH ROW BEGIN

DECLARE annee       char(2) default '17';
DECLARE id_annee    char(4) default '0000';

-- on part du principe que def_client peu contenir l'année 
IF ref_client.new > '' THEN
    SET annee = ref_client.new;
ELSE
    set annee = YEAR(NOW())-2000;
END IF;

SET id_annee = (SELECT MAX(CAST(SUBSTRING(def_client,4) AS UNSIGNED)) FROM clients)+1; 

SET ref_client.new= concat(annee,'-',LPAD(id_annee,4,'0'));

END

DELIMITER ;

Voilà, ça devrait marcher.
J'ai testé sur une de mes tables clients qui contient 23000 enreg environ.
La table est nommée clients.
le champ est nommé ref_client.

@pluche

Pierre

DELIMITER //
CREATE `clients_b_i` BEFORE INSERT ON `clients` 
FOR EACH ROW BEGIN

    DECLARE annee       char(2) default '17';
    DECLARE id_annee    char(4) default '0000';

    -- on part du principe que def_client peu contenir l'année 
    IF ref_client.new > '' THEN
        SET annee = ref_client.new;
    ELSE
        set annee = YEAR(NOW())-2000;
    END IF;

    SET id_annee = (SELECT MAX(CAST(SUBSTRING(ref_client,4) AS UNSIGNED)) FROM clients)+1; 

    SET ref_client.new= concat(annee,'-',LPAD(id_annee,4,'0'));
END
DELIMITER ;

Wouha j'ai un peu de retard sur vos messages ! Haha en tout cas merci encore à vous deux pour votre aide.

@Pierrot01 : J'ai rajouter le champ ref_client à ma table clients. J'ai executé le code via phpmyadmin mais j'ai plusieurs erreurs en retour, c'est bien sur via l'editeur sql de phpmyadmin que je dois l'executer non ?

Autre question; qu'es que : clients_b_i (Le _b_i c'est quoi ?)

Donne moi tes erreurs.

clients_b_i est le nom du trigger

table clients b pour before i pour insert

c'est une convention de nommage

Dacc merci pour les précisions.

Voici donc ce que j'ai mis

ma table se nomme : t_client

DELIMITER //
CREATE `t_client_b_i` BEFORE INSERT ON `t_client` 
FOR EACH ROW BEGIN

    DECLARE annee       char(2) default '17';
    DECLARE id_annee    char(4) default '0000';

    IF ref_client.new > '' THEN
        SET annee = ref_client.new;
    ELSE
        set annee = YEAR(NOW())-2000;
    END IF;

    SET id_annee = (SELECT MAX(CAST(SUBSTRING(ref_client,4) AS UNSIGNED)) FROM clients)+1; 

    SET ref_client.new= concat(annee,'-',LPAD(id_annee,4,'0'));
END
DELIMITER ;

Et voici le retour sql des erreurs :

Analyse statique :

5 erreurs trouvées lors de l'analyse.

Type d'énoncé non reconnu. (near "DECLARE" at position 125)
Type d'énoncé non reconnu. (near "IF" at position 176)
Type d'énoncé non reconnu. (near "ELSE" at position 246)
Type d'énoncé non reconnu. (near "END" at position 295)
Type d'énoncé non reconnu. (near "END" at position 466)

MySQL a répondu:

1064 - Erreur de syntaxe près de 't_client_b_i BEFORE INSERT ON t_client

FOR EACH ROW BEGIN DECLARE a' à la ligne 1

DELIMITER //
CREATE TRIGGER `clients_b_i` BEFORE INSERT ON `clients` 
FOR EACH ROW BEGIN

    DECLARE annee       char(2) default '17';
    DECLARE id_annee    char(4) default '0000';

    -- on part du principe que def_client peu contenir l'année 
    IF new.ref_client > '' THEN
        SET annee = new.ref_client;
    ELSE
        set annee = YEAR(NOW())-2000;
    END IF;

    SET id_annee = (SELECT MAX(CAST(SUBSTRING(ref_client,4) AS UNSIGNED)) FROM clients)+1; 

    SET new.ref_client = concat(annee,'-',LPAD(id_annee,4,'0'));
END
DELIMITER ;

y avait qq petites erreur :D

Corrections faites, mais toujours une petite erreur :

#1064 - Erreur de syntaxe près de 'DELIMITER' à la ligne 17

il manque un ; derriere le END

Déjà essayé, sa me retourne toujours la même erreur ... :/

DELIMITER //
CREATE 
    TRIGGER prostand_profil.clientx_b_i
    BEFORE INSERT
    ON prostand_profil.clientsx
    FOR EACH ROW
BEGIN
    DECLARE annee       char(2) default '17';
    DECLARE id_annee    char(4) default '0000';

    -- on part du principe que def_client peu contenir l'année 
    IF new.ref_client > '' THEN
        SET annee = new.ref_client;
    ELSE
        set annee = YEAR(NOW())-2000;
    END IF;

    SET id_annee = (SELECT MAX(CAST(SUBSTRING(ref_client,4) AS UNSIGNED)) FROM clients)+1; 

    SET new.ref_client = concat(annee,'-',LPAD(id_annee,4,'0'));
END //
DELIMITER ;

Je vien de compiler ça sur mon serveur et c'est passé.
la table se nomme clientsx
la base de donnees se nomme prostand_profil.
change ce qu'il faut et ça doit marcher sous MYSQL 5.7

@pluche.

DELIMITER //
CREATE 
    DEFINER = 'pierre'@'%'
TRIGGER prostand_profil.clientx_b_i
    BEFORE INSERT
    ON prostand_profil.clientsx
    FOR EACH ROW
BEGIN
    DECLARE annee       char(2) default '17';
    DECLARE id_annee    char(4) default '0000';

    -- on part du principe que def_client peu contenir l'année 
    IF new.ref_client > '' THEN
        SET annee = new.ref_client;
    ELSE
        set annee = YEAR(NOW())-2000;
    END IF;

    SET id_annee = (SELECT MAX(CAST(SUBSTRING(ref_client,4) AS UNSIGNED)) FROM clients)+1; 

    SET new.ref_client = concat(annee,'-',LPAD(id_annee,4,'0'));
END //
DELIMITER ;

voilà, c'est bon :D

tu enlèves de DEFINER = 'pierre'@'%'

Alors cette fois ci le code est passé sans erreur au retour.

Par contre maintenant lorsque je veux insérer un nouveau client (quand je souhaite ajouter une nouvelle ligne à ma table client) sa me retourne une erreur comme quoi que ma table n'existe pas. Pourtant j'ai ressayé 3 fois et je ne suis sur que je ne me suis pas trompé sur les noms.

Mon serveur SQL est en version 5.6.28, sa peu poser problème ?

il faut certainement changer le nom de la table dans le from
SET id_annee = (SELECT MAX(CAST(SUBSTRING(ref_client,4) AS UNSIGNED)) FROM clients)+1;
à la place de clients, tu met le nom de ta table clients

n'oublis pas de supprimer le trigger avant de le recreer ;)

Oui c'est fait, je l'ai "droper" avant ;-)

En effet j'avais oublié de changer le nom ''clients'' pour le from... Maintenant lorsque j'ajoute un nouveau client j'ai bien 17 qui s'ajoute à mon champ ref_client par contre pour l'id il y à juste un 0. Voici les deux erreurs qui sont retournés lors d'un ajout :

Warning: #1366 Incorrect integer value: '' for column 'id' at row 1
Warning: #1366 Incorrect integer value: '' for column 'ref_client' at row 1

Pour info :

Mon champ id est une clé primaire int 11 (sans autoincrement)
Mon champ ref_client est un int 11

if faut mettre ton champ id en autoincrement
il faut mettre ton champ ref_client en char(7)

Ok c'est fait !

Ha daccord je vois maintenant. J'avais mal compris je pensais que le numero de mon client s'ajouterai à mon id mais il s'ajoute au champ ref_client. Ok ca me va ! :)

Je remarque un dernier petit soucis (surement du au code du trigger) : mon champ ref_client se formate bien comme je le souhaite c'est à dire par exemple 17-0001, 17-0002 etc... Et si je veux ajouter un client d'une année précedente (2015 par exemple), mon champ ref_client commence bien par 15 mais le numero à la fin suit avec l'année 2017.

Autrement dit, la j'ai ajouté deux clients de test pour 2017 et 1 client de 2015. Je devrais donc avoir ceci comme numéro de client :

17-0001, 17-0002 et 15-0001

mais j'ai ceci :

17-0001,17-0002 et 15-0003

L'incrémentation suit alors qu'elle ne devrait pas vue que c'est une autre année tu vois ?

change ça
SET id_annee = (SELECT MAX(CAST(SUBSTRING(ref_client,4) AS UNSIGNED)) FROM clients)+1;
par ça
SET id_annee = (SELECT MAX(CAST(SUBSTRING(ref_client,4) AS UNSIGNED)) FROM clients WHERE LEFT(ref_client, 2) = 'annee' )+1;
si ça marche pas, tu le cast ;)

@pluche

Pierre

Je viens d'essayer, quand je veux ajouter un client sa me repond que le champ refclient ne peut pas être vide ... ''

Même si j'écris qqch dans le champ ref_client, la même erreur s'affiche

SET id_annee = (SELECT MAX(CAST(SUBSTRING(ref_client,4) AS UNSIGNED)) FROM clients WHERE CAST(LEFT(ref_client, 2) AS UNSIGNED) = annee)+1;
SET id_annee = (SELECT MAX(CAST(SUBSTRING(ref_client,4) AS UNSIGNED)) FROM clients WHERE CAST(LEFT(ref_client, 2) AS UNSIGNED) = annee)+1;

Toujours la même erreur (ref_client ne peut être vide)

DELIMITER //
CREATE 
    DEFINER = 'pierre'@'%'
TRIGGER prostand_profil.clientx_b_i
    BEFORE INSERT
    ON prostand_profil.clientsx
    FOR EACH ROW
BEGIN
    DECLARE annee       char(2) default '17';
    DECLARE id_annee    char(4) default '0000';

    -- on part du principe que def_client peu contenir l'année 
    IF new.ref_client > '' THEN
        SET annee = new.ref_client;
    ELSE
        set annee = YEAR(NOW())-2000;
    END IF;

    SET id_annee = (SELECT MAX(CAST(SUBSTRING(ref_client,4) AS UNSIGNED)) FROM clients WHERE CAST(LEFT(ref_client, 2) AS UNSIGNED) = annee)+1;

    SET new.ref_client = concat(annee,'-',LPAD(id_annee,4,'0'));
END //
DELIMITER ;

ref_client ne peu être null ou vide puisque :
DECLARE annee char(2) default '17';
DECLARE id_annee char(4) default '0000';

c'est quoi ton insert ?

j'ai trouvé
laisse moi une minute

Oui mais je n'avais pas cet erreur avant. Je laissais le champ ref_client vide .

@Pierrot01 :j'ai trouvé, laisse moi une minute

Dacc merci ;-)

Voici mon insert (au cas ou):

INSERT INTO `t_client` (`id`, `titre`, `nom`, `prenom`, `societe`, `telephone`, `email`, `rue`, `localite`, `ville`, `pays`, `ref_client`) VALUES (NULL, 'Monsieur', 'Gerber', 'Michael', 'Griffur', '021021021', 'email@email.com', 'Rue', '2000', 'Ville', 'Pays', '')
DELIMITER //
CREATE 
    DEFINER = 'pierre'@'%'
TRIGGER prostand_profil.clientx_b_i
    BEFORE INSERT
    ON prostand_profil.clientsx
    FOR EACH ROW
BEGIN

    DECLARE annee       char(2) default '17';
    DECLARE id_annee    char(4) default '0000';

    -- on part du principe que ref_client peu contenir l'année 
    IF ISNULL(new.ref_client) THEN
        set annee = YEAR(NOW())-2000;
    ELSE
        SET annee = new.ref_client; 
    END IF;

    SET id_annee = (SELECT MAX(CAST(SUBSTRING(ref_client,4) AS UNSIGNED)) FROM clients WHERE LEFT(ref_client, 2) = annee)+1;

    SET new.ref_client = concat(annee,'-',LPAD(id_annee,4,'0'));

END //
DELIMITER ;

voilà

ça marche chez moi

Bon ben ... C'est pire pour moi :/

En effet j'ai plus l'erreur si je laisse le champ vide mais maintenant mon champ ref_client devient toujours : -0001.

De plus si je veux ajouter 15 par exemple dans le champ ref_client (Dans le cas d'un ajout d'un client ancien) cette fois sa me remet l'erreur : le champ ref_client ne peut être vide.

Et tout ca fonctionnais au debut, c'etait juste l'incrementation qui ne jouais pas (Si l'annee change)

j'vais dormir :D
je regarde demain.
je fais un peu à l'arrache :D
Bonne nuit.
à 2 mains ;)
Pierre

Je crois que je vais y aller aussi ^^

Ca marche c'est très sympa de ta part ! :)

Bonne nuit , a demain et merci encore !

Kamel

pour tester, fais pas le truncate ;)

pour info (ce que tu dois modifier) :
nom de ma base : prostand_profil
nom de ma table : clientsx

@kamelzagger , résolu ?

@Pierrot01 Je pouvais pas essayer avant, j'essaye de suite. Te tiens au courrant merci à toi !

@Pierrot01 t'es un champion ! Tout fonctionne correctement cette fois :) :)

Merci beaucoup à toi pour ton aide et ta patiente :)