<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Blogs</title>
		<link>https://www.developpez.net/forums/blogs/</link>
		<description>Developpez.com, le Club des Développeurs et IT Pro</description>
		<language>fr</language>
		<lastBuildDate>Wed, 06 May 2026 09:28:53 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.jpg</url>
			<title>Forum du club des développeurs et IT Pro - Blogs</title>
			<link>https://www.developpez.net/forums/blogs/</link>
		</image>
		<item>
			<title><![CDATA[[FMX] Un dialogue d'ouverture de fichier "stylisé" - partie arborescence]]></title>
			<link>https://www.developpez.net/forums/blogs/138527-sergiomaster/b10770/fmx-dialogue-douverture-fichier-stylise-partie-arborescence/</link>
			<pubDate>Sun, 26 Apr 2026 09:40:18 GMT</pubDate>
			<description>Au risque de réinventer une...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Au risque de réinventer une roue existante que je n'aurais pas trouvée, j'ai décidé de créer mon dialogue.<br />
<br />
Il y a tout d'abord une première particularité à l'utilisation du <b>TTreeview</b> Firemonkey la création des éléments est vraiment différente de celle de VCL.<br />
Je vous livre mon secret pour optimiser le chargement : ne pas tout balayer mais seulement les répertoires enfants mais quand même indiquer s'il y a des branches possibles grâce à un élément fantôme.  <br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code Delphi :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">procedure</span> TForm1.AddDirectories<span class="br0">&#40;</span>ParentNode: TTreeviewItem; <span style="color: #0000ff;">const</span> Path: <span style="color: #0080ff;">string</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">var</span>
  SubDirs: TStringDynArray;
  SubDir: <span style="color: #0080ff;">string</span>;
  NewNode: TTreeviewItem;
  HasChildren: <span style="color: #0080ff;">Boolean</span>;
<span style="color: #0000ff;">begin</span>
  <span style="color: #0000ff;">if</span> DirectoryExists<span class="br0">&#40;</span>Path<span class="br0">&#41;</span> <span style="color: #0000ff;">then</span>
  <span style="color: #0000ff;">begin</span>
    NewNode:=<span style="color: #0000ff;">nil</span>;
    SubDirs := TDirectory.GetDirectories<span class="br0">&#40;</span>Path, <span style="color: #FF0000;">'*.*'</span>,
      TSearchOption.soTopDirectoryOnly<span class="br0">&#41;</span>;                <span style="color: #808080;">// un seul r&eacute;pertoire &agrave; la fois</span>
      <span style="color: #0000ff;">if</span> Sizeof<span class="br0">&#40;</span>subdirs<span class="br0">&#41;</span> &gt; <span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">then</span>
    <span style="color: #0000ff;">begin</span>
      <span style="color: #0000ff;">for</span> SubDir <span style="color: #0000ff;">in</span> SubDirs <span style="color: #0000ff;">do</span>
      <span style="color: #0000ff;">begin</span>
        <span style="color: #0000ff;">if</span> <span style="color: #0000ff;">not</span> DirectoryExists<span class="br0">&#40;</span>subdir<span class="br0">&#41;</span> <span style="color: #0000ff;">then</span> continue;
        <span style="color: #0000ff;">try</span>
          HasChildren := Length<span class="br0">&#40;</span>TDirectory.GetDirectories<span class="br0">&#40;</span>SubDir<span class="br0">&#41;</span><span class="br0">&#41;</span> &gt; <span style="color: #cc66cc;">0</span>;
          NewNode := TTreeViewItem.Create<span class="br0">&#40;</span>ParentNode<span class="br0">&#41;</span>;
          NewNode.Parent := ParentNode;
          NewNode.Text := TPath.GetFileName<span class="br0">&#40;</span>SubDir<span class="br0">&#41;</span>; <span style="color: #808080;">// Nom seul, sans le chemin</span>
          NewNode.ImageIndex := <span style="color: #cc66cc;">0</span>;
          NewNode.TagString := StrNew<span class="br0">&#40;</span><span style="color: #0080ff;">PChar</span><span class="br0">&#40;</span>SubDir<span class="br0">&#41;</span><span class="br0">&#41;</span>; <span style="color: #808080;">// Chemin complet stock&eacute;</span>
          NewNode.OnClick := TreeViewItemClick;
          <span style="color: #808080;">// V&eacute;rifie si ce sous-dossier a lui-m&ecirc;me des enfants</span>
          <span style="color: #808080;">// pour afficher ou non le bouton [+]</span>
        <span style="color: #0000ff;">except</span>
          HasChildren := <span style="color: #0000ff;">False</span>;
        <span style="color: #0000ff;">end</span>;
&nbsp;
        <span style="color: #0000ff;">if</span> HasChildren <span style="color: #0000ff;">then</span>
          <span style="color: #808080;">// N&#156;ud fant&ocirc;me : d&eacute;clenche l'affichage du bouton [+]</span>
         <span style="color: #0000ff;">begin</span>
           NoeudFantome<span class="br0">&#40;</span>NewNode<span class="br0">&#41;</span>;
         <span style="color: #0000ff;">end</span>;
      <span style="color: #0000ff;">end</span>;
    <span style="color: #0000ff;">end</span>;
  <span style="color: #0000ff;">end</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">procedure</span> TForm1.NoeudFantome<span class="br0">&#40;</span>ParentNode: TTreeViewItem<span class="br0">&#41;</span>;
<span style="color: #0000ff;">var</span>
  NewNode: TTreeviewItem;
<span style="color: #0000ff;">begin</span>
  NewNode := TTreeViewItem.Create<span class="br0">&#40;</span>ParentNode<span class="br0">&#41;</span>;
  NewNode.ImageIndex := -<span style="color: #cc66cc;">1</span>;
  NewNode.Parent := ParentNode;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">procedure</span> TForm1.TreeViewItemClick<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">begin</span>
  <span style="color: #0000ff;">var</span> path := TTreeViewItem<span class="br0">&#40;</span>sender<span class="br0">&#41;</span>.TagString;
&nbsp;
  <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>TTreeViewItem<span class="br0">&#40;</span>sender<span class="br0">&#41;</span>.Count&gt;<span style="color: #cc66cc;">0</span><span class="br0">&#41;</span> <span style="color: #0000ff;">AND</span> <span class="br0">&#40;</span>TTreeViewItem<span class="br0">&#40;</span>sender<span class="br0">&#41;</span>.ItemByIndex<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span><span class="br0">&#41;</span>.ImageIndex=-<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> <span style="color: #0000ff;">then</span>
  <span style="color: #0000ff;">begin</span>
    TreeView1.BeginUpdate;
    FreeAndnil<span class="br0">&#40;</span>TTreeViewItem<span class="br0">&#40;</span>sender<span class="br0">&#41;</span>.ItemByIndex<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
    AddDirectories<span class="br0">&#40;</span>TTreeviewItem<span class="br0">&#40;</span>sender<span class="br0">&#41;</span>, TTreeViewItem<span class="br0">&#40;</span>sender<span class="br0">&#41;</span>.TagString<span class="br0">&#41;</span>;
    TTreeviewItem<span class="br0">&#40;</span>Sender<span class="br0">&#41;</span>.Expand;
    TreeView1.EndUpdate;
  <span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">end</span>;</pre></td></tr></table></pre>
</div><br />
Si on en reste là quand nous voulons obtenir les sous-répertoires en utilisant l'extenseur, nous verrons l'élément fantôme pas la suite de l'arborescence.<br />
<br />
<img src="https://www.developpez.net/forums/attachment.php?attachmentid=675938&amp;d=1777190265" border="0" alt="Nom : Capture.png
Affichages : 26
Taille : 13,0 Ko"  style="float: CONFIG" /><br />
  <br />
Le problème avec le <b>TTreeView</b> en Firemonkey est qu'il manque certains évènements défini en VCL comme le<b> OnExpanding</b> et si l'on utilise l'extenseur, l'évènement  <b>TreeViewItem.OnClick</b> n'est pas déclenché.  <br />
<br />
Donc comment procéder ? J'ai testé plusieurs solutions en commençant par le surclassement de <b>TTreeViewItem</b>.<br />
Puis j'ai fait des tentatives de désactivation du bouton extenseur en accédant au style de l'élément. <br />
<br />
<img src="https://www.developpez.net/forums/attachment.php?attachmentid=675939&amp;d=1777191155" border="0" alt="Nom : Capture.png
Affichages : 27
Taille : 6,8 Ko"  style="float: CONFIG" /><br />
<br />
Celles-ci paraissaient prometteuses mais, hélas, pas toujours efficace. Dans l'image suivante l'extenseur de <b><i>TreeviewItem6</i></b> devrait être grisé. <br />
<br />
<img src="https://www.developpez.net/forums/attachment.php?attachmentid=675940&amp;d=1777192874" border="0" alt="Nom : Capture.png
Affichages : 30
Taille : 30,2 Ko"  style="float: CONFIG" /> <br />
<br />
Cependant la piste du style se révèle être la bonne si l'on utilise les spécificités des styles Firemonkey, à savoir la méthode de recherche d'un style d'élément (stylelookup). <br />
J'ai commencé par déposer un nouveau <b>TStyleBook</b> sur le formulaire.   <br />
Puis j'ai ouvert le style en cours pour copier le l'élément nommé <b><i>treeviewitemstyle</i></b> afin de le coller dans ce nouveau <b>Stylebook</b>.<br />
J'ai ensuite renommé ce dernier en <b><i>treeviewitemghosted</i></b>.<br />
J'ai ensuite changé le comportement du bouton en mettant simplement la propriété <b>HitTest</b> à false.<br />
Enfin, pour que l'affichage du texte soit correct quelque soit le style en cours, j'ai supprimé <b>TText</b> pour le remplacer par un <b>TLabel</b>.<br />
<img src="https://www.developpez.net/forums/attachment.php?attachmentid=675942&amp;d=1777193762" border="0" alt="Nom : Capture.png
Affichages : 22
Taille : 56,2 Ko"  style="float: CONFIG" /><br />
<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code Delphi :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br /></div></td><td valign="top"><pre style="margin: 0">procedure TForm1.AddDirectories(ParentNode: TTreeviewItem; const Path: string);
var
  SubDirs: TStringDynArray;
  SubDir: string;
  NewNode: TTreeviewItem;
  HasChildren: Boolean;
begin
  if DirectoryExists(Path) then
  begin
    NewNode:=nil;
    SubDirs := TDirectory.GetDirectories(Path, '*.*',
      TSearchOption.soTopDirectoryOnly);
      if Sizeof(subdirs) &gt; 0 then
    begin
      for SubDir in SubDirs do
      begin
        if not DirectoryExists(subdir) then continue;
        try
          HasChildren := Length(TDirectory.GetDirectories(SubDir)) &gt; 0;
          NewNode := TTreeViewItem.Create(ParentNode);
          NewNode.Parent := ParentNode;
          NewNode.Text := TPath.GetFileName(SubDir); // Nom seul, sans le chemin
          NewNode.ImageIndex := 0;
          NewNode.TagString := StrNew(PChar(SubDir)); // Chemin complet stocké
          NewNode.OnClick := TreeViewItemClick;
          // Vérifie si ce sous-dossier a lui-même des enfants
          // pour afficher ou non le bouton [+]
        except
          HasChildren := False;
        end;

        if HasChildren then
          // Nœud fantôme : déclenche l'affichage du bouton [+]
         begin
         <font color="#0000FF"> newNode.StyleLookup:='treeviewitemghosted';</font>
          NoeudFantome(NewNode);
         end;
      end;
    end;
  end;
end;
end;

procedure TForm1.TreeViewItemClick(Sender: TObject);
begin
  var path := TTreeViewItem(sender).TagString;
<font color="#0000FF">  if TTreeViewItem(sender).StyleLookup.EndsWith('ghosted') then</font>
  begin
    TreeView1.BeginUpdate;
 <font color="#0000FF">   TTreeViewItem(sender).StyleLookup:=''; // style en cours
    TTreeViewItem(sender).NeedStyleLookup;</font> // ne pas oublier
    FreeAndnil(TTreeViewItem(sender).ItemByIndex(0));
    AddDirectories(TTreeviewItem(sender), TTreeViewItem(sender).TagString);
    TTreeviewItem(Sender).Expand;
    TreeView1.EndUpdate;
  end;
  
end;
end;</pre></td></tr></table></pre>
</div><br />
Le résultat final <br />
<br />
<img src="https://www.developpez.net/forums/attachment.php?attachmentid=675944&amp;d=1777197217" border="0" alt="Nom : Dialogue.gif
Affichages : 30
Taille : 1,83 Mo"  style="float: CONFIG" /><br />
<br />
Le prochain billet parlera de comment j'ai traité la liste (<b>TListBox</b>) droite</blockquote>

]]></content:encoded>
			<dc:creator>SergioMaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/138527-sergiomaster/b10770/fmx-dialogue-douverture-fichier-stylise-partie-arborescence/</guid>
		</item>
		<item>
			<title>Nouveau pack de ressources offertes sur Fab (Avril)</title>
			<link>https://www.developpez.net/forums/blogs/240267-littlewhite/b10769/nouveau-pack-ressources-offertes-fab-avril/</link>
			<pubDate>Tue, 21 Apr 2026 15:36:12 GMT</pubDate>
			<description>Epic Games à travers sa...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Epic Games à travers sa plateforme Fab.com offre de nouvelles ressources disponibles durant deux semaines :<br />
