Macro pour situer une valeur entre plusieurs autres

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 !

Chris57

XLDnaute Occasionnel
Bonjour à tous,

ça peu paraître bête mais j'arrive pas a mettre au point ce code :

If ECARTdates > 0 And ECARTdates <= 2 Then
a = 1
ElseIf ECARTdates > 2 And ECARTdates <= 5 Then
a = 2
ElseIf ECARTdates > 5 And ECARTdates <= 20 Then
a = 3
End If

ECARTdates est une Variant qui peut être décimale

je l'ai certainement déjà dans une macro mais là je ne retrouve plus la syntaxe...
 
Re : Macro pour situer une valeur entre plusieurs autres

Bonjour

il y a plusieurs façons de résoudre (if; case...)

avec ta méthode, il manque je pense des "endif"

je verrais bien

Code:
If ECARTdates > 0 And ECARTdates <= 2 Then
    a = 1
Else
    If ECARTdates > 2 And ECARTdates <= 5 Then
        a = 2
    Else
        If ECARTdates > 5 And ECARTdates <= 20 Then a = 3
    End If
End If
 
Re : Macro pour situer une valeur entre plusieurs autres

Bonjour le fil 🙂,
avec ta méthode, il manque je pense des "endif"
Non, le code est tout à fait correct et fonctionne, la structure avec ElseIf est bien
Code:
If ... Then
...
ElseIF ... Then
...
End If
Par contre, dans le cas présent, si "a" n'est pas déclaré formellement (As Integer par exemple), "a" n'as pas de valeur à la sortie du test si ECARTdates est <=0 ou >20... Donc si tu veux lui donner une valeur, il faut ajouter un Else simple en fin de test
Code:
If ECARTdates > 0 And ECARTdates <= 2 Then
a = 1
ElseIf ECARTdates > 2 And ECARTdates <= 5 Then
a = 2
ElseIf ECARTdates > 5 And ECARTdates <= 20 Then
a = 3
Else
a = 0
End If
Si ta question est autre, je pense qu'on a besoin d'explications complémentaires 🙄...
Bon courage 😎
 
Re : Macro pour situer une valeur entre plusieurs autres

Bonjour
La question manque de clarté
Mais pour .... comme ça
Même si "a" n'est pas déclaré, à la sortie de ces tests il aura la valeur 0 si aucune condition n'est remplie
Dans le cas ou il n'y a que cette série de test dans la macro

Mais peut-être que me trompais-je

Bonne journée

EDIT: Mea culpa
Je me suis mal exprimé
Une déclaration (Integer, Byte, Long ....) suffit à lui donner la valeur 0
 
Dernière édition:
Re : Macro pour situer une valeur entre plusieurs autres

Salut

ne pratiquant pas le ElseIf (et pour cause), je ferai :
Code:
  Dim a As Byte 'a est initialisé à 0
  If ECARTdates > 0 And ECARTdates <= 2 Then a = 1
  If ECARTdates > 2 And ECARTdates <= 5 Then a = 2
  If ECARTdates > 5 And ECARTdates <= 20 Then a = 3

quand les cas s'excluent, je passe plutôt par un Select Case :
Code:
  Dim a As Byte
  Select Case ECARTdates
  Case 0 To 2: a = 1
  Case 2 To 5: a = 2
  Case 5 To 20: a = 3
  End Select

L'intérêt ici est de sortir de la boucle dès qu'un cas est rencontré.
 
Dernière édition:
Re : Macro pour situer une valeur entre plusieurs autres

Re 🙂,
ne pratiquant pas le ElseIf (et pour cause), je ferai :
...
L'intérêt ici est de sortir de la boucle dès qu'un cas est rencontré.
Je ne suis pas pratiquant non plus du ElseIf 😛, bien que c'est assez pratique, mais justement, tout son intérêt est aussi de sortir de la boucle dès que la condition est satisfaite 🙄...
Bonne soirée 😎
 
Re : Macro pour situer une valeur entre plusieurs autres

Merci à tous,

la solution de "Si" a parfaitement fonctionné, même sans déclarer la valeur ! Mais je ne sais toujours pas pourquoi la mienne ne marche pas...
Bon j'ai encore des km de lignes à taper alors je m'y met.

Merci !!
 
- 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
7
Affichages
367
Retour