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 SubBonjour
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 SubNickel ç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 IfNormalement 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 WsAH 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 SubBon 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 !!