Bonjour à vous,
J'ai un classeur Excel contenant une cinquantaine de feuilles, sur lesquels je dois effectuer les mêmes opérations à chaque mise à jour, j'ai donc découvert les macros ! Le soucis est que le macro ne s'applique qu'à la feuille active. En cherchant un peu j'ai trouvé des solutions utilisant des lignes de code, mais le soucis est que je ne maîtrise pas du tout ce langage.
Je pense que la problème vient du fait que j'ai utiliser l'enregistrement de macro au lieu de codé directement, dans le code résultant de l'enregistrement, je vois apparaître les noms des personnes sur lesquels j'ai demandé d'appliquer le traitement et vu que les noms ne sont pas les mêmes sur toutes les feuilles, forcément y a un moment où ça va coincer.
Malheureusement, je ne peux pas vous mettre le fichier en PJ car il contient des données personelles, mais voici comment il est structuré :
- 44 feuilles contenant les informations à traiter
- 11 colonnes par tableau : N° Clé - Nom - Colonne 1 - Prénom - colonne 2 - Intensité - Seuil - S. Alerte - Date - Heure - Service (tous les tableaux ont exactement la même structure)
- Chaque tableau s'appel : "Machine_XX", allant de 01 à 44
- Le nombre de ligne varie
- La colonne "Service" peut prendre 4 valeurs différentes : "TS" - "Expédition" - "Réception" - "SF Colis", chaque feuille n'est affecté qu'à un seul service (toutes les lignes du tableau Machine_10 ont pour valeur "Expédition" dans la colonne "Service")
Et voici le traitement que j'aimerais réaliser :
- Supprimer les doublons absolu (qui ont exactement les mêmes informations dans toutes les colonnes du tableau)
- Supprimer (ou filtrer) toutes les lignes ayant une "Intensité" inférieure strictement à 7
- Supprimer (ou filtrer) les lignes ayant pour "Nom" : "INCONNU"
Et le top du top serait de copier l'intégralité des tableaux et de les coller dans la feuille récapitulatif de leur service
Un exemple pour que ce soit plus claire : copier l'intégralité du tableau "Machine_10" qui a pour service "Expédition" et le coller dans la feuille "Analyse Expédition" et idem avec les autres tableau et les autres services.
Voilà, voilà, j'espère que j'ai été assez claire, sinon n'hésitez pas s'il faut d'autres informations.
Ca me soulagera d'une tâche relativement fastidieuse ! Réaliser 4 tâches, aussi minimes soient elles, sur 44 feuilles, c'est très long et lourd à faire Sachant en plus qu'il doit exister un moyen de tous réaliser en appuyant simplement sur un petit bouton.
Merci d'avance à tous ceux qui m'aideront
Et meilleurs vœux à tous pour cette année 2015 !
Voici le code résultant de l'enregistrement de ma macro :
Et voici le code que j'ai essayé, en vain, d'appliquer pour que cela s'applique sur toutes mes feuilles :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Sub Traitement() ' ' Traitement Macro ' Dim ws As Worksheet Range("A2").Select ActiveSheet.Range("$A$1:$K$281").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, _ 7, 8, 9, 10, 11), Header:=xlYes ActiveSheet.ListObjects("Machine_10").Range.AutoFilter Field:=6, Criteria1:= _ ">=7", Operator:=xlAnd ActiveWorkbook.Worksheets("10 - EXP").ListObjects("Machine_10").Sort.SortFields. _ Clear ActiveWorkbook.Worksheets("10 - EXP").ListObjects("Machine_10").Sort.SortFields. _ Add Key:=Range("B1:B95"), SortOn:=xlSortOnValues, Order:=xlAscending, _ DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("10 - EXP").ListObjects("Machine_10").Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ActiveSheet.ListObjects("Machine_10").Range.AutoFilter Field:=2, Criteria1:= _ Array("DUCHMOL", "MACHIN", "TRUC", "BIDULE"), _ Operator:=xlFilterValues End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Sub Traitement() [...] Dim ws As Worksheet Application.ScreenUpdating = False For Each ws In ActiveWorkbook.Worksheets [...] Next End Sub
Partager