@Luana, le fil,
je te propose le fichier ci-joint.
đ
* en
J4 :
=REPT("x";ET(I4<>"";I4<12))
* en
K4 :
=REPT("x";ET(I4<>"";I4>=12;I4<=35))
* en
L4 :
=REPT("x";ET(I4<>"";I4>35))
dans ton
post #4, tu as Ă©crit cette phrase :
« je souhaiterais tout de mĂȘme comprendre pourquoi la macro ne marche pas ^^ »
je veux bien te donner toutes les explications, moi, mais ça va ĂȘtre un peu long ! đ đ đ mĂ©bon, si tu y tiens vraiment, c'est toi qui l'auras voulu ! faudra pas venir te plaindre aprĂšs, hein ? đ đ alors j'te laisse lire les points 1) Ă 4) ci-dessous. (j'te souhaite bon courage, car ça va t'faire beaucoup d'lecture ! đ)â
1) ton test est celui-ci :
If 0 < ws1.Range("I" & Nb_Lignes1).Value < 12 Then
que j'abrĂšge en :
If 0 < Range("I" & Nb_Lignes1) < 12 Then
puis en :
If 0 < k < 12 Then
mĂȘme si mes 2 « rĂ©sumĂ©s » ne sont
PAS valides.
(c'est juste pour faciliter l'explication)
en effet, VBA ne sait pas faire ainsi ce genre d'intervalle ! il faut l'Ă©crire ainsi :
If k > 0 And k < 12 Then
2) normalement, dans la colonne "Profondeur", tu saisis uniquement des nombres positifs, n'est-ce pas ? mĂȘme si on sait trĂšs bien qu'en rĂ©alitĂ©, ça reprĂ©sente des nombres nĂ©gatifs, car comme 0 = le niveau de la mer, quand on plonge par exemple Ă 20 m de profondeur, c'est : -20 m ! si tu respectais cette notation avec des signes nĂ©gatifs, et que tu saisissais un nombre positif comme +20 m, ça voudrait dire que tes scaphandriers sont comme des poissons volants qui Ă©voluent Ă 20 m au-dessus des flots, pas vrai ? đ€Ș đ đ€Ł Ă§a s'est jamais vu, car c'est impossible ! sauf peut-ĂȘtre pour des scaphandriers tibĂ©tains qui se mettraient Ă lĂ©viter ; par exemple Foudre BĂ©nie, celui qui a des visions du migou ! (oui, c'est ça, le migou, c'est le yĂ©ti)
tout ça pour en venir lĂ : ça veut dire qu'Ă contrario, quand tu saisis des nombres avec une notation positive, tes nombres ne peuvent pas ĂȘtre des nombres nĂ©gatifs ! donc pour le test If k > 0 And k < 12 Then
c'est tout Ă fait inutile de tester le cas > 0
car on sait trÚs bien que ça sera toujours le cas ! aussi, on peut ainsi simplifier le test : If k < 12 Then
; note qu'en principe, pour ton systÚme à notation positive, l'utilisateur n'est pas « idiot » au point de saisir un nombre négatif ; et au besoin, il te suffit de mettre une Validation de données ; en plus, l'utilisateur n'est pas censé saisir le nombre 0 (j'en parle au point suivant)
3) il y a bien 3 conditions diffĂ©rentes, n'est-ce pas ? mais hĂ©las, manque de pot, ta sub ne comporte que ces 2 cas : a) If k > 12 Then ⯠k est strictement supĂ©rieur Ă 12 ; b) Else ⯠k est infĂ©rieur ou Ă©gal Ă 12, et sous-entendu strictement supĂ©rieur Ă 0, car mĂȘme sans plonger au-dessus des flots, c'est aussi impossible de plonger Ă 0 m car par dĂ©finition, plongĂ©e = sous le niveau de la mer !
tu auras noté que mon paragraphe ci-dessus est par rapport à mon test simplifié If k < 12 Then
, mais je suis au grand regret de te dire que malheureusement, le mĂȘme raisonnement est valable et applicable Ă ton test initial plus long, et avec syntaxe VBA valide : If k > 0 And k < 12 Then
: avec le Else associĂ©, ça fait 2 cas aussi seulement ! đ
4) il y a bien 3 colonnes diffĂ©rentes pour mettre un "X", n'est-ce pas ? ce sont les 3 colonnes J, K, et L ; alors pourquoi ta sub Ă©crit une valeur "X" uniquement dans les colonnes J ou K ? je ne vois aucune instruction ws1.Range("L" & Nb_Lignes1).Value = "X" ; toi si ? alors par quel miracle espĂ©rais-tu que ça Ă©crive un "X" en colonne L ? non, mĂȘme si VBA t'aime bien et que t'as des affinitĂ©s avec lui, il n'a pas vocation Ă exaucer tes dĂ©sirs cachĂ©s, mĂȘme s'il en meurt d'envie ! alors bon grĂ© mal grĂ©, faudra bien qu'tu lui indique pas Ă pas toutes les instructions Ă exĂ©cuter.
â
j'te laisse mĂ©diter lĂ -dessus, et surtout, j'espĂšre ne pas t'avoir dĂ©goĂ»tĂ©e du VBA : j'en serais le premier tout Ă fait navrĂ© ! tu vas peut-ĂȘtre pas le croire, mais ça m'a pris cinq fois plus de temps pour Ă©crire toutes ces explications que de faire le fichier joint ! alors la prochaine fois, stp, essaye d'Ă©crire une sub qui marche du 1er coup ! non seulement tu seras ravie d'avoir rĂ©ussi Ă dompter le sauvage VBA, mais en plus t'auras pas besoin de demander des explications sur le non-fonctionnement de ta sub ! đ đ€Ș đ€Ł attention, pas de mĂ©prise : j'me moque pas de toi, ni de ton code VBA, mais de la situation ! et si t'as besoin de plus d'infos, n'hĂ©site pas ! maint'nant qu'j'ai commencĂ©, un peu plus ou un peu moins, ça f'ra pas une grande diffĂ©rence ! đ
â
soan