Accueil > > > GALERIE D'IMAGE SIMPLE ET FACILE A INTEGRER A VOS PAGES EXISTANTES
GALERIE D'IMAGE SIMPLE ET FACILE A INTEGRER A VOS PAGES EXISTANTES
Information sur la source
Description
Ce script permet de crrer une galerie d'image. Pour cela il suffit de creer un dossier dans lequel vous placerez vos sous dossier images. Les noms de dossiers devront etre explicite quand au contenu, car nous allons generer une liste de lien hypertext dont les noms seront ceux des sous dossiers. Ensuite, il faudra integrer une page index a vos sous dossier image. Ce fichier index va s'occuper de tout le reste. Verifier combien de fichiers images se trouve dans son dossier, verifier si un dossier tb existe dans le dossier et le creer le cas echéant. Verifier s'il existe pour chaque image sa miniature dans le dossier tb. Ensuite il va afficher un nombre X de miniatures suivant les valeurs contenu dans la page index. Si le dossier contient plus d'image qu'il n'en affiche, il va genrer autant de liens de page que necessaire. Voila... tout simple, avec seulement 2 fichiers a rajouter. Le script s'occupe de tout le reste...
Source
- //premiere page, qui va lister tout les sous-dossiers d'un répertoire choisi
-
- <tr>
- <td colspan="3" id="borduretitre"><h1>Liste des MANGAS disponible</h1></td> //l'id du tableau correspond à mon fichier css, vous pouvez supprimer la mise en forme du tableau
- </tr>
- <tr>
- <td height="21" id="bordure"></td> // idem, vous pouvez supprimer la mise en forme de la cellule
- </tr>
- <tr>
- <td colspan="3" id="tableau" align="center"> // etc
- <?php
- // la fonction qui suit permet de lister les sous répertoires, il est possible de demander a la fonction de lister les sous dossiers, les sous sous dossiers, etc etc, mais ici nous ne le voulons pas
- function filelist ($startdir="./", $searchSubdirs=1, $directoriesonly=0, $maxlevel="all", $level=1) {
- $ignoredDirectory[] = ".";
- $ignoredDirectory[] = "..";
- $ignoredDirectory[] = "_vti_pvt";
- $ignoredDirectory[] = "_vti_cnf";
- $ignoredDirectory[] = "_private";
- global $directorylist;
- if (is_dir($startdir)) {
- if ($dh = opendir($startdir)) {
- while (($file = readdir($dh)) !== false) {
- if (!(array_search($file,$ignoredDirectory) > -1)) {
- if (filetype($startdir . $file) == "dir") {
- $directorylist[$startdir . $file]['dir'] = 1;
- $directorylist[$startdir . $file]['name'] = $file;
- }}}
- closedir($dh);
- }}
- return($directorylist);
- }
- $files = filelist("images/",1,1); // nous demandons de scanner le repertoire images/ les valeurs qui suivent permetent de preciser si on veut compter les sous dossiers, enfin bref, on met tout a 1 ici
- foreach ($files as $list) {
- echo "<a href=?page=images/" . $list['name'] . "/index>" . $list['name'] ."</a><br>"; // on affiche la liste sous forme de lien
- }?>
- </td>
- </tr>
- // fin de la premiere page, vous pouvez l appeler explorermachin.php, notez que vous devrez appeler cette page dans une de vos propres page avec un include et un lien genre <a href=?page=explorermachin>images de machin</a> si vous mettez la page explorermachin dans le meme dossier que votre page qui appelera l explorermanga tout ce passera bien comme ca
-
- //la page index qui va faire tout le boulot, a noter que la page explorermanga va afficher la page index toujour dans votre page dans l'include que vous aurez creer.
-
- <tr>
- <td colspan="3" id="borduretitre"><h1><?php echo str_replace('images/', '',str_replace('/index', '', $_GET['page']));?></h1></td>
- </tr>
- <tr>
- <td height="21" id="bordure"></td>
- </tr>
- <tr>
- <td colspan="3" id="tableau" align="center">
- <table align="center"><tr>
- <?php
- $extensions_autorisees = array('jpg','jpeg','gif','png');
- $totalimg = 0;
- $page = str_replace('index', '', $_GET['page']); // on recupere le chemin du fichier index et on enleve index du nom pour en avoir que le chemin repertoire
- $dir = $page;
- if (is_dir($dir)) {
- if ($dh = opendir($dir)) {
- while (($file = readdir($dh)) !== false) {
- $ext = substr(strrchr($file, "."), 1);
- if (in_array(strtolower($ext),$extensions_autorisees)){
- $totalimg ++;
- }}}
- closedir($dh);
- }
- if (isset($_GET['id'])) // le id permet de faire savoir à la page index quelle page on affiche
- $id = $_GET['id'];
- else
- $id = 1; // si l'id ne contient rien, il s'agit alors de la premiere page
- $lmax = 5; // nombre d'image par ligne
- $hmax = 4; // nombre de colonnes max par page
- $nbpagemax = ceil($totalimg / ($lmax * $hmax)); //on calcul le nombre de page max
- function miniature($picture,$rep,$fext) // début de la fonction qui genere les miniatures
- {
- if (file_exists($rep . "tb/mini_" . $picture) == false) {
- if ($fext == "jpg") { $source = imagecreatefromjpeg($rep . $picture);}
- elseif ($fext == "gif") { $source = imagecreatefromgif($rep . $picture);}
- else { $source = imagecreatefrompng($rep . $picture);}
- $destination = imagecreatetruecolor(200, 150); // On crée la miniature vide
- $largeur_source = imagesx($source);
- $hauteur_source = imagesy($source);
- $largeur_destination = imagesx($destination);
- $hauteur_destination = imagesy($destination);
- imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
- imagejpeg($destination, $rep . 'tb/mini_' . $picture);
- }
- } //fin de la fonction
- $page = str_replace('index', '', $_GET['page']); // on recupere le chemin du fichier index et on enleve index du nom pour en avoir que le chemin repertoire
- $dir = $page;
- if (file_exists($dir . "tb/") == false) { //on verifie ensuite si on possede un dossier tb dans le dossier image
- mkdir ($dir . "tb/", 0777); // si ce nest pas le cas, on creer le dossier
- }
- if ($id > 1)
- $nombreimage = ($id - 1) * ($lmax * $hmax); //si ID est superieur a 1 on reprend le compte de la variable la ou elle en etait
- else
- $nombreimage = 0;
- $verifnbimg = 0;
- $intervalle = 0;
- $nbligne = 0;
- $nbpage = 1;
- // 2 a la variable, ce qui correspond au fichier index et le repertoire tb, attention tout de meme a ne pas avoir de fichier thunbs.db dans
- //le repertoire sous peine de fausser le compte
- if (is_dir($dir)) {
- if ($dh = opendir($dir)) {
- while (($file = readdir($dh)) !== false) {
- $ext = substr(strrchr($file, "."), 1);
- if (in_array(strtolower($ext),$extensions_autorisees)){
- if ($nbligne !== $hmax AND $verifnbimg == $nombreimage AND $nombreimage <= $id * ($lmax * $hmax)) { //on verifie qu on affiche bien les images en fonction de la page
- miniature($file, $dir, $ext); // on verifie avec la fonction que la miniature du fichier existe, sinon on la creer
- //les lignes qui suivent affiches les miniatures, son nom, son extension et sa taille
- if ($ext == "jpg") { $source = imagecreatefromjpeg($dir . $file);}
- elseif ($ext == "gif") { $source = imagecreatefromgif($dir . $file);}
- else { $source = imagecreatefrompng($dir . $file);}
- echo "<td width=170 align=center>
- <a href=" . $dir . $file . " target=_blank><img src=" . $dir . "tb/mini_" . $file . " width=150 height=100 border=0></a>
- <br><img width=30 height=30 src=images/" . $ext . ".png>
- Nom: " . str_replace("." . $ext, '', $file) . "
- <br> taille : " . ceil(filesize($dir . $file)/1000) . " Ko<br>
- " . imagesx($source) . " x " . imagesy($source) . "</td>";
- //fin de l affichage des miniatures
- if ($nombreimage < $totalimg) {
- $nombreimage ++;
- }
- $intervalle ++;
- // cette ligne permet de passer a la colonne suivante apres avoir affiche x images
- if ($intervalle == $lmax) { $nbligne ++; echo "</tr><tr>"; $intervalle = 0; }
- }
- $verifnbimg ++;
- }}
- closedir($dh);
- }
- }
- // maintenant on va creer autant de page qu'il faudra pour afficher toutes les images
- if ($nbpagemax > 1) { // si le nombre d image ne depasse pas le nombre max par page il est inutile d afficher les pages
- echo "<tr><td align=right colspan=" . $lmax .">Pages";
- while ($nbpage < $nbpagemax) {
- echo " <a href=?page=" . $dir ."index&id=" . $nbpage . ">" . $nbpage . ",";
- $nbpage++; }
- echo " <a href=?page=" . $dir ."index&id=" . $nbpage . ">" . $nbpage; } // on repete encore une fois l instruction avant d afficher la
- // derniere page pour eviter de mettre la , a la fin du dernier numero
- echo "<tr><td align=right colspan=" . $lmax .">images : " . $nombreimage . "/" . $totalimg . "</td></tr>";
- //petit plus, on affiche combien d'image est affiché par rapport au nombre max du dossier
- ?>
- </tr></table></td></tr>
-
- //fin de la page index, j'ai essayé de la détailler un peu...
//premiere page, qui va lister tout les sous-dossiers d'un répertoire choisi
<tr>
<td colspan="3" id="borduretitre"><h1>Liste des MANGAS disponible</h1></td> //l'id du tableau correspond à mon fichier css, vous pouvez supprimer la mise en forme du tableau
</tr>
<tr>
<td height="21" id="bordure"></td> // idem, vous pouvez supprimer la mise en forme de la cellule
</tr>
<tr>
<td colspan="3" id="tableau" align="center"> // etc
<?php
// la fonction qui suit permet de lister les sous répertoires, il est possible de demander a la fonction de lister les sous dossiers, les sous sous dossiers, etc etc, mais ici nous ne le voulons pas
function filelist ($startdir="./", $searchSubdirs=1, $directoriesonly=0, $maxlevel="all", $level=1) {
$ignoredDirectory[] = ".";
$ignoredDirectory[] = "..";
$ignoredDirectory[] = "_vti_pvt";
$ignoredDirectory[] = "_vti_cnf";
$ignoredDirectory[] = "_private";
global $directorylist;
if (is_dir($startdir)) {
if ($dh = opendir($startdir)) {
while (($file = readdir($dh)) !== false) {
if (!(array_search($file,$ignoredDirectory) > -1)) {
if (filetype($startdir . $file) == "dir") {
$directorylist[$startdir . $file]['dir'] = 1;
$directorylist[$startdir . $file]['name'] = $file;
}}}
closedir($dh);
}}
return($directorylist);
}
$files = filelist("images/",1,1); // nous demandons de scanner le repertoire images/ les valeurs qui suivent permetent de preciser si on veut compter les sous dossiers, enfin bref, on met tout a 1 ici
foreach ($files as $list) {
echo "<a href=?page=images/" . $list['name'] . "/index>" . $list['name'] ."</a><br>"; // on affiche la liste sous forme de lien
}?>
</td>
</tr>
// fin de la premiere page, vous pouvez l appeler explorermachin.php, notez que vous devrez appeler cette page dans une de vos propres page avec un include et un lien genre <a href=?page=explorermachin>images de machin</a> si vous mettez la page explorermachin dans le meme dossier que votre page qui appelera l explorermanga tout ce passera bien comme ca
//la page index qui va faire tout le boulot, a noter que la page explorermanga va afficher la page index toujour dans votre page dans l'include que vous aurez creer.
<tr>
<td colspan="3" id="borduretitre"><h1><?php echo str_replace('images/', '',str_replace('/index', '', $_GET['page']));?></h1></td>
</tr>
<tr>
<td height="21" id="bordure"></td>
</tr>
<tr>
<td colspan="3" id="tableau" align="center">
<table align="center"><tr>
<?php
$extensions_autorisees = array('jpg','jpeg','gif','png');
$totalimg = 0;
$page = str_replace('index', '', $_GET['page']); // on recupere le chemin du fichier index et on enleve index du nom pour en avoir que le chemin repertoire
$dir = $page;
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
$ext = substr(strrchr($file, "."), 1);
if (in_array(strtolower($ext),$extensions_autorisees)){
$totalimg ++;
}}}
closedir($dh);
}
if (isset($_GET['id'])) // le id permet de faire savoir à la page index quelle page on affiche
$id = $_GET['id'];
else
$id = 1; // si l'id ne contient rien, il s'agit alors de la premiere page
$lmax = 5; // nombre d'image par ligne
$hmax = 4; // nombre de colonnes max par page
$nbpagemax = ceil($totalimg / ($lmax * $hmax)); //on calcul le nombre de page max
function miniature($picture,$rep,$fext) // début de la fonction qui genere les miniatures
{
if (file_exists($rep . "tb/mini_" . $picture) == false) {
if ($fext == "jpg") { $source = imagecreatefromjpeg($rep . $picture);}
elseif ($fext == "gif") { $source = imagecreatefromgif($rep . $picture);}
else { $source = imagecreatefrompng($rep . $picture);}
$destination = imagecreatetruecolor(200, 150); // On crée la miniature vide
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);
$largeur_destination = imagesx($destination);
$hauteur_destination = imagesy($destination);
imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
imagejpeg($destination, $rep . 'tb/mini_' . $picture);
}
} //fin de la fonction
$page = str_replace('index', '', $_GET['page']); // on recupere le chemin du fichier index et on enleve index du nom pour en avoir que le chemin repertoire
$dir = $page;
if (file_exists($dir . "tb/") == false) { //on verifie ensuite si on possede un dossier tb dans le dossier image
mkdir ($dir . "tb/", 0777); // si ce nest pas le cas, on creer le dossier
}
if ($id > 1)
$nombreimage = ($id - 1) * ($lmax * $hmax); //si ID est superieur a 1 on reprend le compte de la variable la ou elle en etait
else
$nombreimage = 0;
$verifnbimg = 0;
$intervalle = 0;
$nbligne = 0;
$nbpage = 1;
// 2 a la variable, ce qui correspond au fichier index et le repertoire tb, attention tout de meme a ne pas avoir de fichier thunbs.db dans
//le repertoire sous peine de fausser le compte
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
$ext = substr(strrchr($file, "."), 1);
if (in_array(strtolower($ext),$extensions_autorisees)){
if ($nbligne !== $hmax AND $verifnbimg == $nombreimage AND $nombreimage <= $id * ($lmax * $hmax)) { //on verifie qu on affiche bien les images en fonction de la page
miniature($file, $dir, $ext); // on verifie avec la fonction que la miniature du fichier existe, sinon on la creer
//les lignes qui suivent affiches les miniatures, son nom, son extension et sa taille
if ($ext == "jpg") { $source = imagecreatefromjpeg($dir . $file);}
elseif ($ext == "gif") { $source = imagecreatefromgif($dir . $file);}
else { $source = imagecreatefrompng($dir . $file);}
echo "<td width=170 align=center>
<a href=" . $dir . $file . " target=_blank><img src=" . $dir . "tb/mini_" . $file . " width=150 height=100 border=0></a>
<br><img width=30 height=30 src=images/" . $ext . ".png>
Nom: " . str_replace("." . $ext, '', $file) . "
<br> taille : " . ceil(filesize($dir . $file)/1000) . " Ko<br>
" . imagesx($source) . " x " . imagesy($source) . "</td>";
//fin de l affichage des miniatures
if ($nombreimage < $totalimg) {
$nombreimage ++;
}
$intervalle ++;
// cette ligne permet de passer a la colonne suivante apres avoir affiche x images
if ($intervalle == $lmax) { $nbligne ++; echo "</tr><tr>"; $intervalle = 0; }
}
$verifnbimg ++;
}}
closedir($dh);
}
}
// maintenant on va creer autant de page qu'il faudra pour afficher toutes les images
if ($nbpagemax > 1) { // si le nombre d image ne depasse pas le nombre max par page il est inutile d afficher les pages
echo "<tr><td align=right colspan=" . $lmax .">Pages";
while ($nbpage < $nbpagemax) {
echo " <a href=?page=" . $dir ."index&id=" . $nbpage . ">" . $nbpage . ",";
$nbpage++; }
echo " <a href=?page=" . $dir ."index&id=" . $nbpage . ">" . $nbpage; } // on repete encore une fois l instruction avant d afficher la
// derniere page pour eviter de mettre la , a la fin du dernier numero
echo "<tr><td align=right colspan=" . $lmax .">images : " . $nombreimage . "/" . $totalimg . "</td></tr>";
//petit plus, on affiche combien d'image est affiché par rapport au nombre max du dossier
?>
</tr></table></td></tr>
//fin de la page index, j'ai essayé de la détailler un peu...
Conclusion
FONCTIONNEMENT: Je vais essayer de faire simple. Prenez une page de votre site dans lequel vous voulez afficher votre galerie d'image. Imagions que vous ayez un cadre dans lequel vous voulez afficher la galerie. Dans le cadre il faudra y entrer votre include. vous pouvez directement afficher la page explorermanga, ou bien utiliser le cadre pour afficher diverses autres pages, comme vos news, etcetc... Au quel cas il faudra alors creer un lien dans votre page pour appeler l'explorateur.
Par defaut, mettez vos images dans un dossier images/ que vous mettrez dans le dossier qui contient votre page et la page de l'explorateur. (j'appel ca un explorateur a tord car il permet seulement de lister les sous repertoires du dossier images)
Dans chaque sous dossier que vous mettrez, ajouter une page index. Qu'importe le nom du sous répertoire, et qu'importe le nombre, copiez collez simplement la page index dans chaque sous répertoire. Pour les plus débutants (comme moi, je mettrais un exemple dans le zip)
Bug connu: Aucun à ma connaissance, simplement, pour les noms d'image, ne mettez pas d'espace dans vos noms, si vous mettez des images du style: DBZ 01.jpg vous aurez des problemes, mettez DBZ01.jpg Si vous remplacez vos images en gardant le nom de l'image remplacé, les miniatures ne seront pas remplacer. Dans le doute, supprimez simplement le répertoire TB dans le dossier image modifié.
Historique
- 31 mai 2007 19:57:09 :
- Archive modifié pour que tout fonctionne sans rien toucher aux pages ni aux codes. Rajout de 3 images pour les extensions.
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
galerie photo [ par SalahDN25 ]
Salut tous le monde,je voudrais réaliser une galerie photos dans une page qui contien une table à deux colonnes: ma vision est de faire defiler vertic
galerie image [ par djbabou ]
Bonjour à tous ... Me revoici sur codes sources avec une nouvelle quesion: J'ai développé une galerie d'image très simple en pure css/html. En fait,
Requête dans des colonnes multiples [ par Francois402 ]
Bonjour à tous Je fais une galerie de photos dynamique avec des clients et employés d'une entreprise. Pour chaque entrée de photo dans le CMS, il y a
prévisualisation d'une image [ par khumalo1 ]
salut j'amerais faire un formulaire d'enregistrement d'un membre avec enregistrement de photo.comment faire pour prévisualiser la photo avant enregis
Moteur de recherche associé a ma galerie PHOTO (2 Q. en 1) [ par mastermh73 ]
[i]2 Questions en 1 [b]Bonjour tout le monde[/b], je ne sais pas si c possible, de créer un moteur de recherche associé a ma galerie d'image qui ser
[BAR]Moteur de recherche associé a ma galerie PHOTO (2 Q. en 1) [ par mastermh73 ]
[i]2 Questions en 1 [b]Bonjour tout le monde[/b], je ne sais pas si c possible, de créer un moteur de recherche associé a ma galerie d'image qui ser
Moteur de recherche associé a ma galerie PHOTO (2 Q. en 1) [ par mastermh73 ]
[i]2 Questions en 1 [b]Bonjour tout le monde[/b], je ne sais pas si c possible, de créer un moteur de recherche associé a ma galerie d'image qui ser
problème upload d'une image dans le bon dossier de destination [ par rachoup ]
Bonjour , voilà quelques jours que je plante sur un souci qui peut être serait tout bête si kelk'un m'aidait en y jetant un coup. j'ai lu et relu mon
redimensionner une photo lrs de l'upload [ par boubeuch1 ]
Bonjour, Je souhaiterais faire en sorte que quelque soit la taille de l'image d'origine, lorsqu'elle est téléchargé sur le serveur, celle-ci est redi
insertion d'une image sur une photo php [ par boubeuch1 ]
Bonjour, Je fais actuellement un site ou je dois gérer des voitures en vente et bientot disponible. Sur les voiture bientot disponible il faut que j'
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|