Imbrication de plusieurs macro

Bonjour

je ne sais pas ce que tu fais ?

Regardes la macro du 02 Nov 2014 à 15:00 le End With est en place

En plus le Recherche/Remplace se passe dans la page AM ce qui n'est plus le cas dans ta dernière version

C'est toi qui voit

Tu as raison. J'ai repensé à ce que tu avais remarqué plus tot, concernant le fait que la fonction rechercher/remplacer ne fonctionnait pas si on fermait le classeur sur un autre onglet... Alors j'ai tenté de corrigé comme ceci.

Je vais adapter ce code sur toutes mes fiches en fonction.

est ce que tu notes quelque-choses de particuliers?

Juste une chose : Comment faire pour lui dire d'appliquer la fonction "rechercher remplacer" sur toutes les feuilles du classeur ?

Sub auto_open()
  ' Déprotection automatique de toutes les feuilles d'un classeur
   Dim I As Integer, Nombre As Integer
   Nombre = ActiveWorkbook.Sheets.Count
   Application.ScreenUpdating = False
    For I = 1 To Nombre
    Worksheets(I).Unprotect Password:="test"
  Next I

 'Si on se trouve en S01 alors passe en mode saisie pour le stock
  With Sheets("STOCK")
    If .Range("J1") = "S01" Then
      With .Range("C7:D22,C38:D65")
        .Locked = False
        .FormulaHidden = False
        .ClearContents
      End With
    End If

    'Si on se trouve en S01 alors on  passe en mode saisie pour la fiche AM
  With Sheets("AM")
    If .Range("M1") = "S01" Then
      With .Range("C7:D22,C38:D65")
        .Locked = False
        .FormulaHidden = False
        .ClearContents
      End With
    End If

    'Macro pour (STOCK N-1) via semaine precedente. L ouverture se fait automatiquement sur la page stock afin d'en permettre l'actualisation
   Sheets("STOCK").Activate
     Cells.Replace What:="2015\S01", Replacement:=Sheets("calendrier").Range("G14").Value, LookAt:=xlPart, _
                  SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                  ReplaceFormat:=False

     ' Protection automatique de toutes les feuilles d'un classeur
  Dim Cache As Integer
  Nombre = ActiveWorkbook.Sheets.Count
  Application.ScreenUpdating = False
  For I = 1 To Nombre
    Cache = Sheets(I).Visible
    Sheets(I).Visible = xlSheetVisible
    Worksheets(I).Protect Password:="test"
    Sheets(I).Visible = Cache
  Next I

End With
End With
End Sub

Bonjour

J'attends ta prochaine question ou je réponds

Question posé le 02 Nov 2014 à 12:02

Banzai64 a écrit :

Pourquoi dans cette macro tu ne fais pas e remplacement dans toutes les feuilles l ?

Réponse donnée le 02 Nov 2014 à 14:08

Kev a écrit :

+++ parceque les cellules a vider se trouvent sur la feuille "AM"

Kev a écrit :

Juste une chose : Comment faire pour lui dire d'appliquer la fonction "rechercher remplacer" sur toutes les feuilles du classeur ?

Sur la base de ta dernière macro

Sub auto_open()
' Déprotection automatique de toutes les feuilles d'un classeur
Dim I As Integer, Nombre As Integer
Dim Cache As Integer

  Nombre = ActiveWorkbook.Sheets.Count

  Application.ScreenUpdating = False
  For I = 1 To Nombre
    Worksheets(I).Unprotect Password:="test"
  Next I

  'Si on se trouve en S01 alors passe en mode saisie pour le stock
  With Sheets("STOCK")
    If .Range("J1") = "S01" Then
      With .Range("C7:D22,C38:D65")
        .Locked = False
        .FormulaHidden = False
        .ClearContents
      End With
    End If
  End With

  'Si on se trouve en S01 alors on  passe en mode saisie pour la fiche AM
  With Sheets("AM")
    If .Range("M1") = "S01" Then
      With .Range("C7:D22,C38:D65")
        .Locked = False
        .FormulaHidden = False
        .ClearContents
      End With
    End If
  End With

  'Macro pour (STOCK N-1) via semaine precedente. L ouverture se fait automatiquement sur la page stock afin d'en permettre l'actualisation
  For I = 1 To Nombre
    Sheets(I).Cells.Replace What:="2015\S01", Replacement:=Sheets("calendrier").Range("G14").Value, LookAt:=xlPart, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
  Next I

  ' Protection automatique de toutes les feuilles d'un classeur
  For I = 1 To Nombre
    Cache = Sheets(I).Visible
    Sheets(I).Visible = xlSheetVisible
    Worksheets(I).Protect Password:="test"
    Sheets(I).Visible = Cache
  Next I