<br />
<ul><li style="">un <a href="https://www.fab.com/listings/14e5f29e-26eb-4b7c-82c6-e48e43fd1276" target="_blank">effet de rendu</a> pour simuler la cassette vidéo (VHS) d'une caméra au torse (bodycam) ;</li><li style="">une <a href="https://www.fab.com/listings/ec2385d7-3e02-494b-a243-e18cac7f4a69" target="_blank">station sous-marine</a> ;</li><li style="">un ensemble de <a href="https://www.fab.com/listings/ea4d6c6f-83d9-4250-a12b-7393753db0f2" target="_blank">ponts modernes</a>.</li></ul></blockquote>

]]></content:encoded>
			<dc:creator>LittleWhite</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/240267-littlewhite/b10769/nouveau-pack-ressources-offertes-fab-avril/</guid>
		</item>
		<item>
			<title><![CDATA[Ellaboration d'une IA avec l'aide de CLAUDE pour un jeu de plateau développé en Delphi]]></title>
			<link>https://www.developpez.net/forums/blogs/27025-gouyon/b10768/ellaboration-d-ia-l-aide-claude-jeu-plateau-developpe-delphi/</link>
			<pubDate>Sat, 18 Apr 2026 20:16:56 GMT</pubDate>
			<description><![CDATA[*_Introduction:_* 
J'ai...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><b><i><u>Introduction:</u></i></b><br />
J'ai développé en delphi un jeu de plateau assimilable à un jeu de dame. Plus précisément il s'agit de GIPF premier jeu de la série du projet GIPF qui est une série de jeux de stratégie combinatoires abstraits créés par Kris Burm entre 1997 et 2017, qui opposent deux joueurs (<a href="https://fr.wikipedia.org/wiki/Projet_GIPF" target="_blank">Pour plus de détail suivre ce lien</a>). Je souhaitais ajouter à ce jeu la capacité de jouer contre la machine et ce n'est pas évident du tout. Mes premières approches ont été d'utiliser des algorithmes du type min-max puis j'ai fait de l'apprentissage renforcé (Q-Learning). Mais compte tenu du nombre de combinaisons possibles, ces algorithmes ne pouvaient pas répondre au besoin. Du coup j'ai envisagé l'apprentissage profond renforcé (deep Q-Learning). Il s'agit d'une extension de l'apprentissage renforcé qui utilise un réseau neuronal pour estimer les valeurs de renforcement. Le problème est que je ne savais pas du tout comment m'y prendre. En effet on trouve beaucoup d'articles sur ce sujet sur internet mais ils ont tendance à toujours reprendre les mêmes exemples et à être très généraux. De plus les codes sont en Python et je ne me voyais pas coder à nouveau mon jeu en Python. N'ayant pas réussi à trouver mon bonheur j'ai tenté l'IA.<br />
<br />
<b><i><u>Merci à l'IA:</u></i></b><br />
J'ai testé plusieurs IA chatGPT ,Perpexity mais c'est Claude qui m'a donné le meilleur résultat. En effet une fois le problème exposé, il m'a proposé plusieurs solutions comme les autres mais en plus après quelques précisions de ma part, il m'a fourni les codes en python et en pascal pour faire fonctionner mon IA. N'ayant qu'une connaissance très approximative de Python il m'a indiqué comment faire les installations et il m'a aussi indiqué quelles corrections faire lorsque je lui remontais des erreurs. Afin d'éviter de coder à nouveau le jeu en Python, j'ai demandé à Claude de me fournir une solution basé sur le principe dans lequel je allais fournir au modèle un ensemble d'expériences. Chaque expérience est composée d'une situation de mon plateau de jeu à laquelle j'associe un coup et une évaluation de la situation après que le coup a été joué.<br />
<br />
<b><i><u>Comment tout ça fonctionne</u></i></b><br />
Même si Claude a généré pas mal de code, j'ai quand même du faire un certain nombre de choses. Tout d'abord j'ai un algorithme qui génère des expériences les évalue (je détaillerai plus la fonction d'évaluation dans le chapitre suivant). Ensuite j'entraine le modèle à l'aide des codes Python et le résultat est exporté sous la forme d'un fichier JSON. Ensuite je lis ce fichier JSON ce qui me permet de créer un réseau de neurone sous delphi que j'utilise en l’alimentant avec une situation donnée et il me donne le meilleur coup possible qu'il a calculé.<br />
<br />
<b><i><u>La fonction d'évaluation</u></i></b><br />
Par principe l'apprentissage par renforcement fonctionne sur un système de récompense. Très grossièrement si le système joue bien, il est récompensé et s'il joue mal il est puni. C'est pourquoi la fonction d'évaluation est fondamentale. Et c'est ce qui m'a posé les plus grandes difficultés. Comme indiqué précédemment, pour une situation et un coup donné, il faut attribuer un réel dont la valeur comprise entre -1 (j'ai perdu) et 1 (j'ai gagné) représente le degré de récompense de ce coup. Et c'est là que ça peut devenir extrêmement compliqué. En effet dans le cas ou le coup mène à une victoire ou à une défaite, l'estimation est simple à faire c'est respectivement 1 ou -1. Par contre dans tous les autres cas c'est beaucoup plus compliqué car il faut attribuer une valeur qui indique si pour cette situation donnée ce coup est bon ou mauvais. La fonction d'évaluation doit être capable d'estimer cela. Par exemple pour GIPF, le but du jeu est de prendre tous les pions adverses. Donc on peut imaginer une fonction d'évaluation qui récompense en fonction de la différence entre son nombre de pions et celui de l'adversaire. Mais comme à chaque coup on ne prend pas systématiquement un pion adverse, il y a un bon nombre de situation et de coup qui vont être de même valeur d'évaluation. Or parmi ces situations, il est possible que certaines aboutissent à un coup gagnant pour l'adversaire. Du coup une situation qui est à priori bonne peut finir en catastrophe.<br />
<br />
<b><i><u>Le suivi du projet par Claude</u></i></b><br />
Après mes premiers tests, j'ai soumis à Claude les résultats et il m'a expliqué ce qui se passait de façon claire et il m'a conseillé un certain nombre de d'améliorations. Alors soyons honnête Claude n'a pas toujours raison et certaines de ses suggestions ont donné de mauvais résultats. Mais dans l'ensemble cela m'a permis d'avancer dans le projet.<br />
<br />
<b><i><u>En conclusion</u></i></b><br />
Je dirais que le point le plus positif a été de me mettre le pied à l'étrier. A partir du moment où Claude m'a fourni les premiers élément de code, j'ai pu commencer à faire quelque chose. Le second point positif c'est que j'ai pu &quot;dialoguer&quot; avec Claude pour améliorer le projet. Par contre il ne faut pas rêver même si Claude aide beaucoup, il y a énormément de travail à faire par la suite et à moins d'avoir un jeu très simple, l'obtention d'un résultat satisfaisant peut être longue et difficile.</blockquote>

]]></content:encoded>
			<dc:creator>Gouyon</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/27025-gouyon/b10768/ellaboration-d-ia-l-aide-claude-jeu-plateau-developpe-delphi/</guid>
		</item>
		<item>
			<title>Nouveau pack de ressources offertes sur Fab (Avril)</title>
			<link>https://www.developpez.net/forums/blogs/240267-littlewhite/b10764/nouveau-pack-ressources-offertes-fab-avril/</link>
			<pubDate>Wed, 08 Apr 2026 16:52:51 GMT</pubDate>
			<description>Epic Games à travers sa...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Epic Games à travers sa plateforme Fab.com offre de nouvelles ressources disponibles durant deux semaines :<br />
