Le Tombeau du Christ

Tombeau du ChristVu hier soir le film « Le Tombeau ». Intéressant, il joue autour de ce que pourrait susciter la découverte du tombeau du Christ. On imagine …

Découvrir le tombeau du Christ est un fantasme aussi vieux que … disons Ponce-Pilate. Il suffit de considérer l’enjeu :

« Si le Christ n’est pas ressuscité, notre foi est vaine » (1 Co 15, 14) disait Saint Paul

Il existe un tombeau du Christ. La tradition (remarquez le « t » minuscule) le situe en ce lieu appelé « Saint Sépulcre », lieu de disputes d’une indigne mesquinerie entre les différents chrétiens. Mais ce sépulcre est vide.

L’idée sous-jacente à la découverte d’un tombeau du Christ est celle du cadavre, ou plutôt des ossements qu’on y trouverait.

Essayons de raisonner logiquement :

  • hypothèse n°1 : le Christ est véritablement ressuscité : toute tentative de trouver ses ossements est vaine
  • hypothèse n°2 : le Christ n’est que Jésus, prophète plus ou moins brillant. Il n’empêche qu’il semble avoir fait carrière dans la mémoire des hommes. Mais il n’est pas ressuscité. Ses disciples le savaient donc et ont monté de toute pièce une imposture. Trois remarques :
    • si les disciples de Jésus savaient qu’il n’était pas ressuscité mais qu’il fallait faire semblant, auraient-ils été assez stupides pour l’enterrer avec une pierre tombale explicite ? Soyons sérieux. Dans ce cas, ses ossements seraient dans une fosse commune quelconque (même si ç’aurait été un scandale pour les Juifs). Aucune réfutation de la résurrection ne serait donc possible
    • en Europe, nous avons une perception d’un christianisme triomphant et dominateur à cause du rôle historique de l’Eglise Catholique y a tenu. Mais Jérusalem a été une ville juive jusqu’à 135 (révolte de Bar-Kochba) puis exclusivement romaine et byzantine, perse de de 614 à 629 puis musulmane depuis 638. Si corps de Jésus il y a , il est dans les environs de Jérusalem, ville depuis 1400 ans aux mains d’ennemis du christianisme. Ils auraient eu un intérêt évident à démontrer que la Résurrection est un mythe. Rien à signaler de ce côté.
    • et nombreux sont ceux que l’intérêt religieux, philosophique ou scientifique aurait dû motiver suffisamment pour qu’ils trouvent cette tombe et les restes si tant est qu’ils existent

Donc, à ceux qui veulent réfuter le christianisme par ce moyen, je dirais qu’il est inutile de chercher un tombeau de Jésus et son corps.

Ce qui démontre a contrario que la Résurrection est article de foi. Ni démontrable, ni réfutable. La célèbre phrase « l’absence de preuve n’est pas la preuve de l’absence » vaut dans ce cas pour ceux qui croient et ceux qui ne croient pas.

 

VB.NET DataGridView. Comment détruire la dernière rangée (row) ?

Problématique

Vous alimentez par programme une DataGridView. J’entends par là que vous ne l’avez pas reliée à une source de données. Vous avez tout bien ajusté pour que la DataGridView ne fasse pas apparaître la ligne vide qui permet les ajouts manuels mais qui dans votre cas fait vraiment moche.

Pour détruire une ligne quelconque, tout va bien. Mais si vous voulez détruire la dernière ligne, VB.NET vous renvoie le message d’exception

Impossible de supprimer la nouvelle ligne non validée

Alors vous cherchez : dans le MSDN Microsoft, dans les forums. Surprenant, j’ai jamais vu une question si souvent posée et qui avait aussi peu de réponses.

Solution (approximative)

D’abord, le truc a ne pas faire que vous recommandent certains de manière péremptoire, modifier de la manière suivante la propriété de la DataGridView

AllowUsersToAddRows=False

parce que dans ce cas, vous ne pouvez plus ajouter de ligne par programme. Donc la question de détruire une ligne ne se pose plus : la grille reste vide.

Ce n’est donc pas la solution.

Tout ce que j’ai trouvé dans ce cas, c’est de remplacer la dernière ligne par une ligne vide, le code a donc l’allure suivante

With grdBooks

    row = .CurrentRow.Index

    If row = .Rows.Count – 1 Then

        .Rows(row).Cells(« col1 »).Value = «  »

        .Rows(row).Cells(« col2 »).Value = «  »

        .Rows(row).Cells(« col3 »).Value = «  »

        .Rows(row).Cells(« col4 »).Value = «  »

        .Rows(row).Cells(« col5 »).Value = «  »

     Else

         .Rows.RemoveAt(row)

     End If

 End With

Ce n’est pas extraordinaire puisque je me retrouve avec la ligne vide dont je ne voulais pas. Et si vous avez mieux, je suis preneur. Merci d’avance.

MySQL. Vérifier une requête

MySQLProblématique

Pour bien comprendre la problématique, il fallait lire l’article précédent (SEO. PageSpeed et PHP). Mais on va supposer que vous ayez un GROS doute sur la performance d’une requête. Je ne dis pas qu’elle renvoie des choses que vous n’attendiez pas (ou qu’elle ne renvoie pas ce que vous attendiez). Je parle du cas où le résultat est correct. Mais très lent.

Solution

Tout simple. Vous allez dans phpMyAdmin et vous lancez à la main la requête suspecte. MySQL vous indique le temps d’exécution :

  • supérieur à 0.01 s, c’est suspect
  • supérieur à 0.1s, c’est mauvais, il faut faire quelque chose
  • supérieur à 1s, c’est catastrophique, voir plus haut

Il se peut aussi que la requête soit correcte mais qu’elle vous renvoie 324 256 entrées. C’est long à ramener et c’est logique. Mais ce sera encore plus long à afficher et il s’agit là d’un problème de design et de conception et non de requête.

Bref !

Cliquez maintenant sur le choix [Expliquer SQL]. Vous verrez qu’il répète votre requête mais précédée cette fois du mot-clef EXPLAIN. Il vous renverra en particulier les index possibles et le nombre de rows renvoyés.

Une première indication :

  • s’il ne renvoie pas de nom d’index
  • et/ou si il vous renvoie un nombre étonnamment grand de lignes

ça signifie probablement qu’il vous manque une clef d’index et que votre requête balaie donc séquentiellement toute la table.

C’est une erreur de débutant. Tellement de débutant qu’on n’y pense même pas. Et pourtant, elle vient de m’arriver. ON NE RIGOLE PAS.

Pour plus d’informations sur la clause SQL EXPLAIN, je vous renvoie au chapitre de la doc MySQL Syntaxe de EXPLAIN. C’est la base de la fonctionnalité de phpMyAdmin. Celle-ci suffit largement à mon avis.

ET LE TOUR EST JOUÉ ! ALORS ON DIT MERCI QUI ?

SEO. PageSpeed et PHP

Problématique

Votre site est beau mais beau ! Et par un acquis de conscience qui vous honore, vous vous dites que « beau » c’est une bonne chose pour les utilisateurs mais que Google est assez peu sensible à l’esthétique : il faut aussi que le chargement des pages soit rapide.

On ne répétera jamais assez à quel point Google est sensible au temps de chargement des pages.

Vous utilisez donc PageSpeed, excellent outil que vous propose Google.

Et après quelques ajustements, vous arrivez à un score de 97% pratiquement parfait.

Et pourtant, quelques temps après vous vous apercevez que les temps d’accès sont mauvais. Mais mauvais !

Solution

Ou du moins début de solution. N’oubliez pas que PageSpeed analyse la page html qui résulte de tous vos traitements. Donc si vous avez une requête catastrophiquement lente dans votre page PHP, PageSpeed n’y verra que du feu et ne vous avertira donc pas !

Vérifiez donc vos requêtes PHP/MySQL et pour ce faire, lisez le post suivant.

ET LE TOUR EST JOUÉ ! ALORS ON DIT MERCI QUI ?

Et pour une formation plus approfondie, une page sur les derniers livres parus sur MySQL sur DerniersParus.com

Primaires parisiennes

On assiste actuellement à une polémique étrange fondée comme souvent sur une distorsion de langage.

NKM s’est exprimée lors du vote à l’Assemblée. Quelques soient ses déterminations, elle est libre de le faire.

Les anti-mariage homo veulent faire barrage à NKM dont le vote a déplu. C’est également leur droit. Mais on leur reproche de faire le jeu de la gauche en favorisant la désunion à droite.

Donc on reproche aux opposants au mariage homo de ne pas suivre la politique d’appareil en oubliant au passage que NKM n’a pas lors du vote à l’Assemblée suivi le vote commun à la plupart des élus de droite.

Preuve que les partis politiques aimeraient énormément se passer des électeurs. Mais faute de prendre en compte l’avis des électeurs, il devient difficile de parler de démocratie.

Preuve également que certaines positions dépassent le clivage gauche-droite imposé par les partis politiques pour préserver leur fond de commerce.

Mais « tout est politique » disait le slogan des années 60. Et c’est vrai car tout ce qui dépasse la sphère non seulement privée mais strictement personnelle est du ressort du collectif.

Il faut donc agir en conséquence et se réapproprier son vote pour exprimer, non plus son appartenance à un prétendu camp, mais ses convictions.

Le Mal preuve de l’inexistence de Dieu ?

Si Dieu existe alors pourquoi y a-t-il le Mal ? Question aussi fréquente et lancinante que légitime. Elle est l’objet même de cette discipline particulière, un peu démodée, appelée « théodicée ».

Beaucoup en déduisent que Dieu n’existe pas sinon il ne permettrait pas l’existence du Mal. Il existe donc deux possibilités :

  • si Dieu n’existe pas, le Mal existe toujours malgré cette mise à « mort de Dieu » donc Dieu n’est pas l’origine du Mal
  • sinon, Dieu n’est pas celui dont on attend qu’il empêche le Mal.

Le Mal n’est donc en aucun cas une preuve de l’inexistence de Dieu. Et quelque soit l’hypothèse retenue, si tant est que Dieu puisse être ramené au statut d’hypothèse, la question de l’origine du Mal se pose. Et pour ceux qui croient malgré le Mal que Dieu existe la question se complique puisque la nature de Dieu, du moins de sa volonté, n’est pas conforme aux attentes communes.

Quelle peut donc être l’origine du Mal ?

 

Splashtop 2 – Clavier numérique

Problématique

Je viens de vous faire l’éloge de Splashtop2. J’ai cependant eu une petite difficulté au début. Impossible de saisir les chiffres depuis mon MacBook (ni les touches de fonction d’ailleurs) car je n’ai pas de clavier numérique externe. Pire que gênant, carrément bloquant.

Solution

J’ai trouvé la solution dans le support Splashtop. Mais je vais vous faire gagner du temps. Pour accéder aux chiffres du clavier principal et aux touches de fonction, simplement taper

fn+[la touche souhaitée]

Aussi facile qu’énervant quand on y arrive par hasard et qu’on ne retrouve plus comment on a fait.

ET LE TOUR EST JOUÉ ! ALORS ON DIT MERCI QUI ?

Splashtop2 – Un petit peu de pub

Problématique

Vous avez un poste fixe sur lesquels tourne un traitement. Vous aimeriez savoir où il en est sans sortir de votre canapé, pas par amour dudit canapé, mais parce que le film que vous regardez arrive à la scène-culte.

Solution

Une fois n’est pas coutume, je vais faire une pub pour un utilitaire (gratuit rassurez-vous) que j’apprécie au plus haut point : Splashtop 2 Remote Desktop.

Il vous permet d’accéder à votre ou vos postes à partir d’un PC ou d’une tablette sous Windows, iOs, Androïd voire Kindle Fire. Personnellement, j’accède à mon PC sous Windows 7 avec soit mon iPad, soit mon MacBook.

Il existe une version « AnyWhere » payante par abonnement. Mais la solution de base est gratuite et sans limitations fonctionnelles. Franchement profitez-en :

Les liens utiles :

NE ME DITES PAS ENCORE MERCI : ESSAYEZ-LE D’ABORD.

VB.NET – Surligner (highlight) le noeud sélectionné d’un TreeView

Problématique

Vous venez de sélectionner un noeud par programme par l’instruction :

myTreeView.SelectedNode=mySelectNode

mais il n’apparaît pas en mode « Highlight » (par défaut en blanc sur fond bleu).

Solution

Deux cas se présentent. Et il faut en fait les traiter tous les deux.

Vous perdez le surlignement quand le treeView perd le focus

Si vous perdez le highlight quand le treeView perd le focus (vous suivez ce mélange d’anglais et de français parce que moi j’ai du mal à l’écrire), il faut vérifier la propriété HideSlection du TreeView : elle est par défaut à False. Donc, c’est logique, il cache la sélection.

Mettez-la à True :

  • soit dans les propriétés du contrôle dans le design de la form
  • soit par programme avec l’instruction

