[VBA]Condition sur le type d'une valeur

Résolu/Fermé
Schtroumpf_Wiki - 16 août 2011 à 15:52
 Schtroumpf_Wiki - 16 août 2011 à 16:39
Bonjour,

une question toute bête. Est-il possible de faire une boucle conditionnelle où la condition ne serait pas une compatraison à une valeur mais à un type de valeur ? Par exemple est-ce que l'algorithme suivant est faisable en VBA :

Si a n'est pas un entier alors
message d'erreur
fin du programme
fin si

pour éviter que me macro bug en multipliant des lettres !

Merci !

2 réponses

jean_pierre Messages postés 36 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 5 octobre 2011 6
16 août 2011 à 16:23
Bonjour
en utilisant la fonction IsNumeric(VarName) qui renvoie une réponse booléenne
ou bien TypeName(VarName) qui renvoie "Integer","String",.....
1
Schtroumpf_Wiki
16 août 2011 à 16:39
Parfait ! Je ne connaissais pas les deux fonctions que tu viens de citer et la première me convient parfaitement !

Merci beaucoup !
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
16 août 2011 à 16:27
bonjour,

voici une petite boucle qui permet de le faire :

Sub cherchedécimal()

i = 1
'balaie toutes les lignes de la colonne 1 jusqu'à ce que la cellule de la colonne 1 de la ligne i soit vide
Do While Cells(i, 1) <> ""

car = Len(Cells(i, 1)) 'variable car = nombre de caractère de la cellule de la ligne i et de la colonne 1
valeur = Cells(i, 1) 'variable valeur = cellule de la ligne i et de la colonne 1
Do While car > 0 ' tourne jusqu'à ce que valeur n'est plus de caractères
If Left(valeur, 1) = "," Then 'si le premier caractère de valeur à gauche est une virgule représentant ton nombre décimal
mess = MsgBox("Il y a un chiffre décimal dans la liste", vbOKOnly) 'alors affichage d'un message d'erreur
Exit Sub 'stop d ela macro
Else
valeur = Right(Cells(i, 1), Len(valeur) - 1) 'valeur devient égal à valeur moins le premier caractère situé à gauche
car = Len(valeur) ' car = nombre de caractère de valeur
End If
Loop
i = i + 1
Loop
End Sub
0