<ul><li style="">un <a href="https://www.fab.com/listings/25c67cda-991e-48a8-a194-478624ae4c0e" target="_blank">pack de ressources</a> pour recréer un donjon dans un style fantastique ;</li><li style="">une <a href="https://www.fab.com/listings/41b04af3-274d-4921-97e3-52aa7a6b45d5" target="_blank">forêt dans les ténèbres et peu accueillante</a> ;</li><li style="">un <a href="https://www.fab.com/listings/394c4850-c9af-461a-aaa8-921a3dd875cb" target="_blank">module</a> pour ajouter des notes dans vos blueprints.</li></ul></blockquote>

]]></content:encoded>
			<dc:creator>LittleWhite</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/240267-littlewhite/b10764/nouveau-pack-ressources-offertes-fab-avril/</guid>
		</item>
		<item>
			<title>Nouveau pack de ressources offertes sur Fab (Mars)</title>
			<link>https://www.developpez.net/forums/blogs/240267-littlewhite/b10753/nouveau-pack-ressources-offertes-fab-mars/</link>
			<pubDate>Tue, 24 Mar 2026 19:59:57 GMT</pubDate>
			<description>Epic Games à travers sa...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Epic Games à travers sa plateforme Fab.com offre de nouvelles ressources disponibles durant deux semaines :<br />
