[VBA]Condition sur le type d'une valeur

Résolu
Schtroumpf_Wiki -  
 Schtroumpf_Wiki -
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

  1. jean_pierre Messages postés 36 Statut Membre 6
     
    Bonjour
    en utilisant la fonction IsNumeric(VarName) qui renvoie une réponse booléenne
    ou bien TypeName(VarName) qui renvoie "Integer","String",.....
    1
    1. Schtroumpf_Wiki
       
      Parfait ! Je ne connaissais pas les deux fonctions que tu viens de citer et la première me convient parfaitement !

      Merci beaucoup !
      0
  2. melanie1324 Messages postés 1561 Statut Membre 156
     
    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