[VBA][Résolu] Déclarer une constante avec plusieurs occurences

Nairolf87

XLDnaute Nouveau
Bonjour,
je cherche à déclarer une constante avec plusieurs occurrences du type :
Code:
Const Compte = "902184", "936205", "964815"
de façon à faire une condition du style :

Code:
If activecell.value = Compte then
Msgbox "Test Ok"
End if

Le but étant que le test IF essaye toutes les valeurs déclarées dans la constante.
 
Dernière édition:

Misange

XLDnaute Barbatruc
Re : [VBA] Déclarer une constante avec plusieurs occurences

Bonjour

Pourrais tu renseigner dans ton profil et dans le titre de ta question quelle version d'excel tu utilises, c'est une information utile quand on te propose une réponse. Merci

Tu ne peux pas faire comme tu le décris. Mais tu peux utiliser une fonction perso et un array qui stocke les valeurs des comptes :
Code:
Public Function IsInArray(ByRef ArrayDeRecherche as Variant, ByVal ValeurCherchée as Value) As Boolean 
Dim a 
For a = LBound(ArrayDeRecherche) To UBound(ArrayDeRecherche)    
   If ArrayDeRecherche(a) = ValeurCherchée then         
     IsInArray = True         
     Exit For    
   End If 
Next a 
End Function

et tu appelles cette fonction depuis ton code
Code:
Dim Tblo
Tblo = Array(902184, 936205, 964815)
If isinarray(activecell.value) then Msgbox "Test Ok"
 

Nairolf87

XLDnaute Nouveau
Re : [VBA] Déclarer une constante avec plusieurs occurences

Merci pour ta réponse rapide mais j'ai le message d'erreur suivant :
"Erreur de compilation : Type défini par l'utilisateur non défini"

Je ne suis pas trop calé pour l'appel de fonction, j'ai essayé de déclarer en public les deux variables Arrayderecherche et Valeurcherchée mais sans succès...
 

kjin

XLDnaute Barbatruc
Re : [VBA] Déclarer une constante avec plusieurs occurences

Bonjour,
Le type de l'argument Valeurcherchée est plutôt étonnant
La déclarer en variant, en long, voire pas du tout (ce qui revient à objet)
De plus il manque l'argument tblo dans l'appel de la fonction
Code:
Sub verif()
Dim Tblo
Tblo = Array(902184, 936205, 964815)
If IsInArray(Tblo, ActiveCell.Value) Then MsgBox "Test Ok"
End Sub
Code:
Public Function IsInArray(ByRef ArrayDeRecherche As Variant, ByVal ValeurCherchée As Variant) As Boolean
Dim a
For a = LBound(ArrayDeRecherche) To UBound(ArrayDeRecherche)
   If ArrayDeRecherche(a) = ValeurCherchée Then
     IsInArray = True
     Exit For
   End If
Next a
End Function

Autre solution
Code:
Sub verif()
Dim Tblo
Tblo = Array(902184, 936205, 964815)
If Not IsError(Application.Match(ActiveCell.Value, Tblo)) Then MsgBox "Test Ok"
End Sub
A+
kjin
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 868
dernier inscrit
pierreselo33