myTreeview.HideSelection = True

et ça ira beaucoup mieux

Et de toute manière vous ne l’avez pas du tout ce surlignement

Il faut simplement après chaque changement de sélection remettre le focus sur le treeView de la manière suivante :

myTreeView.Focus()

C’est simple mais on met un temps fou à trouver ce truc.

ET LE TOUR EST JOUÉ ! ALORS ON DIT MERCI QUI ?

A lire

Visual Basic 2010, étape par étape (Michael Halvorson)

Il s’agit d’un livre Microsoft Press. Et je trouve les ouvrages Microsof Press plutôt bien faits.

Étrangement, ils n’ont rien à voir avec le MSDN Microsoft, plutôt abscons et mal fichu, utile dans le seul cas où on a un besoin précis. En tout cas, il est franchement difficile d’apprendre le langage avec MSDN.

En fait est-ce aussi étrange que ça ? Si on peut vendre un livre en plus du soft, pourquoi se gêner. Mais je vous le redis, ils en valent la peine.

Imprimante HP Photosmart Premium – Problème après installation de cartouches neuves

Problématique

Vous changez vos cartouches d’encre (le problème arrive surtout avec l’encre noire, la plus fréquemment utilisée). Elles sont authentiques, neuves et plaisent tellement à votre HP Photosmart Premium qu’elle vous l’annonce avec enthousiasme. Mais malheur ! à l’impression suivante, de noir point … Du bleu, du jaune, du magenta mais pas de noir.

Vous allez dans le Centre de Solution HP. Vous allez en Paramètres > Boîte à Outils. Vous lancez alignement des têtes, puis nettoyage, puis second niveau de nettoyage. Rien ne s’arrange. Vous hésitez entre deux solutions :

  • surfer sur tous les forums d’utilisateurs HP Photosmart Premium peuplés d’utilisateurs furieux de l’absence de réel service après-vente HP (avez-vous entendu parler de l’obsolescence programmée ?)
  • acheter une nouvelle imprimante de préférence d’une marque qui a un nom de pièce d’artillerie comme celle que vous aviez avant que le biberon du petit dernier ne tombe dessus et la mette hors-service

Nous vous offrons une 3ème solution.

Solution

Et cette solution, c’est … la lessive. Douce bien sûr.

Voici les étapes à suivre

  1. retirez les cartouches d’encre
  2. puis la tête de lecture en levant le levier situé à droite. Pas d’inquiétude, c’est facile à retirer. Et à remettre, ce qui n’est pas évident, prenez l’exemple du tube de dentifrice : facile à sortir mais les asiles psychiatriques sont peuplés de gens qui ont essayé de remettre le dentifrice dans le tube.
  3. laissez la tête de lecture tremper 5mn dans un lavabo d’eau tiède, videz et remplissez jusqu’à ce que l’eau soit à peine teintée (éventuellement, si vous avez un engin genre « jet » pour vous laver les dents, passez la tête sous le jet réglé au minimum)
  4. séchez avec un chiffon doux
  5. puis au sèche-cheveux, force moyenne, chaleur moyenne
  6. éteignez l’imprimante
  7. remettez la tête de lecture
  8. puis les cartouches
  9. rallumez l’imprimante : elle se mettra en mode « préparation » et fera de drôles de bruits pendant 5 mn
  10. et imprimez une page de test, éventuellement une deuxième pour voir l’amélioration, bref autant de fois qu’il le faut pour éliminer l’eau résiduelle si le séchage n’a pas été parfait et remettre le circuit en marche

ET LE TOUR EST JOUÉ ! ALORS ON DIT MERCI QUI ?

VB.NET. DataGridView sélectionner (et donc afficher) une ligne spécifique

Problématique

Supposons que vous ajoutiez des lignes saisies dans un DataGridView (un peu comme dans le défunt MSMoney où vous saisissiez votre écriture dans un pavé et que la ligne s’affichait dans la grille au-dessus, vous voyez ?). Ou que vous vouliez sélectionner (et donc afficher) la ligne n, celle-là et pas une autre.

Comme souvent en VB.NET, dont le workbench est au demeurant remarquable, ce n’est pas intuitif.

Solution

Nous dirons d’abord que votre DataGridView s’appelle myGrid.

1ère étape

Il est plus esthétique de commencer par désélectionner la ligne actuellement sélectionnée. Facile :

myGrid.CurrentRow.Selected = False

Mais s’il n’y a pas de ligne en cours, il y aura bug ! Il vaut mieux, non il faut, prendre la précaution suivante

if myGrid.CurrentRow IsNot Nothing Then

myGrid.CurrentRow.Selected = False

End If

et parce que le With simplifie l’écriture et rend le programme plus lisible, voici une suggestion (forte) d’écriture définitive

With myGrid

if .CurrentRow IsNot Nothing Then

.CurrentRows.Selected = False

End If

End With

2ème étape

Et là nous entrons dans le vif du sujet avec une grosse surprise : on ne peut pas sélectionner une ligne (row) dans un DataGridView ! Du moins pas directement. Il faut pour cela sélectionner une des cellules de la ligne (row). Et donc voici comment il faut faire si la ligne que vous voulez sélectionner est la n° numrow

With myGrid

.CurrentCell = .Item(0, numrow)

.CurrentRow.Selected = True

End With

Nous avons proposé comme cellule active celle de la colonne 0. Parce qu’on est sûr qu’elle existe : c’est la première colonne et la numérotation commence, ne l’oubliez pas, en 0. Or si vous avez une DataGridView sans colonnes, je vous pose une question : pourquoi ajouter une ligne à un tableau sans colonne. Et d’ailleurs est-ce encore un tableau ?

ET LE TOUR EST JOUÉ ! ALORS ON DIT MERCI QUI ?

WordPress – Passer d’une langue à l’autre

wordpress passer dune langue lautreProblématique

Selon les cas, je télécharge la dernière version de WordPress en français ou en anglais. Aujourd’hui, je me suis planté, j’ai téléchargé une version anglaise alors que je voulais la française. Et emporté par le feu de l’enthousiasme, je m’en suis rendu compte quand tout était terminé.

Dois-je réinstaller tout WordPress ? Que nenni !

Solution

Etape 1

Vérifiez que dans le fichier wp-config.php, vous avez bien

/**
* Langue de localisation de WordPress, par défaut en Anglais.
*
* Modifiez cette valeur pour localiser WordPress. Un fichier MO correspondant
* au langage choisi doit être installé dans le dossier wp-content/languages.
* Par exemple, pour mettre en place une traduction française, mettez le fichier
* fr_FR.mo dans wp-content/languages, et réglez l’option ci-dessous à « fr_FR ».
*/
define(‘WPLANG’, ‘fr_FR‘);

(je mentionne les commentaires parce qu’ils vous donnent l’explication et pour indiquer à quel endroit du fichier vous trouvez la définition de la langue, après la définition du $table_prefix en fait – je vous rappelle que, pour des questions de sécurité, il vaut mieux ne pas garder le wp_ par défaut : prenez par exemple 4 lettres qui rappellent votre blog et quatre chiffres au hasard -)

Etape 2

Allez dans le répertoire wp-content et vérifiez que vous avez un répertoire languages (la version anglaise ne semble pas le créer). S’il n’y est pas créez-le.

Etape 3

Vous allez sur le site WordPress français à la page http://www.wordpress-fr.net/telechargements/ et téléchargez les fichiers :

  • fr_FR.mo (traduction générale)
  • admin-fr_FR.mo (administration)
  • admin-network-fr_FR.mo (administration du réseau/multisite)
  • continents-cities-fr_FR.mo (traducteur géographique pour le choix du fuseau horaire)

Ces fichiers sont indispensables pour WordPress 5.0. Si vous êtes encore sous WordPress 4, chargez les fichiers correspondant avec l’extension .po au lieu de .mo.

Etape 4

Vous installez ces fichiers dans le répertoire wp-content/languages/

ET LE TOUR EST JOUÉ ! ALORS ON DIT MERCI QUI ?

Pour en savoir plus, quelques livres sur WordPress 

WordPress – Retirer une image du header

Wordpress - Retirer une image du headerProblématique

Vous venez d’installer un nouveau thèmes WordPress. Pour le header, vous voulez charger une ou des images choisies avec amour et soin. Généralement, il faut les redimensionner pour entrer dans le moule du thème. Et là, quand vous voyez le résultat, grosse déception, gros chagrin, larmes : c’est moche. Il faut la retirer. Surtout si vous avez choisi le défilement aléatoire d’une image de header : si elle reste dans la liste, elle va tout gâcher. Comment faire ?

