XL 2019 Condition VBA comprise entre 2 valeurs

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnĂ©s oĂč l'entraide fait la force. Apprenez, Ă©changez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

LuanaDDC

XLDnaute Junior
Bonjour à tous les pros de VBA 😀,

J'espĂšre que vous allez bien.

Je viens Ă  vous car j'ai actuellement un problĂšme concernant ma macro. En effet je souhaite faire une condition qui me permette de remplir automatiquement ma colonne J, ou K ou L par rapport Ă  ma colonne I.
Au niveau de condition c'est :
Si Profondeur est entre 0 Ă  12 (exclu) donc mettre une X dans la colonne J.
Si Profondeur est entre 12 et 35 donc mettre une X dans la colonne K.
Si Profondeur est supérieur à 35 donc mettre une X dans la colonne L.

J'ai donc essayé avec ce code mais ça ne marche pas du tout...

If 0 < ws1.Range("I" & Nb_Lignes1).Value < 12 Then
'N_Prof = ws1.Range("J" & Nb_Lignes1).Value = "X"
'N_Prof = ws1.Range("K" & Nb_Lignes1).Value = ""
Else
N_Prof = ws1.Range("K" & Nb_Lignes1).Value = "X"
N_Prof = ws1.Range("J" & Nb_Lignes1).Value = ""
End If

1614691092486.png


Pouvez-vous m'aider s'il vous plait ?

Merci !

Bonne journée à vous.
 
Solution
@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...​
Bonjour,

Pas certain d'avoir tout compris votre code mais d'aprĂšs vos explications, deux maniĂšres de faire (entre d'autres possibles) :

VB:
Select Case ws1.Range("I" & Nb_Lignes1).Value
    Case 0 To 11
        ws1.Range("J" & Nb_Lignes1) = "X"
 
    Case 12 To 35
        ws1.Range("K" & Nb_Lignes1) = "X"
 
    Case Is > 35
        ws1.Range("L" & Nb_Lignes1) = "X"
 
    Case Else ' facultatif Tous les autre cas on ne fait rien
End Select

Code:
If ws1.Range("I" & Nb_Lignes1).Value >= 0 And ws1.Range("I" & Nb_Lignes1).Value < 12 Then

    ws1.Range("J" & Nb_Lignes1).Value = "X"

ElseIf ws1.Range("I" & Nb_Lignes1).Value <= 35 Then

    ws1.Range("K" & Nb_Lignes1).Value = "X"

Else
   ' Tous le autres cas (< 0 OU >35)
    ws1.Range("L" & Nb_Lignes1).Value = "X"
End If

Joignez un fichier exemple si vous ne vous en sortez pas.

cordialement
 
Bonjour LuanaDDC, Roblochon,

Le VBA est ici tout Ă  fait superflu, entrez les formules :

- en J5 =SIERREUR(REPT("x";--SUBSTITUE(I5;"m";"")<12);"")

- en K5 =SIERREUR(REPT("x";(--SUBSTITUE(I5;"m";"")>=12)*(--SUBSTITUE(I5;"m";"")<=35));"")

- en L5 =SIERREUR(REPT("x";--SUBSTITUE(I5;"m";"")>35);"")

Nota : dans les SUBSTITUE on peut enlever les "".

A+
 
Bonjour Roblochon et Job75,

Merci beaucoup pour vos réponses.

@Roblochon : j'ai essayé la deuxiÚme macro qui fonctionne partiellement...

Mon fichier est trop volumineux...mais voici ce que j'ai :
1614700914430.png


1614700859475.png

Ne faut-il pas mettre If N_Prof = ws1.Range("I" &........) -> le code ci-dessous.

@job75 : la formule fonctionne merci ! mais je souhaiterais tout de mĂȘme comprendre pourquoi la macro de marche pas ^^'.

Merci pas avance !
 
Bonjour Luana, le fil,

oulah ! ça fait drĂŽlement peur, ta colonne E "NarguilĂ©" ! đŸ˜± đŸ˜± đŸ˜± tes scaphandriers se shootent Ă  l'opium au lieu d'respecter les paliers d'dĂ©compression ? 😄 😂 đŸ€Ł
​
soan
 
DerniĂšre Ă©dition:
@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
 

PiĂšces jointes

DerniĂšre Ă©dition:
Bonjour Soan,

Aloooorss, tout d'abord DESOLEE pour le temps de rĂ©ponse.. aprĂšs cette agression visuelle j'ai du lonnngteeempps mĂ©diter...😛 Joke bien-sĂ»r, je j'avais pas accĂšs Ă  mon PC.

Ensuite MERCI d'avoir pris le temps de m'expliquer les choses ! Du coup j'ai sauvegardĂ© pour pouvoir refaire par la suite ! Et figure toi que j'ai compris quand mĂȘme et que tu ne m'as pas (encore) dĂ©goĂ»tĂ© du VBA ^^'.

Merci pour la solution (beaucoup plus simple) Ă©galement !

Passe une trÚs bonne journée.

Luana
 
Bonjour Luana,

merci beaucoup pour ton retour d'infos, mĂȘme s'il est tardif ! 😊 et j'comprends trĂšs bien le cas de force majeure : si tu ne pouvais pas avoir accĂšs Ă  ton PC, alors forcĂ©ment... j'espĂšre que c'est pas pa'c'qu'il est tombĂ© au fond d'l'eau ! t'as p't'ĂȘtre dĂ» envoyer tes scaphandriers pour le rĂ©cupĂ©rer ? voici une astuce informatique trĂšs importante : avant de te servir de nouveau de ton PC, attends d'abord qu'il soit complĂštement sec ! 😜 (au besoin, mets ton PC dans la machine Ă  essorer le linge)

je suis tout Ă  fait ravi de ne pas t'avoir dĂ©goĂ»tĂ©e du VBA, et je te souhaite bonne chance pour la suite de ton projet actuel, ainsi que pour tes futurs projets. 🍀

passe toi aussi une trĂšs bonne journĂ©e ! ☀​

soan đŸŒč
 
DerniĂšre Ă©dition:
Bonjour Luana,

désolé, mais j'ai 3 nouvelles trÚs mauvaises pour toi (n'oublie pas de cliquer sur tous les liens bleus) :