<ul><li style="">un <a href="https://www.fab.com/listings/89b16c3a-47ea-486e-ac09-bc2237af93f9" target="_blank">modèle de golem de pierre</a> ;</li><li style="">un <a href="https://www.fab.com/listings/fa19fa3a-62e4-4528-82dc-19bc66521f3b" target="_blank">village dans le style Steampunk</a> ;</li><li style="">un <a href="https://www.fab.com/listings/c1ea4a26-ea15-448a-9650-5ba91caa52bc" target="_blank">système pour faire apparaître des entités</a>.</li></ul></blockquote>

]]></content:encoded>
			<dc:creator>LittleWhite</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/240267-littlewhite/b10753/nouveau-pack-ressources-offertes-fab-mars/</guid>
		</item>
		<item>
			<title>Nouveau pack de ressources offertes sur Fab (Mars)</title>
			<link>https://www.developpez.net/forums/blogs/240267-littlewhite/b10752/nouveau-pack-ressources-offertes-fab-mars/</link>
			<pubDate>Sat, 14 Mar 2026 10:18:56 GMT</pubDate>
			<description>Epic Games à travers sa...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Epic Games à travers sa plateforme Fab.com offre de nouvelles ressources disponibles durant deux semaines :<br />
<ul><li style="">un <a href="https://www.fab.com/listings/3ce604c0-26a3-4268-8114-a884b80da94c" target="_blank">pack modulaire</a> pour créer un environnement avec un phare abandonné ;</li><li style="">un <a href="https://www.fab.com/listings/56d276bc-868e-44bd-b198-c036f2e48386" target="_blank">ensemble modulaire</a> de bâtiments en ruines ;</li><li style="">un <a href="https://www.fab.com/listings/05d90ca6-d294-4b93-a1b7-232214057850" target="_blank">ensemble d'animations</a> pour des combats de magie.</li></ul></blockquote>

]]></content:encoded>
			<dc:creator>LittleWhite</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/240267-littlewhite/b10752/nouveau-pack-ressources-offertes-fab-mars/</guid>
		</item>
		<item>
			<title>Nouveau pack de ressources offertes sur Fab</title>
			<link>https://www.developpez.net/forums/blogs/240267-littlewhite/b10749/nouveau-pack-ressources-offertes-fab/</link>
			<pubDate>Wed, 25 Feb 2026 21:09:07 GMT</pubDate>
			<description>Epic Games à travers sa...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Epic Games à travers sa plateforme Fab.com offre de nouvelles ressources disponibles durant deux semaines :<br />
