IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Gestion d'erreur sur boucle


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Actuaire
    Inscrit en
    Juillet 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Actuaire
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 49
    Points : 42
    Points
    42
    Par défaut Gestion d'erreur sur boucle
    Bonjour à tous
    j'ai fait un petit programme qui ouvre les sorties d'un des logiciels sur lesquels je travaille et les convertis automatiquement.
    Cependant j'aimerais un peu l'améliorer pour en gros:
    "Si le classeur n'existe pas, on passe a la ligne suivante (la ligne contient le nom du classeur suivant) . J'ai testé avec les on error go to error handler mais ca ne marche pas

    voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Sub recup_output()
    Dim i As Integer, j As Integer, length As Integer
    Dim workspace As Variant, temp As Variant
    Dim product As String
    Dim classeurtemp As Workbook, classeurrecup As Workbook
     
    Set classeurrecup = ActiveWorkbook
    workspace = Cells(1, 2).Value
     
    'recupération longueur liste
    i = 2
    While Cells(i, 2).Value <> ""
    length = i + 1
    i = i + 1
    Wend
     
    'ouverture de la liste , conversion et copie des valeurs
     
    For i = 2 To length - 1
     
     
        product = classeurrecup.Sheets(1).Cells(i, 2).Value
        Set classeurtemp = Workbooks.Open(Filename:=workspace & "\" & product & ".pro")
     
     
        classeurtemp.Sheets(1).Range("A1:A65000").Select
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, TrailingMinusNumbers _
        :=True
     
        classeurtemp.Sheets(1).Copy After:=classeurrecup.Sheets(i - 1)
     
        classeurtemp.Saved = True
        classeurtemp.Close
        Selection.Delete
     
       Next i
     
     
     
       Sheets(1).Activate
    End Sub
    merci par avance pour votre aide!
    Guillaume

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    On error goto Solution
    '--
    Solution:
    '--
    Devrait marcher

    Mais fais plutôt un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Dir("C:\toto.pro") = "" Then 
    '--
    Else
    '--
    End if

  3. #3
    Membre du Club
    Homme Profil pro
    Actuaire
    Inscrit en
    Juillet 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Actuaire
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 49
    Points : 42
    Points
    42
    Par défaut
    oui c'est ce que j'ai essayé en disant "errorhandler" mais je dois mal les placer dans le programme, et surtout je ne sais pas trop quoi mettre dans "solution",

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    suffira de mettre
    ...

  5. #5
    Membre du Club
    Homme Profil pro
    Actuaire
    Inscrit en
    Juillet 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Actuaire
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 49
    Points : 42
    Points
    42
    Par défaut
    solution trouvée en mettant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    solution:
       i = i + 1
       product = classeurrecup.Sheets(1).Cells(i, 2).Value
       Resume
    mais maintenant j'ai droit a une nouvelle erreur:

    "Dépassement de capacité" et le i=i+1 est surligné lors du débogage

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Bah normal, i est un integer donc va jusqua 32767, or a un moment dans ta colonne il y a des cases vides.. il va chercher des fichiers dont le nom est vide.. et il continue ainsi.

    Mets une condition if
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    solution:
      product = classeurrecup.Sheets(1).Cells(i+1, 2).Value
    if product <>"" then
       i = i + 1
    end if
       Resume

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion des erreurs sur les noms des villes
    Par yosryosr dans le forum Pascal
    Réponses: 3
    Dernier message: 18/04/2008, 11h52
  2. gestions des erreurs sur les Noms des villes
    Par yosryosr dans le forum Langage
    Réponses: 2
    Dernier message: 15/04/2008, 12h07
  3. Gestion des erreurs sur SQLServer 2005
    Par vhellers dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/08/2007, 09h20
  4. Gestion des erreurs sur une commande multiple
    Par domiq44 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/10/2006, 15h03
  5. [PHP-JS] gestion des erreurs sur liste déroulente
    Par HwRZxLc4 dans le forum Langage
    Réponses: 9
    Dernier message: 28/05/2006, 03h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo