[Résolu][VBA] Trou de mémoire: détecter une variable numérique

Verba_Tim

XLDnaute Occasionnel
Coucou le fil!

J'ai un petit soucis... Un trou de mémoire x)

Je souhaite tout simplement sortir d'une boucle si la valeur d'une variable est numérique, ou si elle est composé d'un trop grand nombre de caractère...

Je ne me souviens plus de la politique a adopter x)
J'ai essayé un

If TypeName(Name) = "vbinteger" Then GoTo End1

Mais je définis moi même le format de la variable... donc inopérant.

De même j'aimerai sortir si la string contient deux caractère ou plus...
Mais pareil... je ne sais pas comment m'y prendre ^^'

Help please ! :p

Mon code actuel:

Code:
Sub tri_date_tm()
'variable
Dim Name As String
Dim DernLigne As Long
Dim DernLigne2 As String
Dim DernLigne3 As String
Dim ligne As Long

'select la feuille
ActiveSheet.Select

'validation lancement de la macro
Select Case Msgbox("Entrer la lettre de la colonne a trier!", vbOKCancel + vbQuestion, "Tri par date")
    
Case vbOK
        'procédure si click sur Ok
        Name = InputBox("saisissez le nom de la colonne")   'saisie de la colonne
    
'If TypeName(Name) = "vbinteger" Then GoTo End1 'ne fonctionne pas...

        If Name = Empty Then GoTo End1
    
'tri des cells
    Columns(Name).Select
    DernLigne = Range("A65536").End(xlUp).Row 'determine la derniere case non vide
    DernLigne2 = "Z" & DernLigne
    Dernlign3 = "A2:" & DernLigne2 'determine la plage a trier
    Range(Dernlign3).Sort Key1:=Range("O2"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=4, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    


        Case vbCancel
             'Cas si annulé par utilisateur
         
End1:


End Sub


Donc cette petite macro tri une colonne donnée par mois/année (mm/aaaa)
Mais j'aimerai éviter les bugs potentiels en mettant quelques garde fou ^^'

Merci de votre aide!


Verba_Tim'
 
Dernière édition:

Orodreth

XLDnaute Impliqué
Re : [VBA] Trou de mémoire: détecter une variable numérique

Bonjour,

Essaye comme ceci:

Code:
If IsNumeric(variable) Then 'Le test pour l'aspect numérique
    '...
End if

If IsString(variable) Then 'Le test pour la chaine de texte
    If len(variable) >= 2 Then 'Le test pour la longueur de la chaine de texte
        '...
    End If
End if

Cordialement,
 

Verba_Tim

XLDnaute Occasionnel
Re : [VBA] Trou de mémoire: détecter une variable numérique

Rholala incorrigible!

J'ai du les utiliser... des centaines de fois surtout la première ^^' suis moins familier avec la seconde.

Merci beaucoup! je test :)
 

Orodreth

XLDnaute Impliqué
Re : [Résolu][VBA] Trou de mémoire: détecter une variable numérique

Re,

Mea Culpa, le type String est un type objet (j'avais un doute sur le IsString).

Tu peux compenser par:
Code:
If TypeName(variable) = "String" Then

Ca devrait aller mieux comme ça.

Cordialement,
 

Discussions similaires

Réponses
16
Affichages
981

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof