[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 :)
 

Verba_Tim

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

Erreur :3

IsString n'est pas reconnus... ^^'
 

Verba_Tim

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

Au final pas de soucis, il suffit de retirer cet If ^^ il n'est pas utile.

Merci!!
 

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,
 

Verba_Tim

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

Oui aussi :rolleyes: pas bête!

En tout cas merci :)
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas