VBA : Erreur 13 aléatoire sur variable
Résolu/Fermé
jeff10241
Messages postés
3
Date d'inscription
mercredi 30 janvier 2013
Statut
Membre
Dernière intervention
30 janvier 2013
-
30 janv. 2013 à 16:44
jeff10241 Messages postés 3 Date d'inscription mercredi 30 janvier 2013 Statut Membre Dernière intervention 30 janvier 2013 - 30 janv. 2013 à 19:34
jeff10241 Messages postés 3 Date d'inscription mercredi 30 janvier 2013 Statut Membre Dernière intervention 30 janvier 2013 - 30 janv. 2013 à 19:34
A voir également:
- VBA : Erreur 13 aléatoire sur variable
- Incompatibilité de type vba ✓ - Forum Programmation
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba dernière colonne non vide ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
5 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
30 janv. 2013 à 17:22
30 janv. 2013 à 17:22
Bonjour,
Extrait de l'aide VBA :
Abs(number)
L'argument number peut contenir toute expression numérique valide.
Abs("") ne peux donc que renvoyer une erreur de type (erreur 13)
Fait le test :
Il te faut donc tester au préalable ta variable testEEQ :
Extrait de l'aide VBA :
Abs(number)
L'argument number peut contenir toute expression numérique valide.
Abs("") ne peux donc que renvoyer une erreur de type (erreur 13)
Fait le test :
MsgBox Abs(1) MsgBox Abs(0) MsgBox Abs("")
Il te faut donc tester au préalable ta variable testEEQ :
testEEQ = Range("AP" & ligne) If testEEQ <> "" Then 'si > 3 effacer la valeur aberrante (plante souvent) If Abs(testEEQ) > limiteEEQ Then Range("Q" & ligne).Clear Else 'ICI tu peux éventuellement ajouter un traitement à faire si testeEEQ est vide End If
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
7 209
Modifié par eriiic le 30/01/2013 à 17:38
Modifié par eriiic le 30/01/2013 à 17:38
Bonjour à tous,
D'autre part je m'interroge sur le pertinence de :
Dim testEEQ As String
Const limiteEEQ = 3.5
avec
Abs(testEEQ) > limiteEEQ
Même si vba convertit il est plus juste de mettre :
Dim testEEQ As double
Const limiteEEQ as Double= 3.5
Ce qui pour une cellule vide donnera abs(0) au lieu de et non abs(""), ce qui est valide mathématiquement (à toi de tester ce cas si tu le considères comme particulier).
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
D'autre part je m'interroge sur le pertinence de :
Dim testEEQ As String
Const limiteEEQ = 3.5
avec
Abs(testEEQ) > limiteEEQ
Même si vba convertit il est plus juste de mettre :
Dim testEEQ As double
Const limiteEEQ as Double= 3.5
Ce qui pour une cellule vide donnera abs(0) au lieu de et non abs(""), ce qui est valide mathématiquement (à toi de tester ce cas si tu le considères comme particulier).
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
Modifié par pilas31 le 30/01/2013 à 17:42
Modifié par pilas31 le 30/01/2013 à 17:42
Bonjour,
A priori c'est quand la valeur de testEEQ est vide que ABS(testEEQ) provoque l'erreur 13.
testEEQ est vide quand la cellule en colonne AP est vide donc quand la cellule en N n'est pas numérique (donc peut-être vide aussi)
Donc pour corriger il faut savoir quel traitement faut-il faire lorsque N n'est pas numérique. Faut-il qd même effacer ou bien faut-il passer à la ligne suivante ?
EDIT: salut eriiic et pijaku. Désolé j'avais pas vu vos réponses (pertinentes bien sur) avant de poster
Cordialement,
A priori c'est quand la valeur de testEEQ est vide que ABS(testEEQ) provoque l'erreur 13.
testEEQ est vide quand la cellule en colonne AP est vide donc quand la cellule en N n'est pas numérique (donc peut-être vide aussi)
Donc pour corriger il faut savoir quel traitement faut-il faire lorsque N n'est pas numérique. Faut-il qd même effacer ou bien faut-il passer à la ligne suivante ?
EDIT: salut eriiic et pijaku. Désolé j'avais pas vu vos réponses (pertinentes bien sur) avant de poster
Cordialement,
jeff10241
Messages postés
3
Date d'inscription
mercredi 30 janvier 2013
Statut
Membre
Dernière intervention
30 janvier 2013
30 janv. 2013 à 17:14
30 janv. 2013 à 17:14
Info en + : c'est souvent (mais pas tout le temps) quand la variable est vide que j'ai l'erreur (mais est elle vraiment vide ? vu qu'elle pioche quand même dans une cellule contenant une formule)...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jeff10241
Messages postés
3
Date d'inscription
mercredi 30 janvier 2013
Statut
Membre
Dernière intervention
30 janvier 2013
30 janv. 2013 à 19:34
30 janv. 2013 à 19:34
Merci à tous les trois, tout le monde a raison !
j'aurais déjà du regarder un peu plus Abs en détails, mais j'avais fait une focalisation sur la variable !
Donc en effet c'est si ma cellule AP & ligne est vide, donc que mon testEEQ est nul que ça plante.
Je contourne donc le problème en vérifiant que ma cellule "source" Nx contient un chiffre, auquel cas je fais le test, autrement je passe à la zone suivante.
En en effet, ne sachant plus trop quoi déclarer pour la variable il y avait n'importe quoi, je remplace String par Double. Encore merci à vous.
j'aurais déjà du regarder un peu plus Abs en détails, mais j'avais fait une focalisation sur la variable !
Donc en effet c'est si ma cellule AP & ligne est vide, donc que mon testEEQ est nul que ça plante.
Je contourne donc le problème en vérifiant que ma cellule "source" Nx contient un chiffre, auquel cas je fais le test, autrement je passe à la zone suivante.
En en effet, ne sachant plus trop quoi déclarer pour la variable il y avait n'importe quoi, je remplace String par Double. Encore merci à vous.