Conflit avec deux Macros

Mister Binaire

XLDnaute Occasionnel
Bonsoir le Forum,

J'ai une première macro qui me permet de faire du nettoyage dans une zone spécifique de chaque onglet.
Le problème c'est que j'ai ma seconde macro sur chaque feuille qui me demande de rentrer des valeurs clés dans la zone qui va être nettoyée.

Lors du lancement du RAZ le MsgBox "Attention, vous n'avez pas rentré de Spécifications" apparaît autant de fois qu'il y a d'onglet à nettoyer.

Merci de m'aider pour essayer d'éviter ce conflit.. (Macro ci-dessous)

PREMIÈRE MACRO :

Sub RAZ()
Dim O As Object 'déclare la variable O (Onglets)

Réponse = MsgBox("Cette Action effacera toutes les données de votre fichier (Data + Stats). Voulez vous continuer ?", vbYesNo)
If Réponse = vbNo Then
Exit Sub
Else
For Each O In Sheets 'boucle sur tous les onglets O du classeur
Select Case O.Name 'agit en fonction du nom de l'onglet O
'cas "Sommaire", "Formulaire Demande", "Formulaire Process" et "Master Data", rien ne se passe
Case "Sommaire", "Formulaire Demande", "Formulaire Process", "Master Data"
Case Else 'tous les autres cas
O.Range("A2:D170, E2:G2").ClearContents
End Select 'fin de la condition
Next O 'prochain onglet de la boucle
End If

End Sub

SECONDE MACRO :

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Columns(4), Target) Is Nothing Then
If Application.CountA(Range("F2:G2")) = 0 Then
On Error GoTo fin
Application.EnableEvents = False
Target.ClearContents
MsgBox "Attention, vous n'avez pas rentré de Spécifications"
End If
End If
fin:
Application.EnableEvents = True
End Sub
 

camarchepas

XLDnaute Barbatruc
Re : Conflit avec deux Macros

Comme ceci peut être

Code:
PREMIÈRE MACRO :

Sub RAZ()
Dim O As Object 'déclare la variable O (Onglets)
Application.EnableEvents = False
Réponse = MsgBox("Cette Action effacera toutes les données de votre fichier (Data + Stats). Voulez vous continuer ?", vbYesNo)
If Réponse = vbNo Then
Exit Sub
Else
For Each O In Sheets 'boucle sur tous les onglets O du classeur
Select Case O.Name 'agit en fonction du nom de l'onglet O
'cas "Sommaire", "Formulaire Demande", "Formulaire Process" et "Master Data", rien ne se passe
Case "Sommaire", "Formulaire Demande", "Formulaire Process", "Master Data"
Case Else 'tous les autres cas
O.Range("A2170, E2:G2").ClearContents
End Select 'fin de la condition
Next O 'prochain onglet de la boucle
End If
Application.EnableEvents = True
End Sub

SECONDE MACRO :

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Columns(4), Target) Is Nothing Then
If Application.CountA(Range("F2:G2")) = 0 Then
On Error GoTo fin
Application.EnableEvents = False
Target.ClearContents
MsgBox "Attention, vous n'avez pas rentré de Spécifications"
End If
End If
fin:
Application.EnableEvents = True
End Sub
 

Mister Binaire

XLDnaute Occasionnel
Re : Conflit avec deux Macros

Merci camarche pas tu es vraiment mon sauveur en ce moment comme d'habitude cela marche à merveille.

J'ai encore une faveur à te demander :

Comme tu as pu le voir dans la macro, j'ai exclu trois onglets de la boucle de nettoyage :Case "Sommaire", "Formulaire Demande", "Formulaire Process", "Master Data" Je voudrais remettre l'onglet "Sommaire","Formulaire Process", "Master Data" dans la boucle mais les champs du RAZ seront différents pour ces trois là : chacun des trois aura un range différent.
Peux-tu m'aider stp ?

Te remerciant par avance..
 

camarchepas

XLDnaute Barbatruc
Re : Conflit avec deux Macros

Bonjour ,

Et voilà , il te rste à régler les range s pour chacun des case


Code:
Sub RAZ()
Dim O As Object 'déclare la variable O (Onglets)
Application.EnableEvents = False
Réponse = MsgBox("Cette Action effacera toutes les données de votre fichier (Data + Stats). Voulez vous continuer ?", vbYesNo)

If Réponse <> vbNo Then
  For Each O In Sheets 'boucle sur tous les onglets O du classeur
    Select Case O.Name 'agit en fonction du nom de l'onglet O
      'cas "Sommaire"
       Case "Sommaire": O.Range("A2170, E2:G2").ClearContents
      'Formulaire Demande
       Case "Formulaire Demande": O.Range("A2170, E2:G2").ClearContents
      'Formulaire Process
       Case "Formulaire Process": O.Range("A2170, E2:G2").ClearContents
      'Master Data
       Case "Master Data": O.Range("A2170, E2:G2").ClearContents
      'Autres cas
       Case Else:   O.Range("A2170, E2:G2").ClearContents
    End Select 'fin de la condition
  Next O 'prochain onglet de la boucle
End If
Application.EnableEvents = True
End Sub
 

Discussions similaires

Réponses
4
Affichages
422

Statistiques des forums

Discussions
314 665
Messages
2 111 686
Membres
111 259
dernier inscrit
Seb15