je te propose le fichier ci-joint.
valides.
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.