Problème avec répétitiion du On error Goto xx - VB/VBA/VBS - Programmation
Marsh Posté le 29-10-2009 à 06:53:40
Bonjour,
as-tu essayé de mettre err.clear après chaque étiquette suite1: suite2: etc...
??
suite1:
err.clear
Cordialement
Marsh Posté le 29-10-2009 à 09:54:37
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.
Marsh Posté le 29-10-2009 à 12:11:52
Bonjour,
je n'ai pas la forme pour faire un classeur test, peux-tu nous en mettre un??
Cordialement
Marsh Posté le 29-10-2009 à 13:03:49
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.
Marsh Posté le 29-10-2009 à 13:12:50
Voici une solution qui marche probablement, même s'il y a surement moyen de faire plus simple :
Sheets("A" ).select |
Marsh Posté le 02-11-2009 à 11:56:26
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.
Marsh Posté le 28-10-2009 à 17:30:06
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 !