1) tu as Ă©crit : « 😂 si tu savais les trĂ©sors qu'ils trouvent.. 😀 » ; c'est vraiment trĂšs ambigu : je n'ai pas compris si tu veux dire qu'ils trouvent de vrais superbes trĂ©sors ou si au contraire tu as ironisĂ© pour dire que ce ne sont que des babioles (voire mĂȘme des dĂ©chets hĂ©tĂ©roclites, peut-ĂȘtre mĂȘme polluĂ©s et nocifs) ; au cas oĂč ce sont de vrais trĂ©sors : ça ne leur appartient pas car nos politiciens français ont fait passer une Loi (il y a trĂšs longtemps, mais qui est toujours valable actuellement) comme quoi tout trĂ©sor trouvĂ© dans les eaux territoriales françaises appartient d'emblĂ©e Ă  l'État (eh oui, hĂ©las !) ; traduction en clair : tous les risques sont pour tes scaphandriers, mĂȘme s'ils y laissent leur vie (accidents de plongĂ©e tels que a) maladie des caissons = accident de dĂ©compression ; b) visite inopportune et involontaire de l'estomac d'un requin) ; aux politiciens tous les bĂ©nĂ©fices (mĂȘme s'ils n'ont rien fait d'autre que de se prĂ©lasser dans leur fauteuil sĂ©natorial) ; certains diraient sans doute que c'est du vol lĂ©gal et organisĂ©, et mĂȘme un vrai racket d'État (mais bon, comme de toutes façons tout l'monde sait bien qu'on n'a pas le choix...) ; et tu ne pourras pas dire que tu ne savais pas : « Nul n'est censĂ© ignorer la loi » ; je connais d'avance ta rĂ©ponse : « adieu, veau, vache, cochon, couvĂ©e... » (comme aurait dit Perrette dans « La laitiĂšre et le Pot au lait ») ; il ne va te rester que tes yeux pour pleurer ! 😭 (snif !) ; NB : je tiens malgrĂ© tout Ă  t'assurer de ma parfaite comprĂ©hension, et je compatis sincĂšrement ! (ah, ben zut ! voilĂ  qu'ça m'reprend, d'parler comme ces politiciens ! â˜č mais j'te jure : c'est pas moi qui ai fait voter cette loi qui te spolie de tes riches dĂ©couvertes !)

2) tu as Ă©crit : « PS : pas de problĂšme de RGPD j'ai demandĂ© avant de joindre le fichier » ; commence par lire mon post #8 et les 2 autres que tu verras en dessous ; puis lis trĂšs attentivement ce post #29 ; alors tu comprends ce qu'il te reste Ă  faire, n'est-ce pas ? c'est pour ça que dans le fichier joint de mon post #7, j'avais mis des noms fictifs pour les scaphandriers : mon pseudo et le tien ; les 2 apnĂ©istes cĂ©lĂšbres du « Grand Bleu » ; Jo Legrand (et sa sƓur Zette dans « Le "Manitoba" ne rĂ©pond plus ») ; les 4 cĂ©lĂšbres scaphandriers Ă  la recherche du TrĂ©sor de Rackham le Rouge ; celui qui a plongĂ© plus profond que tous les autres rĂ©unis, Ă  20 000 lieues sous les mers : Nemo, le Capitaine (et concepteur) du Nautilus ; un seul nom est rĂ©el : William Walker (un britannique nĂ© en 1869) ; c'est un des pionniers de la plongĂ©e sous-marine, et il a sauvĂ© une cathĂ©drale (vĂ©ridique !) ; si tu me demandes pourquoi je me suis mis en premier dans la liste, ce n'est pas par orgueil, tout au contraire : c'est moi qui plonge le moins profond, Ă  seulement 1 m sous l'eau ! mais sans bouteilles d'oxygĂšne, avec juste un masque, un tuba et des palmes ; mon plus gros trĂ©sor : un crabe, quelques crevettes, et 2 coquillages ; mais mĂȘme ça, l'État me l'a pris ! 😭 😜 ; bien sĂ»r, ton nombre en i14 est complĂštement faux : ce n'est pas 42 m mais 20 000 lieues ; la lieue marine vaut trois milles marin, et il paraĂźt que c'est pas pareil que la lieue terrestre ; si tu veux faire un cadeau Ă  ton chat, j'ai vu en vitrine les bottes de sept lieues (non, c'Ă©tait pas dans un magasin, mais dans un chĂąteau) ; j'ai failli mettre aussi Jonas ; il a fait de la plongĂ©e, lui aussi, et bien malgrĂ© lui, mais ce n'Ă©tait pas un scaphandrier ! 😁 tiens, c'est marrant, quelque part, ça m'rappelle Pinocchio et son pĂšre Geppetto : eux aussi se sont retrouvĂ©s au fond d'une baleine ! pour notre prochain dĂźner en tĂȘte-Ă -tĂȘte, ça t'irait, comme lieu de RV ? ça a l'air tellement en vogue ! đŸ€Ș dis, tu voudras bien me le dire, si tes scaphandriers dĂ©couvrent l'Atlantide ? 😛

3) mĂȘme quand tu auras anonymisĂ© ton fichier, j'aurai pas le temps de m'en occuper, par manque de disponibilitĂ© ; si plus tard je trouve un moment de libre, j'essayerai ; mais peut-ĂȘtre qu'alors un autre contributeur t'auras dĂ©jĂ  rĂ©pondu et trouvĂ© une solution ? j'espĂšre que tu m'en voudras pas trop, et peut-ĂȘtre que je pourrai t'aider plus tard pour un autre de tes fichiers Excel renflouĂ©s. 🙄 😇​

soan
 
DerniĂšre Ă©dition:
- Navigue sans publicité
- AccÚde à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

RĂ©ponses
8
Affichages
94
RĂ©ponses
3
Affichages
599
  • Question Question
XL 2021 VBA excel
RĂ©ponses
4
Affichages
79
  • Question Question
Microsoft 365 Export données
RĂ©ponses
4
Affichages
503
RĂ©ponses
5
Affichages
496
RĂ©ponses
38
Affichages
482
RĂ©ponses
4
Affichages
362
Retour