Code macro à modifier

gourdin

XLDnaute Impliqué
Bonjour,

Voici la macro qui fonctionne mais que je souhaite un peu complexifier (cf. texte sous le code macro) :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Value = "GO" Then
Dim NomFeuille As String, Test As Boolean, Ws As Worksheet
NomFeuille = "mafeuille"
For Each Ws In Worksheets
If Ws.Name = NomFeuille Then Test = True: Exit For
Next Ws
If Test Then
Sheets(NomFeuille).Select
Else
Sheets("modele_feuille").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = NomFeuille
End If
End If
End Sub

Actuellement cette macro réalise les actions suivantes quand on clic sur la cellule avec la valeur "GO" :
- Selectionne la feuille nommée "mafeuille" si elle existe dans le fichier
- Copie la feuille "modele_feuille" et la nomme "mafeuille" si "mafeuille" n'existe pas.

Je souhaite ajouter des conditions à cette macro à savoir :
- Supprime la feuille nommée "mafeuille" si elle existe et si dans la cellule A1 de "mafeuille" il y a la valeur 10
- Selectionne la feuille nommée "mafeuille" si elle existe et si dans la cellule A1 de cette feuille il n'y a pas la valeur 10
- Copie la feuille "modele_feuille" et la nomme "mafeuille" si "mafeuille" n'existe pas.

Je ne suis pas certain d'avoir été clair > Voir fichier joint si nécessaire

Merci
 

Pièces jointes

  • Classeur1.xls
    39.5 KB · Affichages: 33

Papou-net

XLDnaute Barbatruc
Re : Code macro à modifier

Bonsoir gourdin,

Essaie comme ceci:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub

If Target.Value = "GO" Then
  Dim NomFeuille As String, Test As Boolean, Ws As Worksheet
  NomFeuille = "mafeuille"
  For Each Ws In Worksheets
    If Ws.Name = NomFeuille Then Test = True: Exit For
  Next Ws
  If Test Then
    If Sheets(NomFeuille).Range("A1") = 10 Then
      Application.DisplayAlerts = False
      Sheets(NomFeuille).Delete
      Application.DisplayAlerts = True
      Else
      Sheets(NomFeuille).Select
      Exit Sub
    End If
    Else
    Sheets("modele_feuille").Copy After:=Sheets(Sheets.Count)
    ActiveSheet.Name = NomFeuille
  End If
End If
End Sub
Bonne soirée.

Cordialement.
 

Statistiques des forums

Discussions
312 584
Messages
2 089 976
Membres
104 321
dernier inscrit
tesre