<ul><li style="">des <a href="https://www.fab.com/listings/4d1e4ac0-a02b-4a6b-8562-db759bc395c7" target="_blank">personnages</a> dans un style fantastique ;</li><li style="">un <a href="https://www.fab.com/listings/d8ac4186-78f7-43c7-b21c-04b4dc0901a2" target="_blank">ensemble modulaire</a> pour faire une station de traitement dans un style science fiction ;</li><li style="">un <a href="https://www.fab.com/listings/da3e48f2-d703-4233-b667-d3f57a4c787a" target="_blank">ensemble d'effets</a> visuels pour des sorts magiques.</li></ul></blockquote>

]]></content:encoded>
			<dc:creator>LittleWhite</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/240267-littlewhite/b10749/nouveau-pack-ressources-offertes-fab/</guid>
		</item>
		<item>
			<title>Le logiciel libre comme objet idéologique : critique des tensions entre innovation, économie et politique</title>
			<link>https://www.developpez.net/forums/blogs/1854627-access_to_folder/b10748/logiciel-libre-objet-ideologique-critique-tensions-entre-innovation-economie-politique/</link>
			<pubDate>Mon, 23 Feb 2026 04:45:41 GMT</pubDate>
			<description>L’opposition entre logiciel...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">L’opposition entre logiciel libre et logiciel propriétaire est souvent présentée comme un débat interne à l’ingénierie logicielle. Pourtant, dès que l’on examine les arguments mobilisés, on découvre un affrontement qui déborde largement le cadre technique pour toucher aux fondements mêmes de l’économie politique contemporaine. Le logiciel, loin d’être un simple artefact fonctionnel, devient le lieu d’une controverse où se rejouent des tensions anciennes entre capitalisme et socialisme, entre marché et coopération, entre souveraineté et dépendance technologique.<br />
<br />
Ma première critique porte sur la capacité d’innovation du logiciel libre. Les projets libres les plus emblématiques ne constituent pas des innovations, mais pour la plupart des ré-implémentations de logiciels propriétaires préexistants, qui eux ont fait tout le travail méritoire de recherche et développement. Linux quasi ré-implémentaton d’Unix le système d'exploitation propriétaire qu'on ne peut que glorifier ; Apache dérive du serveur NCSA ; LibreOffice reproduit les usages de traitements de textes Wysiwyg dans la lignée des suites telles Microsoft Office. Le libre n’ouvrirait pas de voies nouvelles : il s’inscrirait dans les sillons tracés par l’industrie privée, dont il reprend les concepts, les interfaces et les marchés. Il ne serait pas un initiateur, mais un imitateur ; non un moteur, mais un suiveur. <br />
<br />
Cette dépendance conceptuelle se double d’une dépendance économique : en proposant gratuitement des équivalents fonctionnels de logiciels vendus, le libre affaiblit les revenus qui financent la recherche, la maintenance et l’innovation. La gratuité, loin d’être un simple avantage pour l’utilisateur, devient un facteur de déstabilisation structurelle. Elle assèche les ressources nécessaires à la production logicielle, tout en installant le libre dans une position paradoxale : dépendant des innovations du propriétaire dont le libre se nourrit, mais contribuant à réduire les conditions économiques qui les rendent possibles.<br />
<br />
Cette critique économique s’articule à une lecture politique plus profonde. Le mouvement du logiciel libre, avec son insistance sur la coopération, la circulation du savoir et la critique de la propriété intellectuelle, est interprété comme l’héritier d’une tradition socialiste ancienne. L’allusion à Louis Blanc, figure du socialisme français du XIX&#7497; siècle, n’est pas fortuite, voulant que toute propriété intellectuelle soit anéantie et que le fruit du travail intellectuel appartienne au peuple, que l'auteur travaille pour la gloire ou alors qu'il embrasse l'idéal socialiste pour lui remplir sa gamelle de survie. Le logiciel libre apparaît alors comme un projet de transformation sociale, qui cherche à substituer la logique de la coopération à celle du marché, et à remettre en cause les fondements du capitalisme logiciel, voire l'anéantir. Dans cette perspective, libérer un logiciel n’est pas un acte technique, mais un geste politique : affaiblir un éditeur, renforcer l’écosystème libre, rendre la gratuité plus attractive que la propriété, c’est participer à une entreprise de subversion économique.<br />
<br />
Pourtant, un autre argument, plus discret mais conceptuellement décisif, vient fissurer cette ambition politique : celui du hardware. Car si le logiciel libre revendique la transparence du code et la maîtrise des outils, cette maîtrise reste illusoire tant que le matériel lui-même demeure opaque. Le code peut être ouvert, auditable, modifiable ; mais il s’exécute sur des composants dont la conception, la fabrication et le fonctionnement échappent totalement à l’utilisateur. Rien ne garantit qu’un processeur, un contrôleur, un firmware ne comporte pas de fonctions cachées, de portes dérobées, de mécanismes de surveillance ou de verrouillage. Le logiciel libre, dans cette perspective, ne libère qu’une moitié du système : celle qui est visible. L’autre, enfouie dans le silicium, demeure inaccessible. <br />
Cette dépendance matérielle invalide en partie l’argument selon lequel l’ouverture du code suffirait à garantir la souveraineté technologique. Pour que la promesse du libre soit pleinement réalisée, il faudrait non seulement libérer le logiciel, mais aussi posséder les chaînes industrielles de fabrication des composants. Sans contrôle sur le matériel, la transparence du code reste une transparence conditionnelle, suspendue à la confiance envers des fabricants dont les intérêts, les pratiques et les contraintes géopolitiques échappent à l’utilisateur. La libération du logiciel se heurte alors à une limite structurelle : l’impossibilité, pour des raisons économiques, industrielles et géostratégiques, de libérer le matériel qui l’exécute.<br />
<br />
Ainsi, le logiciel libre se trouve pris dans une tension fondamentale. D’un côté, il porte une ambition politique forte, héritée des idéaux socialistes du XIX&#7497; siècle, qui valorise la coopération, la mutualisation et la critique de la propriété. De l’autre, il demeure dépendant d’une infrastructure matérielle profondément capitalistique, opaque, mondialisée, dont il ne maîtrise ni les conditions de production ni les logiques de fonctionnement. Le libre, en ce sens, n’est pas seulement un projet technique ou idéologique : il est un projet inachevé, qui souvent se nourrit de l'innovation des autres, dont la réalisation complète supposerait une transformation radicale de l’économie industrielle elle même.<br />
<br />
Cette contradiction révèle une question plus large, qui dépasse le numérique : peut-on réellement libérer un système sans libérer les infrastructures matérielles qui le rendent possible ? Le logiciel libre, en revendiquant la transparence du code, met en lumière l’opacité du matériel. Et cette opacité, tant qu’elle persiste, limite la portée de son projet politique sans minimiser en attendant les plaies faites au monde du logiciel propriétaire. La liberté logicielle, pour être totale, exigerait une souveraineté matérielle que ni les communautés du libre ni certains États ne possèdent aujourd’hui. C’est peut être là la limite la plus profonde du mouvement : vouloir libérer le monde numérique sans disposer des moyens industriels de sa libération.<br />
<br />
<br />
<i>Ce billet est le condensé de mes propos tenus lors d'un débat développé dans le sujet de discussion du forum :</i><br />
<a href="https://www.developpez.net/forums/d2181756/club-professionnels-informatique/actualites/piratage-logiciel-richard-stallman-affirme-partager-n-voler/" target="_blank">Piratage logiciel : Richard Stallman affirme que partager n’est pas vole</a></blockquote>

]]></content:encoded>
			<dc:creator>Access_to_folder</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/1854627-access_to_folder/b10748/logiciel-libre-objet-ideologique-critique-tensions-entre-innovation-economie-politique/</guid>
		</item>
		<item>
			<title>Emmabuntüs renforce l’accessibilité avec les versions Debian Édition 6 1.00 et 5 1.05</title>
			<link>https://www.developpez.net/forums/blogs/837113-patrick_emmabuntus/b10747/emmabuntues-renforce-l-accessibilite-versions-debian-edition-6-1-00-5-1-05/</link>
			<pubDate>Thu, 19 Feb 2026 19:14:44 GMT</pubDate>
			<description>Le collectif Emmabuntüs...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Le collectif Emmabuntüs annonce deux publications récentes mettant fortement l’accent sur l’accessibilité numérique, fruit d’un travail mené en grande partie avec et par des bénévoles non-voyants et malvoyants, directement impliqués dans la conception, les tests et les améliorations ergonomiques de la distribution.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p674395d1771528287/autres-langages/perl/langage/langage-affichage-fran-ais/emmade6_fenetre_accessibilite_fr_20251206_800.gif/" border="0" alt="Nom : EmmaDE6_fenetre_accessibilite_fr_20251206_800.gif
