Microsoft 365 Utiliser la même macro dans des feuilles différentes

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Perceval973

XLDnaute Nouveau
Bonjour à tous

J'ai un classeur qui contient des feuilles lundi, mardi, mercredi, jeudi, vendredi
Ces feuilles sont alimentées par mes opérateurs
Chaque jour (J) je fais des analyses sur J-1 et j'ai besoin de dérouler une macro qui fait du nettoyage et du tri
Mercredi dernier j'ai créé une macro grâce a la fonction "Enregistrer une macro". Cette macro est enregistrée dans "Personnal.XLSB"
Mon problème est que si je lance la macro sur la feuille mercredi, je peux ensuite l'utiliser dans n'importe quelle feuille.
En revanche si je commence par lancer la macro dans une autre feuille que mercredi elle plante

Merci pour votre aide
Perceval
 
Solution
Nous avons tous étaient novices. Sans fichier, difficile de t'aider. Tu pourrais monter un fichier avec des données bidons.

Cependant, tu nous ceci:

Mais ensuite, tu dis:

Alors cette feuille se nomme "mercredi" ou "Mercredi L1"

Ce que tu n'as pas compris, est de nous expliquez ce tu veux faire. En lisant, le code généré par l'enregistreur de ma macro. on n'arrive plus à suivre. Par exemple cette ligne de code: ActiveWindow.SmallScroll Down:=223 , tu es arrivé où vers le bas (tu as ciblé quoi?).

edit: quand tu seras prêt à nous aider pour t'aider. Reviens
Voici une macro qui fonctionne (pour ceux qui viendront par la suite...)


Sub Nettoyage_Synthese_Lx_MFC()
With ActiveSheet
If .Name Like "* L#" Then...
Ce sont les mêmes codes, mais je cherche aussi à avancer par moi même
Phil a raison, le code ne fonctionnera pas.
Je comprends que tu veuilles avancer. Le forum est dédié à l'entraide.
Nous essayons de t'aider, c'est pour cela que je t'ai demande de nous expliquer ce que tu veux faire.

Ces 2 lignes montrent que tu fusionnes les cellules avant même de démarrer l'enregistreur de macro. Du coup, on se sait pas quelles cellules tu as fusionnées.
VB:
Cells.Select
Selection.UnMerge
 
Phil a raison, le code ne fonctionnera pas.
Je comprends que tu veuilles avancer. Le forum est dédié à l'entraide.
Nous essayons de t'aider, c'est pour cela que je t'ai demande de nous expliquer ce que tu veux faire.

Ces 2 lignes montrent que tu fusionnes les cellules avant même de démarrer l'enregistreur de macro. Du coup, on se sait pas quelles cellules tu as fusionnées.
VB:
Cells.Select
Selection.UnMerge
Non je ne les fusionne pas, je sélectionne toute la feuille et je rompt toutes les fusions
Comme je l'ai dit a un moment, je récupère un classeur existant, je ne suis pas maitre de ce que les autres ont fait avant moi
J'essaie au mieux de nettoyer la feuille que j'ai a traiter
 
Non je ne les fusionne pas, je sélectionne toute la feuille et je rompt toutes les fusions
Comme je l'ai dit a un moment, je récupère un classeur existant, je ne suis pas maitre de ce que les autres ont fait avant moi
J'essaie au mieux de nettoyer la feuille que j'ai a traiter
Désolé, je voulais dire défusionner. On ne sait pas quelles sont les cellules défusionnées.
 
@Perceval973

Comme @cathodique, j'ai beau regardé tes 2 codes que tu as fourni je ne comprends pas ce que tu veux faire cela par dans toutes les directions et on ne comprends rien à ton code ni à ce que tu veux faire .

En l'état je suis incapable de t'aider faute de vision et de compréhension de ce que tu cherches à faire.

Peut être une traduction en français de ce que tu veux faire mais il faut quelle soit bien détaillée
Exemple
Je veux faire ceci sur les cellules X ou Y
Ensuite cela sur les cellules Z etc........
 
Dernière édition:
@Perceval973

Comme @cathodique, j'ai beau regardé tes 2 codes que tu as fourni je ne comprends pas ce que tu veux faire cela par dans toutes les directions et on ne comprends rien à ton code ni à ce que tu veux faire .

En l'état je suis incapable de t'aider faute de vision et de compréhension de ce que tu cherches à faire.

