<?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 - Contribuez</title>
		<link>https://www.developpez.net/forums/</link>
		<description>Placez ici vos codes, sources, trucs et astuces que vous souhaitez partager avec les membres du club.</description>
		<language>fr</language>
		<lastBuildDate>Sat, 24 Oct 2026 06:50:40 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - Contribuez</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<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/showthread.php?t=2182100&amp;goto=newpost</link>
			<pubDate>Fri, 13 Feb 2026 17:48:50 GMT</pubDate>
			<description>Bonjour,  
 
Je vous propose...</description>
			<content:encoded><![CDATA[<div>Bonjour, <br />
<br />
Je vous propose un nouvel élément à utiliser : <a href="http://excel.developpez.com/telecharger/detail/id/7547/VBA-Excel-chargement-des-donnees-de-la-feuille-de-calcul-dans-un-controle-ListView" target="_blank">VBA Excel, chargement des données de la feuille de calcul dans un contrôle ListView</a><br />
<br />
Exemple de code qui charge les données d'une plage de cellules dans un contrôle ListView<br />
<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 />
<br />
possibilité de trier les données du Listview en cliquant sur les titres de colonnes<br />
<br />
Liste déroulante permettant de charger les données de 2 listes exemples à titre de démonstration<br />
<br />
Qu'en pensez-vous ?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f665/logiciels/microsoft-office/excel/contribuez/">Contribuez</category>
			<dc:creator>tototiti2008</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182100/logiciels/microsoft-office/excel/contribuez/vba-excel-chargement-donnees-feuille-calcul-controle-listview/</guid>
		</item>
		<item>
			<title><![CDATA[[Toutes versions] Quicksort en VBA, recursif et non récursif]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180378&amp;goto=newpost</link>
			<pubDate>Mon, 10 Nov 2025 12:55:52 GMT</pubDate>
			<description>Bonjour, 
 
Je me suis posé...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je me suis posé la question des tris en VBA et des méthodes les plus fiables pour le faire<br />
<br />
Évidement, je suis retombé sur la solution Quicksort qui est une possibilité réputée rapide<br />
Voici le code fonctionnel que j'ai fait, pas forcément mieux que les autres versions qui existent mais j'avais besoin de me remettre dans la logique de Quicksort<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><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 /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">Sub</span> QuickSortRec<span class="br0">&#40;</span><span style="color: #0000ff;">ByRef</span> Liste, <span style="color: #0000ff;">ByVal</span> iBas <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Long</span>, <span style="color: #0000ff;">ByVal</span> iHaut <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Long</span><span class="br0">&#41;</span>
<span style="color: #808080;">'Quicksort recursif</span>
<span style="color: #808080;">'Liste est suppos&eacute; &ecirc;tre un tableau VBA (Array) &agrave; 2 dimensions (1 colonne)</span>
<span style="color: #0000ff;">Dim</span> Pivot, Ech
<span style="color: #0000ff;">Dim</span> iMin <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Long</span>, iMax <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Long</span>
    <span style="color: #0000ff;">If</span> iHaut &lt;= iBas <span style="color: #0000ff;">Then</span> <span style="color: #0000ff;">Exit</span> <span style="color: #0000ff;">Sub</span>
    iMin = iBas
    iMax = iHaut
    Pivot = Liste<span class="br0">&#40;</span>iMax, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
    iBas = iMin - <span style="color: #cc66cc;">1</span>
    iHaut = iMin
    <span style="color: #0000ff;">Do</span> <span style="color: #0000ff;">Until</span> iHaut &gt;= iMax
        <span style="color: #0000ff;">If</span> Liste<span class="br0">&#40;</span>iHaut, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> &lt; Pivot <span style="color: #0000ff;">Then</span>
            iBas = iBas + <span style="color: #cc66cc;">1</span>
            <span style="color: #0000ff;">If</span> iHaut &gt; iBas <span style="color: #0000ff;">Then</span>
                Ech = Liste<span class="br0">&#40;</span>iHaut, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
                Liste<span class="br0">&#40;</span>iHaut, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> = Liste<span class="br0">&#40;</span>iBas, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
                Liste<span class="br0">&#40;</span>iBas, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> = Ech
            <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
        iHaut = iHaut + <span style="color: #cc66cc;">1</span>
    <span style="color: #0000ff;">Loop</span>
    Liste<span class="br0">&#40;</span>iMax, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> = Liste<span class="br0">&#40;</span>iBas + <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
    Liste<span class="br0">&#40;</span>iBas + <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> = Pivot
    <span style="color: #0000ff;">If</span> iBas &gt; iMin <span style="color: #0000ff;">Then</span> QuickSortRec Liste, iMin, iBas
    <span style="color: #0000ff;">If</span> iBas + <span style="color: #cc66cc;">2</span> &lt; iMax <span style="color: #0000ff;">Then</span> QuickSortRec Liste, iBas + <span style="color: #cc66cc;">2</span>, iMax
<span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Sub</span></pre></td></tr></table></code><hr />
</div>Problème : QuickSort est récursif<br />
En essayent de trier un tableau de plus de 36000 valeurs, j'ai le message 'Espace pile insuffisant<br />
<br />
Alors j'ai fait un Quicksort non récursif pour éviter les soucis de pile d'appel limités<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><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 /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">Sub</span> QuickSortNonRec<span class="br0">&#40;</span><span style="color: #0000ff;">ByRef</span> Liste<span class="br0">&#41;</span>
<span style="color: #808080;">'Quicksort non recursif</span>
<span style="color: #808080;">'Liste est suppos&eacute; &ecirc;tre un tableau VBA (Array) &agrave; 2 dimensions (1 colonne)</span>
<span style="color: #0000ff;">Dim</span> Pivot, Ech, ListeLimites<span class="br0">&#40;</span><span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Long</span>, Lim <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Long</span>
<span style="color: #0000ff;">Dim</span> iHaut <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Long</span>, iBas <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Long</span>, iMin <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Long</span>, iMax <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Long</span>
    <span style="color: #0000ff;">ReDim</span> ListeLimites<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #0000ff;">To</span> <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">1</span> <span style="color: #0000ff;">To</span> <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
    Lim = <span style="color: #cc66cc;">1</span>
    ListeLimites<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>, Lim<span class="br0">&#41;</span> = LBound<span class="br0">&#40;</span>Liste, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
    ListeLimites<span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>, Lim<span class="br0">&#41;</span> = UBound<span class="br0">&#40;</span>Liste, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">Do</span> <span style="color: #0000ff;">Until</span> Lim &gt; UBound<span class="br0">&#40;</span>ListeLimites, <span style="color: #cc66cc;">2</span><span class="br0">&#41;</span>
        iMin = ListeLimites<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>, Lim<span class="br0">&#41;</span>
        iMax = ListeLimites<span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>, Lim<span class="br0">&#41;</span>
        Pivot = Liste<span class="br0">&#40;</span>iMax, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
        iBas = iMin - <span style="color: #cc66cc;">1</span>
        iHaut = iMin
        <span style="color: #0000ff;">Do</span> <span style="color: #0000ff;">Until</span> iHaut &gt;= iMax
            <span style="color: #0000ff;">If</span> Liste<span class="br0">&#40;</span>iHaut, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> &lt; Pivot <span style="color: #0000ff;">Then</span>
                iBas = iBas + <span style="color: #cc66cc;">1</span>
                <span style="color: #0000ff;">If</span> iHaut &gt; iBas <span style="color: #0000ff;">Then</span>
                    Ech = Liste<span class="br0">&#40;</span>iHaut, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
                    Liste<span class="br0">&#40;</span>iHaut, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> = Liste<span class="br0">&#40;</span>iBas, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
                    Liste<span class="br0">&#40;</span>iBas, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> = Ech
                <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
            <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
            iHaut = iHaut + <span style="color: #cc66cc;">1</span>
        <span style="color: #0000ff;">Loop</span>
        Liste<span class="br0">&#40;</span>iMax, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> = Liste<span class="br0">&#40;</span>iBas + <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
        Liste<span class="br0">&#40;</span>iBas + <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> = Pivot
        <span style="color: #0000ff;">If</span> iBas &gt; iMin <span style="color: #0000ff;">Then</span>
            <span style="color: #0000ff;">ReDim</span> <span style="color: #0000ff;">Preserve</span> ListeLimites<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #0000ff;">To</span> <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">1</span> <span style="color: #0000ff;">To</span> UBound<span class="br0">&#40;</span>ListeLimites, <span style="color: #cc66cc;">2</span><span class="br0">&#41;</span> + <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
            ListeLimites<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>, UBound<span class="br0">&#40;</span>ListeLimites, <span style="color: #cc66cc;">2</span><span class="br0">&#41;</span><span class="br0">&#41;</span> = iMin
            ListeLimites<span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>, UBound<span class="br0">&#40;</span>ListeLimites, <span style="color: #cc66cc;">2</span><span class="br0">&#41;</span><span class="br0">&#41;</span> = iBas
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
        <span style="color: #0000ff;">If</span> iBas + <span style="color: #cc66cc;">2</span> &lt; iMax <span style="color: #0000ff;">Then</span>
            <span style="color: #0000ff;">ReDim</span> <span style="color: #0000ff;">Preserve</span> ListeLimites<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #0000ff;">To</span> <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">1</span> <span style="color: #0000ff;">To</span> UBound<span class="br0">&#40;</span>ListeLimites, <span style="color: #cc66cc;">2</span><span class="br0">&#41;</span> + <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
            ListeLimites<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>, UBound<span class="br0">&#40;</span>ListeLimites, <span style="color: #cc66cc;">2</span><span class="br0">&#41;</span><span class="br0">&#41;</span> = iBas + <span style="color: #cc66cc;">2</span>
            ListeLimites<span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>, UBound<span class="br0">&#40;</span>ListeLimites, <span style="color: #cc66cc;">2</span><span class="br0">&#41;</span><span class="br0">&#41;</span> = iMax
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
        Lim = Lim + <span style="color: #cc66cc;">1</span>
    <span style="color: #0000ff;">Loop</span>
<span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Sub</span></pre></td></tr></table></code><hr />
</div>Au cas où ça servirait à certains</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f665/logiciels/microsoft-office/excel/contribuez/">Contribuez</category>
			<dc:creator>tototiti2008</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180378/logiciels/microsoft-office/excel/contribuez/quicksort-vba-recursif-non-recursif/</guid>
		</item>
	</channel>
</rss>