Affichages : 2237
Taille : 224,1 Ko"  style="float: CONFIG" /><br />
Nouvelle fenêtre d’accessibilité de l’EmmaDE6</div><br />
La version Emmabuntüs Debian Édition 6 1.00, basée sur Debian 13 (Trixie) avec les environnements Xfce et LXQt, introduit de nombreuses améliorations destinées aux personnes malvoyantes ou non-voyantes : interface dédiée à l’accessibilité, synthèse vocale améliorée (espeak, MBROLA, Piper), profils Orca, support d’embosseuses Braille, intégration de LIOS (OCR), ainsi que divers scripts simplifiant la prise en main. Cette version est notamment destinée à des déploiements au Togo, en partenariat avec les associations françaises A.S.I YOVOTOGO, Mutualistes Sans Frontières et la FETAPH (Fédération Togolaise des Associations de Personnes Handicapées).<br />
<br />
En parallèle, la version Emmabuntüs Debian Édition 5 1.05, basée sur Debian 12 (Bookworm) et disponible en 32 et 64 bits, bénéficie des mêmes avancées en matière d’accessibilité. Elle permet ainsi de poursuivre le reconditionnement d’ordinateurs plus anciens, tout en offrant une expérience utilisateur inclusive.<br />
<br />
Ces deux versions illustrent l’engagement d’Emmabuntüs en faveur de l’inclusion numérique, du logiciel libre, du réemploi de matériel informatique, ainsi que la place centrale offerte à l’expertise d’usage apportée par ses bénévoles concernés par le handicap visuel.<br />
<br />
Le projet reste ouvert aux contributions, notamment pour les tests d’accessibilité, la documentation et l’amélioration des outils destinés aux utilisateurs malvoyants ou non-voyants.<br />
<br />
Fin mars, nous publierons une nouvelle version d’Emmabuntüs Debian Édition 6 1.01, plus légère et plus modulable, afin de permettre à chacun de choisir les logiciels dont il a réellement besoin. Nous recherchons des bénévoles pour participer aux tests de cette version.<br />
<br />
<b>Aller plus loin :</b><br />
<ul><li style=""><a href="https://emmabuntus.org/emmade6-1-00-une-nouvelle-version-axee-sur-laccessibilite/" target="_blank">Le 15 décembre 2025, EmmaDE6 1.00 : une nouvelle version axée sur l’accessibilité !</a></li><li style=""><a href="https://emmabuntus.org/le-25-janvier-2026-emmade5-1-05-mise-a-jour-axee-sur-laccessibilite/" target="_blank">Le 25 janvier 2026, EmmaDE5 1.05 : mise à jour axée sur l’accessibilité !</a></li><li style=""><a href="https://emmabuntus.org/stephane-non-voyant-et-surdevoue-de-linformatique/" target="_blank">Stéphane, non-voyant et surd[év]oué de l’informatique</a></li><li style=""><a href="https://emmabuntus.org/philippe-un-esperantiste-convaincu/" target="_blank">Philippe, un espérantiste convaincu !</a></li><li style=""><a href="https://www.paysdelaloire-cooperation-internationale.org/projet/le-numerique-accessible-a-tous/" target="_blank">Le numérique accessible à tous ! </a></li><li style=""><a href="https://yovotogo.fr/arrivee-du-conteneur-mutualise-sans-frontieres/" target="_blank">Arrivée au Togo du conteneur Mutualiste Sans Frontières </a></li><li style=""><a href="https://emmabuntus.org/contact" target="_blank">Contact </a></li></ul></blockquote>

]]></content:encoded>
			<dc:creator>Patrick_Emmabuntus</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/837113-patrick_emmabuntus/b10747/emmabuntues-renforce-l-accessibilite-versions-debian-edition-6-1-00-5-1-05/</guid>
		</item>
		<item>
			<title>Le retour de Unreal Tournament 2004 ?</title>
			<link>https://www.developpez.net/forums/blogs/240267-littlewhite/b10746/retour-unreal-tournament-2004/</link>
			<pubDate>Wed, 18 Feb 2026 06:14:49 GMT</pubDate>
			<description>Image :...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><div style="text-align: center;"><img src="https://jeux.developpez.com/images/Unreal-Tournament-Logo-2004-small.png" border="0" alt="" /></div><br />
