Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
786 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Problème avec répétitiion du On error Goto xx

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec répétitiion du On error Goto xx

n°1935999
vincenth16
Posté le 28-10-2009 à 17:30:06  profilanswer
 

Bonjour à tous,
 
Voilà, après m'être tiré les cheveux sur de nombreux forum et n'ayant toujours pas ma réponse, voici mon problème : Je demande à ma macro de sélectionner une plage de données visibles après un filtre dans plusieurs onglets. Si il n'y a pas de plage visible (ce qui peut arriver), j'ai mis un On error Goto pour qu'il passe à l'onglet suivant. Cela fonctionne si l'erreur apparait qu'une fois, mais pas deux...
 
Voici en simplifié ma ligne de code :
 
    Sheets("A" ).select
    Range("A1" ).Select
    On Error GoTo Suite1
    With Range("_FilterDatabase" )
    Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).SpecialCells(xlCellTypeVisible)
    With plagefiltrevisible.Areas(1).Rows(1).Select
    Range(Selection, Selection.End(xlDown)).Select
    End With
    End With
Suite1:
    Sheets("B" ).select
    Range("A1" ).Select
    On Error GoTo Suite2
    With Range("_FilterDatabase" )
    Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).SpecialCells(xlCellTypeVisible)
    With plagefiltrevisible.Areas(1).Rows(1).Select
    Range(Selection, Selection.End(xlDown)).Select
    End With
    End With
Suite2:
    Sheets("C" ).select
    Range("A1" ).Select
    On Error GoTo Suite3
    With Range("_FilterDatabase" )
    Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).SpecialCells(xlCellTypeVisible)
    With plagefiltrevisible.Areas(1).Rows(1).Select
    Range(Selection, Selection.End(xlDown)).Select
    End With
    End With
Suite3:
    Sheets("D" ).select
    Range("A1" ).Select
    On Error GoTo Suite4
    With Range("_FilterDatabase" )
    Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).SpecialCells(xlCellTypeVisible)
    With plagefiltrevisible.Areas(1).Rows(1).Select
    Range(Selection, Selection.End(xlDown)).Select
    End With
    End With
Suite4:
End sub
 
Si dans la feuille B et dans la feuille C il n'y a pas de données visibles, alors le code bloque sur la ligne notée en BLEU.
 
Merci pour votre aide !

mood
Publicité
Posté le 28-10-2009 à 17:30:06  profilanswer
 

n°1936101
seniorpapo​u
Posté le 29-10-2009 à 06:53:40  profilanswer
 

Bonjour,
as-tu essayé de mettre err.clear après chaque étiquette suite1: suite2: etc...
??
 
suite1:
err.clear
 
 Cordialement


Message édité par seniorpapou le 29-10-2009 à 06:54:45
n°1936132
vincenth16
Posté le 29-10-2009 à 09:54:37  profilanswer
 

Bonjour,
 
Je viens d'essayer avec Err.clear et ça me fait exactement la même chose...Je ne comprends pas pourquoi cela ne fonctionne pas deux fois de suite...Si l'erreur se passe une fois, il part bien vers le bon suite:
 
Toujours en recherche.

n°1936167
seniorpapo​u
Posté le 29-10-2009 à 12:11:52  profilanswer
 

Bonjour,
je n'ai pas la forme pour faire un classeur test, peux-tu nous en mettre un??
Cordialement

n°1936177
olivthill
Posté le 29-10-2009 à 13:03:49  profilanswer
 

J'ai toujours vu On Error s'employer avec un Resume
Mais ici, il n'y a ni Resume ni Resume next ni Resume etiquette_de_ligne.
Resume sert à mettre fin à la gestion de l'erreur.

n°1936179
olivthill
Posté le 29-10-2009 à 13:12:50  profilanswer
 

Voici une solution qui marche probablement, même s'il y a surement moyen de faire plus simple :

   Sheets("A" ).select  
    Range("A1" ).Select  
    On Error GoTo Err1
    With Range("_FilterDatabase" )  
    Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).SpecialCells(xlCellTypeVisible)  
    With plagefiltrevisible.Areas(1).Rows(1).Select  
    Range(Selection, Selection.End(xlDown)).Select  
    End With  
    End With  
Main_suite:
    Go To Suite4
Err1:  
    Sheets("B" ).select  
    Range("A1" ).Select  
    On Error GoTo Err2
    With Range("_FilterDatabase" )  
    Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).SpecialCells(xlCellTypeVisible)  
    With plagefiltrevisible.Areas(1).Rows(1).Select  
    Range(Selection, Selection.End(xlDown)).Select  
    End With  
    End With  
Err1_fin:
    Resume Main_suite
Err2:  
    Sheets("C" ).select  
    Range("A1" ).Select  
    On Error GoTo Err3  
    With Range("_FilterDatabase" )  
    Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).SpecialCells(xlCellTypeVisible)  
    With plagefiltrevisible.Areas(1).Rows(1).Select  
    Range(Selection, Selection.End(xlDown)).Select  
    End With  
    End With  
Err2_fin:
    Resume Err1_fin
Err3:  
    Sheets("D" ).select  
    Range("A1" ).Select  
    On Error GoTo Err3_fin
    With Range("_FilterDatabase" )  
    Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).SpecialCells(xlCellTypeVisible)  
    With plagefiltrevisible.Areas(1).Rows(1).Select  
    Range(Selection, Selection.End(xlDown)).Select  
    End With  
    End With  
Err3_fin:
    Resume Err2_fin
Suite4:  
End sub  


Message édité par olivthill le 29-10-2009 à 13:14:04
n°1936992
vincenth16
Posté le 02-11-2009 à 11:56:26  profilanswer
 

Bonjour,
 
Merci pour la réponse.
 
Par contre dans tes lignes de code, tu demandes que la macro se termine (Suite4) si il n'y a pas eu d'erreur, alors que au contraire si il n'y a pas eu d'erreur, je veux qu'il continue à chercher les cellules visibles dans les Sheets suivantes.
 
Il faut peut être changer complètement l'écriture, mais le but est le suivant :
 
J'ai 4 onglets, filtrés automatiquement, où il doit normalement y avoir des données visibles que je copie dans un autre classeur, mais il se peut qu'il n'y ai pas de données visibles, ce qui fait planter la macro. Mon but est qu'il zappe l'onglet si il n'y a pas de données visibles et qu'il passe au traitement du suivant...
 
En espérant avoir été clair. Merci d'avance.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Problème avec répétitiion du On error Goto xx

 

Sujets relatifs
probleme liens dreamweaver mozilla[RESOLU] Probleme couleur PC et MAC en HTML!! HELP PLZ :)
Problème avec un textareaProblème d'utilisation de REPLACE
Message d'erreur (math domain error)Problème avec boucle while qui ne s'arrêt pas
[PHP] Include. Problème de mise en place.Problème pour déclencher un input type=file
probleme d'affichage javascriptiso8859-1 > UTF8 probleme avec a accent grave
Plus de sujets relatifs à : Problème avec répétitiion du On error Goto xx


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR