Bonjour, j'affiche dans une zone de liste des éléments extraits de tables.
Je voudrais savoir comment afficher une ligne de résultat de requete même si un des champs est vide dans la table.
Merci
Bonjour, j'affiche dans une zone de liste des éléments extraits de tables.
Je voudrais savoir comment afficher une ligne de résultat de requete même si un des champs est vide dans la table.
Merci
Bonjour,
Si je lis bien ta question il suffit de ne rien faire puisqu'une requête affiche aussi les champs vides
Si c'est un champ vide dans la condition where tu peux utiliser isnull(...) ou nz(tonchamp,ValeurSiNulle)
Re, je crois que j'ai mal expliqué mon cas.
J'ai une table intervention qui est composée de plusieurs ID (voir fichier joint)
Je voudrais afficher dans une zone de liste le résultat suivant:
Id_Intervention
DateIntervention
Identite
Ligne
Machine
Type
Categorie
SousEnsemble
Element
Descriptif
Diagnostic
J'obtiens donc la requete suivante:
Le soucis c'est que ma table intervention compte 4309 enregistrements, mais comme certains champs sont vides, quand je lance ma requete, je n'ai plus que 2770 enregistrement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT tbl_Intervention.Id_Intervention, tbl_Intervention.DateIntervention, tbl_Personnel.Identite, tbl_Ligne.Ligne, tbl_Machine.Machine, tbl_Type.Type, tbl_Categorie.Categorie, tbl_SousEnsemble.SousEnsemble, tbl_Element.Element, tbl_Intervention.Descriptif, tbl_Diagnostic.Diagnostic FROM (((((tbl_Ligne INNER JOIN (((tbl_Intervention INNER JOIN tbl_Intervenir ON tbl_Intervention.Id_Intervention = tbl_Intervenir.Id_Intervention) INNER JOIN tbl_Personnel ON tbl_Intervenir.Id_Personnel = tbl_Personnel.Id_Personnel) INNER JOIN tbl_Machine ON tbl_Intervention.Id_Machine = tbl_Machine.Id_Machine) ON tbl_Ligne.Id_Ligne = tbl_Machine.Id_Ligne) INNER JOIN tbl_Type ON tbl_Intervention.Id_Type = tbl_Type.Id_Type) INNER JOIN tbl_Categorie ON tbl_Intervention.Id_Categorie = tbl_Categorie.Id_Categorie) INNER JOIN tbl_SousEnsemble ON tbl_Intervention.Id_SousEnsemble = tbl_SousEnsemble.Id_SousEnsemble) INNER JOIN tbl_Element ON (tbl_Categorie.Id_Categorie = tbl_Element.Id_Categorie) AND (tbl_Intervention.Id_Element = tbl_Element.Id_Element)) INNER JOIN tbl_Diagnostic ON tbl_Intervention.Id_Diagnostic = tbl_Diagnostic.Id_Diagnostic;
J'ai fais un test, si j'arrete ma requete au simple affichage de :
Id_Intervention
DateIntervention
Identite
Ligne
Machine
Type
J'ai bien comme résultat de requete 4309 enregistrements, car ces champs sont tous complets dans ma table. En revanche si je passe à l'étape d'après, à savoir :
Id_Intervention
DateIntervention
Identite
Ligne
Machine
Type
Categorie
J'obtiens 4200 enregistrements avec la requete suivante:
Ce qui parrait "Logique" car si je vais voir ma table intervention, et que je regarde le nombre de champs vides, j'obtiens : 108 enregistrements filtrés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT tbl_Intervention.Id_Intervention, tbl_Intervention.DateIntervention, tbl_Personnel.Identite, tbl_Ligne.Ligne, tbl_Machine.Machine, tbl_Type.Type, tbl_Categorie.Categorie FROM ((tbl_Ligne INNER JOIN (((tbl_Intervention INNER JOIN tbl_Intervenir ON tbl_Intervention.Id_Intervention = tbl_Intervenir.Id_Intervention) INNER JOIN tbl_Personnel ON tbl_Intervenir.Id_Personnel = tbl_Personnel.Id_Personnel) INNER JOIN tbl_Machine ON tbl_Intervention.Id_Machine = tbl_Machine.Id_Machine) ON tbl_Ligne.Id_Ligne = tbl_Machine.Id_Ligne) INNER JOIN tbl_Type ON tbl_Intervention.Id_Type = tbl_Type.Id_Type) INNER JOIN tbl_Categorie ON tbl_Intervention.Id_Categorie = tbl_Categorie.Id_Categorie;
Donc : 4309-108 = 1201 -1 pour le champs 0.
Mais ce que je veux savoir, c'est comment afficher l'enregistrement même si un des champs de cet enregistrement est vide, et donc ici si la catégorie est vide, je veux que ça m'affiche quand même l'intervention, mais que le champs catégorie reste vide.
Merci
Essaie d'utiliser LEFT JOIN à la place de INNER JOIN ainsi si une table n'est pas complète ses données seront remplacées par des champs vides.
NB : dans ton cas la table des interventions doit être la première appelée (sinon il faut mélanger right join et left join)
Re, dans mon cas, la table intervention est bien la première appelée.
En revanche, si le LEFT JOIN fonctionne, si je m'arrete à la requete suivante:
Avec les tables affichées comme suit : Copie d'écran 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT tbl_Intervention.Id_Intervention, tbl_Intervention.DateIntervention, tbl_Personnel.Identite, tbl_Type.Type, tbl_Categorie.Categorie FROM ((tbl_Ligne INNER JOIN (((tbl_Intervention INNER JOIN tbl_Intervenir ON tbl_Intervention.Id_Intervention = tbl_Intervenir.Id_Intervention) INNER JOIN tbl_Personnel ON tbl_Intervenir.Id_Personnel = tbl_Personnel.Id_Personnel) INNER JOIN tbl_Machine ON tbl_Intervention.Id_Machine = tbl_Machine.Id_Machine) ON tbl_Ligne.Id_Ligne = tbl_Machine.Id_Ligne) LEFT JOIN tbl_Type ON tbl_Intervention.Id_Type = tbl_Type.Id_Type) LEFT JOIN tbl_Categorie ON tbl_Intervention.Id_Categorie = tbl_Categorie.Id_Categorie;
En revanche, si j'essaye d'afficher la suite comme je le souhaite, à savoir:
Avec les tables affichées comme suit : Copie d'écran 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT tbl_Intervention.Id_Intervention, tbl_Intervention.DateIntervention, tbl_Personnel.Identite, tbl_Type.Type, tbl_Categorie.Categorie, tbl_SousEnsemble.SousEnsemble, tbl_Element.Element, tbl_Intervention.Descriptif, tbl_Diagnostic.Diagnostic FROM (((((tbl_Ligne INNER JOIN (((tbl_Intervention INNER JOIN tbl_Intervenir ON tbl_Intervention.Id_Intervention = tbl_Intervenir.Id_Intervention) INNER JOIN tbl_Personnel ON tbl_Intervenir.Id_Personnel = tbl_Personnel.Id_Personnel) INNER JOIN tbl_Machine ON tbl_Intervention.Id_Machine = tbl_Machine.Id_Machine) ON tbl_Ligne.Id_Ligne = tbl_Machine.Id_Ligne) LEFT JOIN tbl_Type ON tbl_Intervention.Id_Type = tbl_Type.Id_Type) LEFT JOIN tbl_Categorie ON tbl_Intervention.Id_Categorie = tbl_Categorie.Id_Categorie) INNER JOIN tbl_SousEnsemble ON tbl_Intervention.Id_SousEnsemble = tbl_SousEnsemble.Id_SousEnsemble) INNER JOIN tbl_Element ON (tbl_Categorie.Id_Categorie = tbl_Element.Id_Categorie) AND (tbl_Intervention.Id_Element = tbl_Element.Id_Element)) INNER JOIN tbl_Diagnostic ON tbl_Intervention.Id_Diagnostic = tbl_Diagnostic.Id_Diagnostic;
J'ai le message d'erreur suivant : Voir copie d'écran "Message d'erreur"
Qu'est ce qui ne lui plait pas?
Il faut que je mette des LEFT JOIN par tout?
Dans ton cas (une table principale et plein de tables annexes) il me semble préférable de mettre LEFT JOIN partout et autant de parenthèses !
Sur la 3e image il y a plus de tables appelées que de champs et la table principale n'est pas la première. Il faudrait vérifier que tout est nécessaire...
Re,
Voila tout ce dont j'ai besoin (voir copie écran)
Donc au niveau de la requete en brut, cela donne:
Maintenant, si je remplace tous les INNER JOIN par des LEFT JOIN, j'ai le un message d'erreur comme quoi certaines jointures ne sont pas supportées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT tbl_Intervention.Id_Intervention, tbl_Intervention.DateIntervention, tbl_Personnel.Identite, tbl_Ligne.Ligne, tbl_Machine.Machine, tbl_Type.Type, tbl_Categorie.Categorie, tbl_SousEnsemble.SousEnsemble, tbl_Element.Element, tbl_Intervention.Descriptif, tbl_Diagnostic.Diagnostic FROM (((((tbl_Ligne INNER JOIN (((tbl_Intervention INNER JOIN tbl_Intervenir ON tbl_Intervention.Id_Intervention = tbl_Intervenir.Id_Intervention) INNER JOIN tbl_Personnel ON tbl_Intervenir.Id_Personnel = tbl_Personnel.Id_Personnel) INNER JOIN tbl_Machine ON tbl_Intervention.Id_Machine = tbl_Machine.Id_Machine) ON tbl_Ligne.Id_Ligne = tbl_Machine.Id_Ligne) LEFT JOIN tbl_Type ON tbl_Intervention.Id_Type = tbl_Type.Id_Type) INNER JOIN tbl_Categorie ON tbl_Intervention.Id_Categorie = tbl_Categorie.Id_Categorie) INNER JOIN tbl_SousEnsemble ON tbl_Intervention.Id_SousEnsemble = tbl_SousEnsemble.Id_SousEnsemble) INNER JOIN tbl_Element ON (tbl_Intervention.Id_Element = tbl_Element.Id_Element) AND (tbl_Categorie.Id_Categorie = tbl_Element.Id_Categorie)) INNER JOIN tbl_Diagnostic ON tbl_Intervention.Id_Diagnostic = tbl_Diagnostic.Id_Diagnostic;
Il faut que je fasse comment?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT tbl_Intervention.Id_Intervention, tbl_Intervention.DateIntervention, tbl_Personnel.Identite, tbl_Ligne.Ligne, tbl_Machine.Machine, tbl_Type.Type, tbl_Categorie.Categorie, tbl_SousEnsemble.SousEnsemble, tbl_Element.Element, tbl_Intervention.Descriptif, tbl_Diagnostic.Diagnostic FROM (((((tbl_Ligne LEFT JOIN (((tbl_Intervention LEFT JOIN tbl_Intervenir ON tbl_Intervention.Id_Intervention = tbl_Intervenir.Id_Intervention) LEFT JOIN tbl_Personnel ON tbl_Intervenir.Id_Personnel = tbl_Personnel.Id_Personnel) LEFT JOIN tbl_Machine ON tbl_Intervention.Id_Machine = tbl_Machine.Id_Machine) ON tbl_Ligne.Id_Ligne = tbl_Machine.Id_Ligne) LEFT JOIN tbl_Type ON tbl_Intervention.Id_Type = tbl_Type.Id_Type) LEFT JOIN tbl_Categorie ON tbl_Intervention.Id_Categorie = tbl_Categorie.Id_Categorie) LEFT JOIN tbl_SousEnsemble ON tbl_Intervention.Id_SousEnsemble = tbl_SousEnsemble.Id_SousEnsemble) LEFT JOIN tbl_Element ON (tbl_Intervention.Id_Element = tbl_Element.Id_Element) AND (tbl_Categorie.Id_Categorie = tbl_Element.Id_Categorie)) LEFT JOIN tbl_Diagnostic ON tbl_Intervention.Id_Diagnostic = tbl_Diagnostic.Id_Diagnostic;
Bonjour,
Ta requête ne respecte pas la hiérarchie des tables :
- Tbl_intervention doit être la plus à gauche (depuis le début c'est Tbl_ligne !)
- si une table est au rang 3 (ligne, personnel) elle doit être derrière sa "mère"
Si tout est dans l'ordre et avec les bonnes parenthèses normalement LEFT JOIN partout doit être OK. Amha il vaut mieux l'écrire en SQL qu'en utilisant l'éditeur
Une autre solution plus lisible dans ton cas serait d'utiliser des sous-select mais ça risque d'être plus lent :
NB : sur l'image il y a une liaison bizarre entre element & categorie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select * , (select ligne from Tligne where...) , ... from intervention
Re,
C'est pas que je ne veux pas, mais je ne sais pas écrire la requete sans l'assistant.
Moi ce que je t'ai envoyé c'est le résultat de ce que je souhaite voir apparaitre dans l'ordre d'apparition.
Pourrais-tu me réécrire ma requete tel qu'il faudrait qu'elle soit écrite en respectant la table mère?
Pour ce qui est de la liaison entre catégorie et élement, je ne sais pas pourquoi elle est là, je vais demander à la personne qui a crée cette liaison.
Merci
La liaison est là parce que tu l'as mise dans ta requête donc la personne c'est toi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT tbl_Intervention.Id_Intervention, tbl_Intervention.DateIntervention, tbl_Personnel.Identite, tbl_ligne.ligne, tbl_Type.Type, tbl_Categorie.Categorie, tbl_SousEnsemble.SousEnsemble, tbl_Element.Element, tbl_Intervention.Descriptif, tbl_Diagnostic.Diagnostic FROM (((((((tbl_Intervention LEFT JOIN (tbl_Intervenir INNER JOIN tbl_Personnel ON tbl_Intervenir.Id_Personnel = tbl_Personnel.Id_Personnel) ON tbl_Intervention.Id_Intervention = tbl_Intervenir.Id_Intervention) LEFT JOIN (tbl_machine INNER JOIN tbl_Ligne on tbl_Ligne.Id_Ligne = tbl_Machine.Id_Ligne) ON tbl_Intervention.Id_Machine = tbl_Machine.Id_Machine) LEFT JOIN tbl_Type ON tbl_Intervention.Id_Type = tbl_Type.Id_Type) LEFT JOIN tbl_Categorie ON tbl_Intervention.Id_Categorie = tbl_Categorie.Id_Categorie) LEFT JOIN tbl_SousEnsemble ON tbl_Intervention.Id_SousEnsemble = tbl_SousEnsemble.Id_SousEnsemble) LEFT JOIN tbl_Element ON tbl_Intervention.Id_Element = tbl_Element.Id_Element) LEFT JOIN tbl_Diagnostic ON tbl_Intervention.Id_Diagnostic = tbl_Diagnostic.Id_Diagnostic)
Re,
Sa me met : Expression de jointure non supportée.
C'est probablement à cause des 2 cascades
Tu peux essayer soit en rempaçant les 2 INNER par des LEFT, soit en rempaçant les 2 premiers LEFT par des INNER, soit la version "multi-select" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT tbl_Intervention.Id_Intervention, tbl_Intervention.DateIntervention , (select tbl_Personnel.Identite from tbl_Intervenir INNER JOIN tbl_Personnel ON tbl_Intervenir.Id_Personnel = tbl_Personnel.Id_Personnel where tbl_Intervention.Id_Intervention = tbl_Intervenir.Id_Intervention) , (select tbl_ligne.ligne from tbl_machine INNER JOIN tbl_Ligne on tbl_Ligne.Id_Ligne = tbl_Machine.Id_Ligne where tbl_Intervention.Id_Machine = tbl_Machine.Id_Machine) , (select tbl_Type.Type from tbl_Type where tbl_Intervention.Id_Type = tbl_Type.Id_Type) , (select tbl_Categorie.Categorie from tbl_Categorie where tbl_Intervention.Id_Categorie = tbl_Categorie.Id_Categorie) , (select tbl_SousEnsemble.SousEnsemble from tbl_SousEnsemble where tbl_Intervention.Id_SousEnsemble = tbl_SousEnsemble.Id_SousEnsemble) , (select tbl_Element.Element from tbl_Element where tbl_Intervention.Id_Element = tbl_Element.Id_Element) , tbl_Intervention.Descriptif , (select tbl_Diagnostic.Diagnostic from tbl_Diagnostic where tbl_Intervention.Id_Diagnostic = tbl_Diagnostic.Id_Diagnostic) FROM tbl_Intervention
Re,
Cette requete là fonctionne (j'y ai ajouté 2 champs).
Par contre comment je peux faire pour l'incorporer au niveau de mon RefreshQuery car elle est trop longue?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT tbl_Intervention.Id_Intervention, tbl_Intervention.DateIntervention, (select tbl_Personnel.Identite from tbl_Intervenir INNER JOIN tbl_Personnel ON tbl_Intervenir.Id_Personnel = tbl_Personnel.Id_Personnel where tbl_Intervention.Id_Intervention = tbl_Intervenir.Id_Intervention) AS Expr1, (select tbl_ligne.ligne from tbl_machine INNER JOIN tbl_Ligne on tbl_Ligne.Id_Ligne = tbl_Machine.Id_Ligne where tbl_Intervention.Id_Machine = tbl_Machine.Id_Machine) AS Expr2, (select tbl_Type.Type from tbl_Type where tbl_Intervention.Id_Type = tbl_Type.Id_Type) AS Expr3, (select tbl_Categorie.Categorie from tbl_Categorie where tbl_Intervention.Id_Categorie = tbl_Categorie.Id_Categorie) AS Expr4, (select tbl_SousEnsemble.SousEnsemble from tbl_SousEnsemble where tbl_Intervention.Id_SousEnsemble = tbl_SousEnsemble.Id_SousEnsemble) AS Expr5, (select tbl_Element.Element from tbl_Element where tbl_Intervention.Id_Element = tbl_Element.Id_Element) AS Expr6, tbl_Intervention.Descriptif, (select tbl_Diagnostic.Diagnostic from tbl_Diagnostic where tbl_Intervention.Id_Diagnostic = tbl_Diagnostic.Id_Diagnostic) AS Expr7, tbl_DureeIntervention.DureeIntervention, tbl_DureeArret.DureeArret FROM tbl_DureeIntervention INNER JOIN (tbl_DureeArret INNER JOIN tbl_Intervention ON tbl_DureeArret.Id_DureeArret = tbl_Intervention.DureeArretMachine) ON tbl_DureeIntervention.Id_DureeIntervention = tbl_Intervention.DureeIntervention;
Euh ça veut dire quoi elle est trop longue ???
Amha c'aurait été plus homogène de rajouter les 2 champs sur le même principe des requêtes spécifiques mais bon s'il y a toujours une durée d'intervention et une durée d'arrêt pourquoi pas...
Ah ba oui c'est sur, on peux le mettre sur le même principe que précédement,
Quand je dit qu'elle est trop lo,gue, je veux dire par là que comme je passe par du code vba, la longeur de la ligne de requete est supérieur à ce qui est admis par vba, il faut donc je j'éclate la requete sur plusieur ligne pour la reconstituer ensuite.
Auparavant, je faisait:
sqlselect="Select....."
sqlFrom= " Fom...."
sql= sqlselect + sqlfrom
Tu peux réserver les sous-requêtes aux 2 cas tordus :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT tbl_Intervention.Id_Intervention, tbl_Intervention.DateIntervention , (select tbl_Personnel.Identite from tbl_Intervenir INNER JOIN tbl_Personnel ON tbl_Intervenir.Id_Personnel = tbl_Personnel.Id_Personnel where tbl_Intervention.Id_Intervention = tbl_Intervenir.Id_Intervention) , (select tbl_ligne.ligne from tbl_machine INNER JOIN tbl_Ligne on tbl_Ligne.Id_Ligne = tbl_Machine.Id_Ligne where tbl_Intervention.Id_Machine = tbl_Machine.Id_Machine) , tbl_Type.Type, tbl_Categorie.Categorie, tbl_SousEnsemble.SousEnsemble, tbl_Element.Element, tbl_Intervention.Descriptif, tbl_Diagnostic.Diagnostic FROM (((((tbl_Intervention LEFT JOIN tbl_Type ON tbl_Intervention.Id_Type = tbl_Type.Id_Type) LEFT JOIN tbl_Categorie ON tbl_Intervention.Id_Categorie = tbl_Categorie.Id_Categorie) LEFT JOIN tbl_SousEnsemble ON tbl_Intervention.Id_SousEnsemble = tbl_SousEnsemble.Id_SousEnsemble) LEFT JOIN tbl_Element ON tbl_Intervention.Id_Element = tbl_Element.Id_Element) LEFT JOIN tbl_Diagnostic ON tbl_Intervention.Id_Diagnostic = tbl_Diagnostic.Id_Diagnostic)
Re,
Bon voila, j'ai incorporé la requete que tu m'as envoyé dans mon refreshQuery, j'obtient:
Par contre, au moment du lancement, j'ai une petite fenetre qui m'intérroge sur "tbl_Personnel.Identite".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 sqlSelect = "SELECT tbl_Intervention.Id_Intervention, tbl_Intervention.DateIntervention, (select tbl_Personnel.Identite from tbl_Intervenir INNER JOIN tbl_Personnel ON tbl_Intervenir.Id_Personnel = tbl_Personnel.Id_Personnel where tbl_Intervention.Id_Intervention = tbl_Intervenir.Id_Intervention), (select tbl_ligne.ligne from tbl_machine INNER JOIN tbl_Ligne on tbl_Ligne.Id_Ligne = tbl_Machine.Id_Ligne where tbl_Intervention.Id_Machine = tbl_Machine.Id_Machine), tbl_Type.Type, tbl_Categorie.Categorie, tbl_SousEnsemble.SousEnsemble, tbl_Element.Element, tbl_Intervention.Descriptif, tbl_Diagnostic.Diagnostic" sqlFrom = " FROM (((((tbl_Intervention LEFT JOIN tbl_Type ON tbl_Intervention.Id_Type = tbl_Type.Id_Type)LEFT JOIN tbl_Categorie ON tbl_Intervention.Id_Categorie = tbl_Categorie.Id_Categorie)LEFT JOIN tbl_SousEnsemble ON tbl_Intervention.Id_SousEnsemble = tbl_SousEnsemble.Id_SousEnsemble)LEFT JOIN tbl_Element ON tbl_Intervention.Id_Element = tbl_Element.Id_Element)LEFT JOIN tbl_Diagnostic ON tbl_Intervention.Id_Diagnostic = tbl_Diagnostic.Id_Diagnostic)" sql = sqlSelect + sqlFrom
Voir pièce jointe.
Sais tu d'où cela peut venir?
Pour ce qui est de la durée d'intervention et d'arrêt machine, je les incorpore comment dans le sql?
On va y arriver
Non mais en tout cas merci parce que ça fait un moment que j'essaye de remplir cette zone de liste et ça me posait beaucoup problème pour la suite de mon projet.
Re,
J'ai résolu mon problème de fenetre qui s'affichait.
En revanche, pour les Temps d'Intervention et pour les durées d'arrêt de production, j'ai un souci.
En effet, ce qu'il faut savoir, c'est que ma base est explosée, c'est à dire que l'IHM est sur mon bureau, et les tables sur le serveur.
Si je vais voir les liaisons entre mes tables sur le serveur, j'obtient la copie d'écran1
Maintenant si je me met dans mon IHM en mode requete, que j'affiche les tables liées à ma table intervention, les tables duréeIntervention et duréeArrêt ne sont pas liées.
Je peux les lier manuellement, mais je ne récupere que les ID de la table intervention et non pas les vrais durées.
Comment cela est-il possible?
Merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager