Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…