Menu

[Excel] problème de condition If ElseIf [Résolu]

LeGhe - 3 févr. 2018 à 18:24 - Dernière réponse : eriiic 21624 Messages postés mardi 11 septembre 2007Date d'inscriptionContributeurStatut 27 mai 2018 Dernière intervention
- 6 févr. 2018 à 10:38
Bonjour,

Je cherche à remplir une cellule colonne M avec une valeur en fonction de la colonne N :

Columns("N:N").Select
Selection.NumberFormat = "0"
For li = lifinz3 To 2 Step -1
If 0 < OAma.Range("N" & li).Value < 100 Then
Range("M" & li) = "100G"
ElseIf 101 < OAma.Range("N" & li).Value < 250 Then
Range("M" & li) = "250G"
ElseIf 251 < OAma.Range("N" & li).Value < 500 Then
Range("M" & li) = "500G"
ElseIf 501 < OAma.Range("N" & li).Value < 1000 Then
Range("M" & li) = "1000G"
ElseIf 1001 < OAma.Range("N" & li).Value < 2000 Then
Range("M" & li) = "2000G"
ElseIf 2001 < OAma.Range("N" & li).Value < 3000 Then
Range("M" & li) = "3000G"
End If
Next li


Mais tout est rempli avec 100G.

Pourquoi ?

Merci !
Afficher la suite 

Votre réponse

8 réponses

eriiic 21624 Messages postés mardi 11 septembre 2007Date d'inscriptionContributeurStatut 27 mai 2018 Dernière intervention - 3 févr. 2018 à 18:35
0
Merci
Bonjour,

comment veux-tu qu'on te réponde sans voir ce qu'il y a réellement dans N ?
Déposer le fichier xls sur cjoint.com et coller ici le lien fourni.

eric
Columns("N:N").Select
Selection.NumberFormat = "0"


ben N est un nombre entier, non ?
Commenter la réponse de eriiic
yg_be 5631 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 mai 2018 Dernière intervention - 3 févr. 2018 à 18:37
0
Merci
bonjour, je pense que tu veux plutôt écrire:
(0 < OAma.Range("N" & li).Value) and (OAma.Range("N" & li).Value < 100)
yg_be 5631 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 mai 2018 Dernière intervention - 3 févr. 2018 à 18:44
si tu écris
a < b < c
, VBA va faire ainsi:
(a<b) < c

donc il va vérifier si a est plus petit que b, et vérifier si le résultat (vrai ou faux) est plus petit que c.
Commenter la réponse de yg_be
yg_be 5631 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 mai 2018 Dernière intervention - 3 févr. 2018 à 19:10
0
Merci
suggestion:
option explicit
dim vl as single
Columns("N:N").Select
Selection.NumberFormat = "0"
For li = lifinz3 To 2 Step -1
vl = OAma.Range("N" & li).Value
If 0 < vl then
if  vl  < 100 Then
Range("M" & li) = "100G"
ElseIf vl  < 250 Then
Range("M" & li) = "250G"
ElseIf vl < 500 Then
Range("M" & li) = "500G"
ElseIf vl < 1000 Then
Range("M" & li) = "1000G"
ElseIf vl < 2000 Then
Range("M" & li) = "2000G"
ElseIf vl < 3000 Then
Range("M" & li) = "3000G"
End If
end if
Next li 
C'est parfait, j'ai compris, merci infiniment !
eriiic 21624 Messages postés mardi 11 septembre 2007Date d'inscriptionContributeurStatut 27 mai 2018 Dernière intervention - 6 févr. 2018 à 10:38
Bonjour,

je reprend ici pour qu'il y ait une logique dans la continuité.

Selection.NumberFormat = "0"
ben N est un nombre entier, non ?

Non. Un format change l'affichage, jamais la valeur.
Il faut prendre la partie entière Int(ta_cellule)
eric
Commenter la réponse de yg_be