L'équipe OldUnreal a permis la mise à disposition du célèbre FPS compétitif Unreal Tournament 2004 et propose le jeu (ainsi que Unreal et Unreal Tournament) en accès gratuit avec des patchs pour le rendre compatible avec les systèmes modernes (même si la version d'origine fonctionnaient plutôt correctement). Le jeu s'accompagne de nouveaux patchs améliorant la qualité (notamment, avec le support de nouvelles résolutions et d'un rendu OpenGL 3.x) et réglant quelques problèmes. On y trouvera même un dossier ARM64 permettant de faire fonctionner le jeu et/ou le serveur sur Raspberry Pi.<br />
<br />
Vous pouvez donc retrouver les jeux directement <a href="https://github.com/OldUnreal/FullGameInstallers/" target="_blank">sur Github</a>. Retrouvez ce jeu dont certains diront qu'il n'a jamais eu de vrai successeur.<br />
<br />
Pour connaître la liste des corrections, vous pouvez vous référez à <a href="https://github.com/OldUnreal/UnrealTournamentPatches/blob/master/ReleaseNotes.md" target="_blank">ce fichier</a>.</blockquote>

]]></content:encoded>
			<dc:creator>LittleWhite</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/240267-littlewhite/b10746/retour-unreal-tournament-2004/</guid>
		</item>
		<item>
			<title>Deuxième pack de ressources offertes pour le mois de Février 2026 sur Fab</title>
			<link>https://www.developpez.net/forums/blogs/240267-littlewhite/b10745/deuxieme-pack-ressources-offertes-mois-fevrier-2026-fab/</link>
			<pubDate>Tue, 17 Feb 2026 20:13:34 GMT</pubDate>
			<description>Epic Games à travers sa...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Epic Games à travers sa plateforme Fab.com offre de nouvelles ressources disponibles durant deux semaines :<br />
<ul><li style="">un <a href="https://www.fab.com/listings/c9a2e4b8-1400-4cf7-ba7f-57e4588840bd" target="_blank">pack de ressources</a> « low-poly » pour un monde sous terrain ;</li><li style="">un <a href="https://www.fab.com/listings/e627507f-3dbd-4b88-8e3e-db4dc1730fdd" target="_blank">système</a> pour intégrer un téléphone virtuel dans un jeu ;</li><li style="">un <a href="https://www.fab.com/listings/b1ad8ff7-2bf2-49fc-a685-fa2af0a1d73f" target="_blank">kit modulaire</a> pour des constructions médiévales.</li></ul></blockquote>

]]></content:encoded>
			<dc:creator>LittleWhite</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/240267-littlewhite/b10745/deuxieme-pack-ressources-offertes-mois-fevrier-2026-fab/</guid>
		</item>
		<item>
			<title>VBA Excel, chargement des données de la feuille de calcul dans un contrôle ListView</title>
			<link>https://www.developpez.net/forums/blogs/262611-tototiti2008/b10744/vba-excel-chargement-donnees-feuille-calcul-controle-listview/</link>
			<pubDate>Fri, 13 Feb 2026 17:55:03 GMT</pubDate>
			<description>Exemple de code qui charge...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Exemple de code qui charge les données d'une plage de cellules dans un contrôle ListView <br />
Le code tente d'analyser le type de données de chaque colonne, les  affiche dans le ListView en les formattant pour faciliter les tris <br />
Possibilité de trier les données du Listview en cliquant sur les titres de colonnes <br />
Liste déroulante permettant de charger les données de 2 listes exemples à titre de démonstration<br />
<br />
Dites moi ce que vous en pensez<br />
<br />
Lien vers le fichier :<br />
<a href="https://excel.developpez.com/telecharger/detail/id/7547/VBA-Excel-chargement-des-donnees-de-la-feuille-de-calcul-dans-un-controle-ListView" target="_blank">https://excel.developpez.com/telecha...trole-ListView</a></blockquote>

]]></content:encoded>
			<dc:creator>tototiti2008</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/262611-tototiti2008/b10744/vba-excel-chargement-donnees-feuille-calcul-controle-listview/</guid>
		</item>
		<item>
			<title>Premier pack de ressources offertes pour le mois de Février 2026 sur Fab</title>
			<link>https://www.developpez.net/forums/blogs/240267-littlewhite/b10742/premier-pack-ressources-offertes-mois-fevrier-2026-fab/</link>
			<pubDate>Sat, 31 Jan 2026 19:58:37 GMT</pubDate>
			<description>Epic Games à travers sa...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Epic Games à travers sa plateforme Fab.com offre de nouvelles ressources disponibles durant deux semaines :<br />
