Gestion des feuilles excel

freshyback Messages postés 34 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 16 mars 2008 - 6 mars 2008 à 10:44
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 6 mars 2008 à 12:20
Bonjour,

Je cherche à mettre en place une macro qui va gérer les noms de feuilles
En gros, j'ai par exemple les feuille "toto" et "titi" qui existe dans mon classeur et qui sont referencé dans la colonne B2 de la feuille "paramètres"
Si on supprime "toto" ou "titi" ou les deux j'amerais supprimer egalement "toto" et/ou "titi" de ma liste dans la feuilles "paramètres"

voici mon code
Mais il ne le gère pas vraiment :

Sub MonTest()
  
Dim ws As Worksheet
Sheets("Paramètres").Activate
Range("B2").Select

    Set Plage = Range("B2:B26")
        For Each Cellule In Plage
        If Cellule.Value = "" Then
   For Each ws In Worksheets
        If ws.Name = Cellule.Value Then
        Cellule.Value.Delete
            Exit For
        End If
        Next ws
        End If
    Next Cellule
End Sub

Quelqu'un pour m'aider?
Merci

8 réponses

NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
6 mars 2008 à 10:58
Bonjour

Je te propose 2 versions :

Private Function TestExistanceVersion Erreur(byval pSheetName as String) as boolean
On Local Error Goto Err_TestExistanceVersion Erreur
    dim lObj as object
    set lObj=Sheets(pSheetName)
    TestExistanceVersion Erreur=True
Exit Function
Err_TestExistanceVersion Erreur:
    Err.Clear
    On error goto 0
    TestExistanceVersion Erreur=False

End function

Private Function TestExistanceVersionBoucle(byval pSheetName as String) as boolean
    Dim lObj as Object
    For Each lObj in Sheets
       If lObj.Name=pSheetName Then
          TestExistanceVersionBoucle=True
          Exit function
       End if
    Next
    TestExistanceVersionBoucle=False
End function

Ensuite pour faire ton test :
Sub MonTest()
    Dim ws As Worksheet
    Sheets("Paramètres").Activate
    Range("B2").Select
    Set Plage = Range("B2:B26")
    For Each Cellule In Plage
        If Cellule.Value = "" Then
          If TestExistance*(Cellule.Value)=False Then '=False peut être remplacé par l'opératuer Not
            Cellule.Value.Delete
        End If
        End If
    Next Cellule
End Sub

Je pense que c'est tout bon, je reste à l'écoute.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
freshyback Messages postés 34 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 16 mars 2008
6 mars 2008 à 11:09
Merci Nico,

Mais lorsque j'exécute le module
J'ai une erreur 424
dans sub Montest()

la ligne

cellule.value.delete ????

Est ce normal?
0
Firelion Messages postés 27 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 29 avril 2008
6 mars 2008 à 11:13
Moi j'avais fait ça :

Set Plage = Range("B2:B26")
For Each Cellule In Plage
    Marqueur = 0
    For Each Worksheet In Worksheets
        If Cellule.Value = Worksheet.Name Then
            Marqueur = 1
        End If
    Next Worksheet
    If Marqueur = 0 Then
        Cellule.Value = ""
    End If
Next Cellule
0
freshyback Messages postés 34 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 16 mars 2008
6 mars 2008 à 11:21
En fait je viens de contater une erreur

Sub MonTest()
    Dim ws As Worksheet
    Sheets("Paramètres").Activate
    Range("B2").Select
    Set Plage = Range("B2:B26")
    For Each Cellule In Plage
        If Cellule.Value <> "" Then
          If Not TestExistance * (Cellule.Value) Then  '=False peut être remplacé par l'opératuer Not
            Cellule.Value.Delete
        End If
        End If
    Next Cellule
End Sub

il faut que la cellule soit non vide

  If Cellule.Value <> "" Then

donc on doit tester si la feuille titi n'existe plus et que son nom apparait dans la liste on supprime le nom
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
freshyback Messages postés 34 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 16 mars 2008
6 mars 2008 à 11:25
A priori ton code marche Firelion

Merci c'et résolu ;-)
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
6 mars 2008 à 12:04
Bonjour

Note :
TestExistance*
Signifie que c'est là qu'il faut utiliser une fonction proposée, le "*" doit être remplacé par "VersionBoucle" ou "VersionErreur".

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
freshyback Messages postés 34 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 16 mars 2008
6 mars 2008 à 12:08
je l'ai fait et çà marche
thx
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 mars 2008 à 12:20
salut,
pense au bouton "réponse acceptée" sur la ou les réponses qui ont résolu ton problème

ps : attention à la rubrique, ici en VB6? pas VBA normalement?!!!

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Rejoignez-nous