Vérifier le type d'une variable

Résolu
VBAdebutant11 Messages postés 7 Statut Membre -  
VBAdebutant11 Messages postés 7 Statut Membre -
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. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
     
    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
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
       
      hé oui ...

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

      cordialement
      0
  3. VBAdebutant11 Messages postés 7 Statut Membre
     
    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
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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. VBAdebutant11 Messages postés 7 Statut Membre
       
      Ca marche :) Merci beaucoup !
      0