Peut être une traduction en français de ce que tu veux faire mais il faut quelle soit bien détaillée
Exemple
Je veux faire ceci sur les cellules X ou Y
Ensuite cela sur les cellules Z etc........
Ce qu'il n'a pas compris. C'est de décrire les différentes étapes lors de l'enregistrement de sa macro.
 
Bonjour le fil

[Pour infos]
Est-ce que ce qui ne génère pas d'erreur dans l'éditeur VBE fonctionne pour autant ?
Chez moi, cette macro "fonctionne"
Code:
Sub Test()
Application.ScreenUpdating = Faux
End Sub
Fonctionne dans le sens, où mon Excel ne bronche pas 😉
 
Bonjour le forum;

Bah s'il n'y a pas Option Explicit en haut cette instruction fonctionne car la variable Faux est considérée par défaut comme Variant et initialisée à Empty donc à 0 ou False.

S'il y a Option Explicit il y a bug car Faux n'est pas déclarée.

A+
Voila, j'ai corrigé ma macro...

Sub Nettoyage_Synthese_Mercredi_L1()
'
' Nettoyage_Synthese Macro_Mercredi_L1
'
Range("A1").Select
Application.ScreenUpdating = False
Cells.Select
Selection.UnMerge
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Cells.Select
Selection.EntireColumn.Hidden = False
Range("A:A,C:C,E:E,F:F,G:G,H:H,I:I,K:K,L:L,M:M,N:N,O:O,P😛,Q:Q,R:R,S:S,T:T"). _
Select
Range("T1").Activate
Selection.Delete Shift:=xlToLeft
Columns("A:A").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$A$414").AutoFilter Field:=1, Criteria1:="=Poste", _
Operator:=xlOr, Criteria2:="="
ActiveWindow.SmallScroll Down:=223
Cells.Select
Selection.Delete Shift:=xlUp
ActiveWorkbook.Worksheets("Mercredi L1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Mercredi L1").Sort.SortFields.Add2 Key:=Range( _
"A1:A414"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Mercredi L1").Sort
.SetRange Range("A1:U414")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Columns("A:A").Select
Selection.FormatConditions.AddUniqueValues
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).DupeUnique = xlDuplicate
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Columns("C:C").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="=29"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("A1").Select
Dim s As Shape
For Each s In ActiveSheet.Shapes
s.Delete
Next
Application.ScreenUpdating = True
End Sub
 
Voila, j'ai corrigé ma macro...

Sub Nettoyage_Synthese_Mercredi_L1()
'
' Nettoyage_Synthese Macro_Mercredi_L1
'
Range("A1").Select
Application.ScreenUpdating = False
Cells.Select
Selection.UnMerge
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Cells.Select
Selection.EntireColumn.Hidden = False
Range("A:A,C:C,E:E,F:F,G:G,H:H,I:I,K:K,L:L,M:M,N:N,O:O,P😛,Q:Q,R:R,S:S,T:T"). _
Select
Range("T1").Activate
Selection.Delete Shift:=xlToLeft
Columns("A:A").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$A$414").AutoFilter Field:=1, Criteria1:="=Poste", _
Operator:=xlOr, Criteria2:="="
ActiveWindow.SmallScroll Down:=223
Cells.Select
Selection.Delete Shift:=xlUp
ActiveWorkbook.Worksheets("Mercredi L1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Mercredi L1").Sort.SortFields.Add2 Key:=Range( _
"A1:A414"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Mercredi L1").Sort
.SetRange Range("A1:U414")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Columns("A:A").Select
Selection.FormatConditions.AddUniqueValues
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).DupeUnique = xlDuplicate
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Columns("C:C").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="=29"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("A1").Select
Dim s As Shape
For Each s In ActiveSheet.Shapes
s.Delete
Next
Application.ScreenUpdating = True
End Sub
C'est ça ton explication???
 
C'est ça ton explication???
Bon ! Avec vos sarcasmes j'ai complètement perdu le fil...
Est-ce qu'on pourrait recommencer sur de nouvelles bases ?

Je n'ai jamais reçu de formation ni sur Excel ni en VBA, j'ai tout appris seul en consultant des sources internet
La dernière fois que j'ai eu a faire des macros dans le cadre professionnel c'était en 2003 (j'ai 59 ans et à la base je suis mécanicien)
Auriez-vous l'amabilité de m'aider ?

J'ai essayé de reformuler ma demande... J'espère que cette fois j'ai été assez clair et que j'ai respecté la charte du forum...
Je recommence donc au post suivant 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour