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 :

On Error bouclé [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de pastis.vi
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2008
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 251
    Par défaut On Error bouclé
    Bonjour à tous !

    Dans un de mes fichiers j'ai fait un groupement de colonnes pour simplifier le visuel.
    Il peut arriver qu'il y ai plusieurs niveaux de groupement (mauvaise manipulation de l'utilisateur).

    Pour éviter toute erreur je souhaite supprimer tous les niveaux de groupement et en recréer un seul.

    Comme il n'y a pas qu'une colonne à groupe j'utilise un boucle.

    Voici le code que j'utilise:
    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
    Sub toto()
     
    ' On créé les groupements de colonnes
        i = 9
        While i < 30
            If Cells(1, i).Value = "" Then
                Cells(1, i).Select
                Selection.End(xlToRight).Select
                Selection.End(xlToRight).Select
                colgroup = Selection.Column - 1
                Range(Cells(1, i + 1), Cells(1, colgroup)).Select
                For a = 1 To 5
                    On Error GoTo suite
                    Selection.Columns.Ungroup
                Next a
    suite:
                Selection.Columns.Group
                Selection.Columns(1).ShowDetail = False
                On Error GoTo 0
            End If
            i = i + 1
        Wend
     
    End Sub
    Pour éviter d'afficher les erreurs dues à la suppression d'un groupement qui n'existe pas j'utilise On Error Goto.

    Le problème c'est que ce On Error Goto ne fonctionne qu'une seule fois. J'ai donc ajouté un On Error Goto 0 pour éviter cela mais ça ne change rien.

    Est-ce que quelqu'un aurait de quoi éclairer ma lanterne?

    Merci
    pastis.vi

  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
    Par défaut
    On Error GoTo 0 désactive ta gestion d'erreur... donc normal qu'il ne se fasse qu'une seule fois..

    Mets un on error resume next et ne te soucie pas des erreurs. Ou alors teste avant de supprimer le groupement s'il existe.. Plus propre mais moins simple

  3. #3
    Membre éclairé Avatar de pastis.vi
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2008
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 251
    Par défaut
    Salut EngueEngue

    Le On Error Goto 0 je l'ai rajouté parce que justement je pensais que ça réinitialisait le Error du dessus.

    Je peux pas me permettre d'utiliser un On Error Resume Next parce que je supprime 5 fois (boucle For 1 to 5) et avec le nombre de colonnes que j'ai ça prends vraiment du temps..

    Comment tu fais pour tester la présence d'un groupement?

  4. #4
    Invité
    Invité(e)
    Par défaut Bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    On Error Resume Next 'désactive le gestionnaire d'erreur.
    If Err <> 0 Then  'N° de l'erreur
    MsgBox Err.Description 'affichie l'erreur
    Err.Clear    'Suprime l'erreur.
    End If
    On Error GoTo 0 'redonne la main au getionnaire d'erreur.

  5. #5
    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
    Par défaut
    Tu ne testes pas la présence d'erreur.. Tu testes ce qui pourrait déclancher une erreur.

  6. #6
    Invité
    Invité(e)
    Par défaut
    perso j'ai fait un code qui explique le on error maintenant il faut le remettre dans son contexte!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    On erro GoTo Fin
    GoTo Sortie
    Fin:
    Err.Clear
    Resume Next
    Sortie:
    End Sub

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

Discussions similaires

  1. Enregistrement dans BDD avec boucle: Error!
    Par tryks dans le forum Langage
    Réponses: 8
    Dernier message: 24/05/2009, 17h32
  2. [MySQL] erreur dans une boucle ?You have an error in your SQL syntax; check the manual that c
    Par keokaz dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 17/10/2008, 23h08
  3. Error 1004 - Boucle enregistrement valeur colonne
    Par jbulysse dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/07/2008, 11h45
  4. Réponses: 6
    Dernier message: 26/11/2007, 15h25
  5. pb parse errors du à boucle
    Par richton95 dans le forum Langage
    Réponses: 6
    Dernier message: 16/11/2005, 12h18

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