<ul><li style="">un <a href="https://www.fab.com/listings/94b2c6c1-93a7-4291-9af9-ecc84884e751" target="_blank">château médiéval</a> ;</li><li style="">une <a href="https://www.fab.com/listings/101d8331-dab5-4e11-b9c2-0a889c0ef3bb" target="_blank">cabane forestière</a> ;</li><li style="">un <a href="https://www.fab.com/listings/5ac2e509-9918-4eeb-90f8-f257e5cd230f" target="_blank">système de détection de lumières</a>.</li></ul></blockquote>

]]></content:encoded>
			<dc:creator>LittleWhite</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/240267-littlewhite/b10742/premier-pack-ressources-offertes-mois-fevrier-2026-fab/</guid>
		</item>
		<item>
			<title>Un questionnaire Oui/Non sur Word</title>
			<link>https://www.developpez.net/forums/blogs/1791440-e-kergresse/b10741/questionnaire-oui-non-word/</link>
			<pubDate>Thu, 29 Jan 2026 04:55:51 GMT</pubDate>
			<description>Suite à ce message Liste...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Suite à ce message <a href="https://www.developpez.net/forums/d2181736/logiciels/microsoft-office/word/vba-word/liste-deroulante-choix-oui-non-suppression-non-word/" target="_blank">Liste déroulante Oui/Non et suppression si Non</a>, j'ai regardé ce que je pouvais faire.<br />
<br />
La demande était :<br />
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				- Si la réponse est &quot;Oui&quot;, je voudrais que la personne qui remplit le document ait la possibilité de mettre une précision en dessous.<br />
- Si la réponse est &quot;Non&quot;, je souhaiterais que la phrase + la liste déroulante disparaisse.
			
		</div>
	</div>
</div>Je suis parti sur une solution consistant à créer un tableau pour chaque item :<br />
<ul><li style=""> Contenant une liste déroulante de type Contrôle ActiveX</li><li style=""> Permettant d'écrire dans une cellule si la réponse est positive.</li></ul><br />
<br />
La difficulté vient de la réponse &quot;Non&quot;, car si l'objet disparaît, l'évènement qui lui est associé doit aussi disparaitre. Pour cela, il a fallu créer un code  pour générer l'événement et un autre pour le supprimer dans le module ThisDocument.<br />
<br />
<b><u>Fonctionnement</u></b> :<br />
<br />
Trois macros permettent de créer, de supprimer les items ou de recharger les listes à l'ouverture du document. Ces macros ne sont accessibles qu'à partir du menu Développeur / Macros pour éviter l'effacement intempestif des données. La création des items se fait en bloc, c'est à dire qu'il n'est possible pas d'ajouter un item à la suite ou dans la liste déjà construite.<br />
<br />
<img src="https://www.developpez.net/forums/attachments/p673712d1769661274/c-cpp/outils-c-cpp/visual-cpp/tutoriel-programmation-l-api-windows-cpp-bob/capture.jpg/" border="0" alt="Nom : Capture.JPG
Affichages : 110
Taille : 12,3 Ko"  style="float: CONFIG" /><br />
<br />
<i><b><u>Important</u> :</b> Le questionnaire peut être utilisé en l'état sans avoir à modifier le libellé des items dans le code comme indiqué ci-dessous. L'écriture des libellés dans le code est utile si le questionnaire peut être utilisé à plusieurs reprises et doit être réinitialisé.</i><br />
<br />
Les items sont codés en &quot;dur&quot; dans la procédure qui les génère. Exemple, j'ai créé 5 items. Deux paramètres sont nécessaires :<br />
<ul><li style="">Le libellé de la question.</li><li style="">Le numéro de la table.</li></ul><br />
<br />
 Les questions apparaîtront dans le questionnaire selon l'ordre de la liste ci-dessous.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:108px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">
    M01_CreationTable &quot;Item 1&quot;, 1
    M01_CreationTable &quot;Item 2&quot;, 2
    M01_CreationTable &quot;Item 3&quot;, 3
    M01_CreationTable &quot;Item 4&quot;, 4
    M01_CreationTable &quot;Item 5&quot;, 5</pre></td></tr></table></pre>
</div>Préalablement à la création des tableaux, les anciens tableaux sont supprimés avec leur événement dans ThisDocument.<br />
<br />
<img src="https://www.developpez.net/forums/attachments/p673713d1769661296/c-cpp/outils-c-cpp/visual-cpp/tutoriel-programmation-l-api-windows-cpp-bob/capture1.jpg/" border="0" alt="Nom : Capture1.JPG
Affichages : 101
Taille : 33,8 Ko"  style="float: CONFIG" /><br />
<br />
L'utilisation de tableaux dans Word permet de rapatrier facilement les données dans Excel pour analyse.</blockquote>


<!-- attachments -->
	<div class="blogattachments">
		
		
		
		
			<fieldset class="blogcontent">
				<legend>Fichiers attachés</legend>
				<ul>
					
				</ul>
			</fieldset>
		

	</div>
<!-- / attachments -->
]]></content:encoded>
			<dc:creator>E KERGRESSE</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/1791440-e-kergresse/b10741/questionnaire-oui-non-word/</guid>
		</item>
		<item>
			<title><![CDATA[Débat, l'IA est elle utile ou on peut se passer d'elle ?]]></title>
			<link>https://www.developpez.net/forums/blogs/1855262-programpro/b10740/debat-l-ia-utile-on-se-passer-d/</link>
			<pubDate>Wed, 14 Jan 2026 19:27:18 GMT</pubDate>
			<description>Le problème de plein...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Le problème de plein d'utilisateur est de ce poser cette question qui est :<br />
<br />
- Faut il laisser l'IA accéder à nos notifications/mails/contactes ?<br />
- L'IA prendra t-elle la place des développeurs à l'avenir ?<br />
- Les données utilisées par l'IA peuvent être utiles à des potentièles hackeurs ?<br />
<br />
Ceci est la question que se posent pleins de gens dans la vie.</blockquote>

]]></content:encoded>
			<dc:creator>ProgramPro</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/1855262-programpro/b10740/debat-l-ia-utile-on-se-passer-d/</guid>
		</item>
	</channel>
</rss>
