Vérifier le type d'une variable

Résolu
Bonjour.
Svp comment utiliser l'instruction TantQue en VBA pour le cas suivant

Dim c as string
c = Inputbox("Saisissez une lettre.")
Do until c is string
c= Inputbox ("Veuillez saisir une lettre."
Loop

Le c est censé représenter la lettre d'une colonne.
Le "Do Until c is string" est faux
Donc, comment vérifier le type d'une variable ?
Et, existe-t-il un type "colonne de cellule" en VBA car même en considérant c une chaine de caractères, si l'utilisateur saisit "affj5454??" j'aurais un souci.

Merci beaucoup.

4 réponses

  1. Bonjour,
    Ce n'est pas une vérification de type de donnée dont tu as besoin car tu fais saisir une chaîne de caractères.
    Il faut simplement que tu vérifies que la saisie est dans les limites du nombre de colonnes.
    Majuscule(c)>="A" et <="XFD" pour xl 2010

    Cdlt
    0
    1. Contributeur
      Bonjour,

      attention que "AAAA" < "XFD" est vrai
      Tu pourrais utiliser :
      IsError(Range(c & 1).Address)

      pour tester la validité de la saisie selon la version d'excel utilisée.

      eric

      En essayant continuellement, on finit par réussir.
      Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
      En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
      0
      1. hé oui ...

        Et "
        ATTENTIONACEQUETUECRISJVDO
        " n'est effectivement pas une colonne valide (pour l'instant!!!!!) dans excel.

        cordialement
        0
    2. Merci pour votre aide précieuse !
      Svp quelle est l'instruction exacte à faire dans cet exemple :

      Dim c as string
      Dim l as integer

      c = Inputbox("Colonne de la cellule")
      l = Inputbox ("Ligne de la cellule")
      Do until IsError (Range(C & L).Address) = False
      c = Inputbox("Colonne de la cellule")
      l = Inputbox ("Ligne de la cellule")
      Loop

      Je veux vérifier que que Range(c & l) est bien une cellule
      Merci d'avance.
      0
      1. Contributeur
        Ca pourrait être :
        Sub test()
            Dim c As String, l As Integer, ok As Boolean
            Do
                c = InputBox("reference de la cellule")
                On Error Resume Next
                ok = Not (IsError(Range(c).Address))
                On Error GoTo 0
            Loop Until ok
            l = Split(Range(c).Address, "$")(2)
            c = Split(Range(c).Address, "$")(1)
        End Sub

        ou
        Sub test2()
            Dim cel As Range
            Dim c As String
            Dim l As Integer
            Set cel = Application.InputBox("Cliquer la cellule", "Référence", , , , , , 8)
            c = Split(Range(c), "$")(0)
            l = Split(Range(c), "$")(1)
        End Sub 

        Mais je te conseille de ne pas travailler avec c et l.
        Travaille avec un range, et utilise .offset() pour le décaler.
        cel.offset(5, -2) te fourni un range (une cellule) située 5 ligne en-dessous et 2 colonnes à gauche de cel (car négatif).
        Si tu as du mal précise ton cas et on essaiera de t'éclairer. On a tous débuté, autant essayer de gagner du temps sur les bons reflexes ;-)
        eric

        En essayant continuellement, on finit par réussir.
        Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
        En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
        0
        1. Ca marche :) Merci beaucoup !
          0