Gestion d'erreur

F

fraille

Guest
Bonsoir le forum,

J'envoie ce post car je n'arrive pas à trouver la source de mon problème.

La fonction utilisée est assez simple:

Code:
    For i = 1 To Ncas 
        For k = 1 To 3 
            If k = 1 Then
                For l = 1 To 6 
                    teffort(k, j, l, i) = Application.WorksheetFunction.VLookup(Tablos(k, j) + l, Range('Indice'), i + 1, False)
                    If Err.Number = 1004 Then
                        MsgBox ('Attention')
                    End If  
                    On Error Resume Next 
                Next l

Si Tablos(k, j) + 1 n'existe pas (erreur 1004) la fonction me fait bugger l'application sans me retourner le contenu de la message box!!!
 

Hellboy

XLDnaute Accro
Bonjour Fraille

Il est sur que ton erreur vient du fait que tu ne lui passe pas une information qu'il s'attend a recevoir. je crois que c'est un Range qu'il veux. Etant donner que je ne sais pas ce que tu cherche a lui donner comme tableau de référance, c'est difficile a te donner une réponse précise. En plus tu n'as pas de référence a ton j dans ce bout de code!!!!


For i = 1 To Ncas
       
For k = 1 To 3
               
If k = 1 Then
                   
For l = 1 To 6
                   
On Error Resume Next
               
' Ton j tu le prend ou, il n'y a pas de référence a ton j dans ce bout de code
                            teffort(k, j, l, i) = Application.WorksheetFunction.VLookup(Range(Cells(k, j), Cells(k, j)), Range('Indice'), i + 1,
False)
                           
If Err.Number = 1004 Then
                                MsgBox ('Attention')
                           
'    veut tu faire un traitement ici du genre Exit For?
                           
End If
                    Nex l
               
End If
       
Next k
Next i
 
F

fraille

Guest
Oui effectivement vu comme ça forcément le programme bug puisqu'il n'y a pas de j.

Mais ce programme fonctionne parfaitement lorsqu'il est implanté dans ma macro. Le seul problème est lorsqu'il ne trouve pas une valeur dans le tableau excel nommé indice il me renvoie un message d'erreur et retourne directement dans l'éditeur vba.

Ce que je voudrais c'est que lorsque le logiciel ne trouve pas la valeur dans le tableau, au lieu de planter le logiciel renvoie un message d'erreur expliquant à l'utilisateur à quel indice le logiciel a planté et que suite à ce message d'erreur le programme se ferme.

Et la interviend mon code ci dessous puisque le gestionnaire d'erreur que j'ai mis dans mon code ne marche pas.

Je ne sais pas si c'est clair.
 

Hellboy

XLDnaute Accro
Bonjour fraille

Je ne sais pas si tu as remarqué que j'ai changé de place, selon moi et encore je n'ai aucune visibilité sur l'ensemble de ta macro, il n'étais pas bien situé.

Si tu pouvais joindre ton fichier, ça serais plus facile a géré.

a+
 
F

fraille

Guest
Ah oki merci ton code marche bien je n'avais pas remarqué le changement de place du on error goto next. Merciiiii

Juste une question pour que le programme s'arréte totalement il faut mettre quoi comme commande?? Car exit sub fera juste sortir le logiciel de la routine en exécutant le code vanant après cette routine.
 

Discussions similaires

Réponses
11
Affichages
296
Réponses
4
Affichages
213

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 205
dernier inscrit
zch