Solution

Vous allez voir, la plus simple est la meilleure.

D’abord, il faut savoir que les images de header sont des attachments donc en tant que telles, le lien sur l’image est stocké dans wp_posts.

L’image elle-même est logée dans un sous-répertoire chronologique de wp-content/uploads. Par exemple, si vous avez chargé des images ce mois-ci, elles seront dans le répertoire wp-content/uploads/2013/05 avec le préfixe cropped_.

Donc vous sentez bien qu’il ne faut pas s’y prendre comme un sauvage, en essayant de supprimer les fichiers du répertoire et/ou les posts à la main. Ce que j’ai déjà bien évidemment fait et failli refaire aujourd’hui.

En fait, c’est tout simple :

  • Allez dans le tableau de bord WordPress
  • Puis dans la rubrique Médias
  • Supprimer l’image en question

Et WordPress fait tout ça, très proprement

ET LE TOUR EST JOUÉ ! ALORS ON DIT MERCI QUI ?

Pour en savoir plus, quelques livres sur WordPress 

VBA.EXCEL – Gérer dynamiquement les sources de données des graphiques

Problématique

Supposons que vous ayez une série de données quotidiennes : par définition, elle s’allonge tous les jours. Vous gérez un ou des graphiques sur ces données. Faut-il vraiment reparamétrer chaque jour la sélection des données de ces graphiques pour prendre en compte ce jour qui vient de poindre à) cette aurore nouvelle ? Oui si vous êtes un peu ballot comme je le fus pendant des lustres. Non si vous faites ce que je vous dis. A vous de voir.

Solution

Supposons que votre classeur s’appelle monclasseur.xlsm. Tiens ! comme c’est original ! Au lieu de persifler, regarder bien l’extension .xlsm. Ben oui ! Première chose, on va faire une macro pour résoudre le problème et si on ne met pas l’extension .xlsm, votre macro …

Vous avez une feuille dans ce classeur nommée SOURCE. Pour plus de facilités, nommez-la SOURCE sur l’onglet mais aussi dans l’espace macro accessible par ALT+F11. Pour ce faire, sélectionnez la feuille dans le pavé VBA.PROJECT puis dans le pavé Propriétés, donnez à la propriété Name la valeur SOURCE. Vous allez voir comme ça simplifie la vie.

Dans ce même classeur vous avez n graphiques que vous appellerez pour l’exemple COURBE1, COUBE2, …, COURBEn (le premier qui me redit que ce n’est pas original, je l’envoie dans le bureau du proviseur). Bien entendu, pour plus de facilités vous les renommez aussi dans les propriétés du VBA.PROJET comme la feuille de données SOURCE.

Par programme, vous avez réussi à isoler la dernière date lastDay et sa ligne de données lastLig. Pour y arriver, je vous fais une totale confiance.

A partir de ces préalables plus rapides qu’il n’y paraît voilà un exemple de code qui vous permettra de gérer dynamiquement et automatiquement la modification quotidienne des données source.

 With Workbooks(« monclasseur.xlsm »)

Dim ch As Chart

For Each ch In .Charts

ch.Axes(xlCategory).MaximumScale = lastDay

Select Case ch.Name

Case « COURBE1 »

ch.SetSourceData SOURCE.Range(« A2:B » & lastLig), xlColumns
ch.SeriesCollection(1).Name = « COURBE1 »

Case « COURBE2 »

ch.SetSourceData Union(SOURCE.Range(« A2:A » & lastLig),  _

SOURCE.Range(« L2:L » & lastLig)), xlColumns

ch.SeriesCollection(1).Name = « COURBE2 »

Case « COURBE1 »

ch.SetSourceData Union(SOURCE.Range(« A2:A » & lastLig), _

SOURCE.Range(« C2:C » & lastLig)), xlColumns

ch.SeriesCollection(1).Name = « COURBE1 »

End Select

Next

End With

Vous me direz « que vient faire ici ce select case » ? C’est juste pour vous montrer une autre ruse.

Si vos données sont contigües dans le tableau SOURCE, pas de problème un Range unique suffit comme pour COURBE1. Mais si elles sont dans des colonnes séparées, il faut avoir recours à la fonction Union de Range comme pour COURBE2 et 3 dont vous avez donc un exemple de syntaxe.

ET LE TOUR EST JOUÉ ! ALORS ON DIT MERCI QUI ?