Supprimer les feuilles qui ne répondent pas à un critère avec VBA

Romao

XLDnaute Nouveau
Bonjour à tous,

J'écris parce que je me retrouve un peu bloqué... J'explique :

Dans le fichier en pièce jointe, j'ai un onglet "Arbo" qui donne une image de mon arborescence. A chaque élément de cette arborescence correspond un onglet (vide dans le fichier car sans intérêt ici). Je n'ai besoin de garder que les niveau les plus bas de mon arborescence (marqués en colonne F de l'onglet "Arbo" par un "I", "N" étant les non imputables).

Pour ce faire, je veux monter un petit programme qui me supprimera les onglets non imputables pour me garder seulement les niveaux les plus bas. J'ai donc fait la macro jointe au fichier mais elle semble tourner dans le vide... J'ai l'impression qu'elle fait des boucles et des boucles mais je n'arrive pas à modéliser parfaitement ce que je veux lui faire faire.

Dans l'idée, ma macro prend le nom d'un onglet et le test dans l'onglet "arbo" pour savoir s'il est imputable ou pas. Mais me voici paumé... Je vous demande donc de l'aide, en espérant avoir été assez clair dans mon explication.

Par avance, merci,

Romao
 

Pièces jointes

  • test imputation.xlsm
    19.1 KB · Affichages: 62
  • test imputation.xlsm
    19.1 KB · Affichages: 63
  • test imputation.xlsm
    19.1 KB · Affichages: 60

Romao

XLDnaute Nouveau
Re : Supprimer les feuilles qui ne répondent pas à un critère avec VBA

Bonsoir à tous :)

Personne n'a de solution ? Je reste bloqué... J'essaie de changer l'ordre des boucles mais jusqu'ici c'est sans résultat. Je pense aussi que si je pouvais conserver dans des variables types "Ai" mes lignes imputables, je pourrais arriver à quelque chose de plus simple et certainement plus rapide mais... je ne sais pas comment faire :s

Help
 

Romao

XLDnaute Nouveau
Re : Supprimer les feuilles qui ne répondent pas à un critère avec VBA

Bonjour à tous,

J'ai finalement réussi à trouver une solution à mon problème d'une façon assez simple.

voici mon code :

Code:
Sub test2()

Dim name As String
Dim test As String
Dim R As Variant
Dim Ws As Worksheet

ThisWorkbook.RefreshAll
Sheets(1).Activate
name = ActiveSheet.name
ActiveSheet.Next.Activate

For Each Ws In Sheets
Cells(1, 1).Value = ActiveSheet.name
test = Cells(1, 1).Value

R = Application.VLookup(test, Sheets(name).Range("G3:G100"), 1, False)
    If Not IsError(R) Then
    ActiveSheet.Next.Activate
    Else
    Application.CutCopyMode = False
    ActiveWindow.SelectedSheets.Delete
    End If
Next Ws

Sheets(1).Activate
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.Delete

End Sub

Il me reste une question : comment puis-je faire pour ne pas avoir à confirmer chaque suppression de feuille ?

Par avance, merci :)
 

Pièces jointes

  • test imputation.xlsm
    19.6 KB · Affichages: 83
  • test imputation.xlsm
    19.6 KB · Affichages: 88
  • test imputation.xlsm
    19.6 KB · Affichages: 86

Orodreth

XLDnaute Impliqué
Re : Supprimer les feuilles qui ne répondent pas à un critère avec VBA

Bonjour,

Je viens juste de voir ton poste.

Une réponse rapide pour t'aider:
Code:
Application.DisplayAlerts = False 'Supprime les alertes utilisateurs
...
Application.DisplayAlerts = True 'Remet les alertes utilisateurs

Pas habitué à la version 2007, mais le code doit être le même, ou très approchant.

Attention toutefois. S'il y a ne serait-ce qu'une seule erreur dans ton code entre les deux lignes, tu vas te supprimer les alertes complétement, ce qui peut être gênant.
Le mieux est de simplement encadrer ta ligne de suppression par ces deux lignes, et pense à la gestion d'erreurs aussi.

EDIT: bon bah Pierrot93 a répondu avant moi, mes souvenirs sur le DisplayAlerts étaient donc corrects.

Cordialement,
Thomas
 

Romao

XLDnaute Nouveau
Re : Supprimer les feuilles qui ne répondent pas à un critère avec VBA

Bonjour à vous deux :)

Merci pour vos réponses. J'ai effectivement encadré les lignes concernées pour éviter les suppressions, même si, dans mon fichier, les tests sont déjà effectués pour savoir si la suppression doit être faite ou pas.

Un grand merci :)
 

Discussions similaires

Réponses
18
Affichages
637

Statistiques des forums

Discussions
312 497
Messages
2 088 994
Membres
104 000
dernier inscrit
dinelcia