freshyback
Messages postés34Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention16 mars 2008
-
6 mars 2008 à 10:44
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDerniè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
NHenry
Messages postés15114Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 4 mai 2024159 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
Firelion
Messages postés27Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention29 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
freshyback
Messages postés34Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention16 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
NHenry
Messages postés15114Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 4 mai 2024159 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