End Sub

Nickel ça marche !

Bon allez je te laisse tranquille promis maintenant, j'ai juste celle-ci a modifier.

    'Si on se trouve en S01 alors on deverouille et supprime les liens pour stock individuels des agents
With Sheets(Array("A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15"))
    If .Range("M1") = "S01" Then
      With .Range("C178:D193")
        .Locked = False
        .FormulaHidden = False
        .ClearContents
      End With
    End If

Normalement grâce à toi, je me suis rendu compte qu'effectivement dans certains cas il faut que les macros fonctionnent sur plusieurs onglets

Bonsoir

As tu essayé ta macro ?

Je pense que la bonne syntaxe c'est

Dim Ws As Worksheet
   'Si on se trouve en S01 alors on deverouille et supprime les liens pour stock individuels des agents
  For Each Ws In Sheets(Array("A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15"))
    If Ws.Range("M1") = "S01" Then
      With Ws.Range("C178:D193")
        .Locked = False
        .FormulaHidden = False
        .ClearContents
      End With
    End If
  Next Ws

AH AH c'est excellent, ca fonctionne !!! T'es un chef !!!

Voici la finalité, elle m'a donné du fil a retordre mais ca y est, elle fonctionne (encore quelques tests à opérer histoire d'en être certain :

Sub auto_open()

' Déprotection automatique de toutes les feuilles d'un classeur (a modifier selon le password de la feuille)
   Dim I As Integer, Nombre As Integer
   Nombre = ActiveWorkbook.Sheets.Count
   Application.ScreenUpdating = False
    For I = 1 To Nombre
    Worksheets(I).Unprotect Password:="test"
  Next I

'Si on se trouve en S01 alors on passe en mode saisie pour les stocks de l'onglet STOCK (a adapter selon le classeur)
  With Sheets("STOCK")
    If .Range("M1") = "S01" Then
      With .Range("C7:D22,L7:M22,C65:D68")
        .Locked = False
        .FormulaHidden = False
        .ClearContents
      End With
    End If

 'Si on se trouve en S01 alors on deverouille et supprime les liens pour stock individuels des agents
Dim Ws As Worksheet
For Each Ws In Sheets(Array("A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15"))
    If Ws.Range("M1") = "S01" Then
      With Ws.Range("C178:D193")
        .Locked = False
        .FormulaHidden = False
        .ClearContents
      End With
    End If
  Next Ws

'Macro pour (PRODUCTION) de la semaine en cours via semaine actuelle
   Sheets("STOCK").Activate
   Cells.Replace What:="2015\S02", Replacement:=Sheets("calendrier").Range("G20").Value, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

'Macro pour (STOCK N-1) via semaine precedente. Si en S01 alors cette macro ne sera pas appliquee. (a adapter selon le classeur)
If Range("M1") <> "S01" Then
   Cells.Replace What:="2015\S01", Replacement:=Sheets("calendrier").Range("G14").Value, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End If

'Protection automatique de toutes les feuilles d'un classeur (a modifier selon le password de la feuille)
  Dim Cache As Integer
  Nombre = ActiveWorkbook.Sheets.Count
  Application.ScreenUpdating = False
  For I = 1 To Nombre
    Cache = Sheets(I).Visible
    Sheets(I).Visible = xlSheetVisible
    Worksheets(I).Protect Password:="test"
    Sheets(I).Visible = Cache
  Next I

End With
End Sub

Bon celle-ci est une fiche particuliere qui cumule sur la fiche stock, le stock -1 et la production courante, avec également le stock individuel par agent dont il faut faire un clean.

Sans toi, rien n'aurait été possible, je ne sais pas comment te remercier à par en te remerciant infiniment !

Bon, apres 2 jours de boulot intensifs, j'ai jonglé avec tout le travail par Banzai64, tout est nickel !!!

Un vrai bonheur et un soulagement incroyable !!!!

Merci encore !!

Rechercher des sujets similaires à "imbrication macro"