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. 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
  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
      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. 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