@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