A voir également:
- Macro pour un seul classeur
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Imprimer un classeur excel sur mac - Guide
- Macro word - Guide
3 réponses
Je ne pensais pas qu'il était nécessaire de voir mon code...
Sub synthese() Dim Wb As Workbook Dim Ws As Worksheet Dim Cellule As Range Dim Nbligne As Integer Dim Tab1() As String Dim test As String Dim test1 As String Dim I As Integer Application.ScreenUpdating = False x = 0 ReDim Tab1(10, x) 'Défiltrer tous les onglets On Error Resume Next For Each sh In Sheets sh.ShowAllData Next sh Windows("Master SuiviIP ARA vdef.xlsm").Activate For Each Ws In ThisWorkbook If Ws.Name <> "admin" And Ws.Name <> "Synthèse OC" And Ws.Name <> "Synthèse" And Ws.Name <> "Template" Then Ws.Activate Range("B3").Select Range(Selection, Selection.End(xlDown)).Select Nbligne = Selection.Rows.Count Range("N3", "N" & Nbligne + 3).Select For Each Cellule In Selection If Cellule.Value = ActiveSheet.Name Then x = x + 1 ReDim Preserve Tab1(10, x) Tab1(1, x) = Cellule.Offset(0, -12) 'DA Tab1(2, x) = Cellule.Offset(0, -9) 'MNG Tab1(3, x) = Cellule.Offset(0, -11) 'Consultant Tab1(4, x) = Cellule.Offset(0, -5) 'Client Tab1(5, x) = Cellule.Value 'Semaine démarrage Tab1(6, x) = Cellule.Offset(0, 1) 'OC Tab1(7, x) = Cellule.Offset(0, 6) 'Embauche Tab1(8, x) = Cellule.Offset(0, 7) 'type embauche Tab1(9, x) = Cellule.Offset(0, 9) 'Semaine sortie Tab1(10, x) = Cellule.Offset(0, 10) 'Cause sortie End If Next Cellule End If Next Ws Worksheets("Synthèse").Activate J = 0 For I = x To 0 Step -1 J = J + 1 Cells(2 + J, 2) = Tab1(1, I) Cells(2 + J, 3) = Tab1(2, I) Cells(2 + J, 4) = Tab1(3, I) Cells(2 + J, 5) = Tab1(4, I) Cells(2 + J, 6) = Tab1(5, I) Cells(2 + J, 7) = Tab1(6, I) Cells(2 + J, 8) = Tab1(7, I) Cells(2 + J, 9) = Tab1(8, I) Cells(2 + J, 10) = Tab1(9, I) Cells(2 + J, 11) = Tab1(10, I) Next I
Bonjour,
Lorsque vous placez du code sur notre forum, merci d'utiliser les balises code à votre disposition.
Le mode d'emploi (au cas ou) est ICI.
Cordialement,
Pijaku
Lorsque vous placez du code sur notre forum, merci d'utiliser les balises code à votre disposition.
Le mode d'emploi (au cas ou) est ICI.
Cordialement,
Pijaku
Bonjour,
Tu as mis tout le code ?
Je n'y vois rien qui pourrait influencer si tu as plusieurs classeurs d'ouverts.
Tu n'as pas de fonctions personnalisées ?
Par contre tu peux rendre ton code beaucoup plus rapide en évitant tous les .select inutiles, et en écrivant les données par bloc quand c'est possible plutôt que cellule par cellule.
Sans fichier de travail c'est tout ce qu'on peut en dire.
eric
Tu as mis tout le code ?
Je n'y vois rien qui pourrait influencer si tu as plusieurs classeurs d'ouverts.
Tu n'as pas de fonctions personnalisées ?
Par contre tu peux rendre ton code beaucoup plus rapide en évitant tous les .select inutiles, et en écrivant les données par bloc quand c'est possible plutôt que cellule par cellule.
Sans fichier de travail c'est tout ce qu'on peut en dire.
eric
Oui j'ai mis tout le code ! :(
Et quand je lance la macro elle prend environ 30 secs et dès qu'il y a un autre classeur ouvert elle est supra longue... Je ne comprend vraiment pas pourquoi.
Je suppose que je peux la rendre plus rapide mais je suis débutante donc je ne sais pas comment faire je t'avoue...
Et quand je lance la macro elle prend environ 30 secs et dès qu'il y a un autre classeur ouvert elle est supra longue... Je ne comprend vraiment pas pourquoi.
Je suppose que je peux la rendre plus rapide mais je suis débutante donc je ne sais pas comment faire je t'avoue...
Ter repetita ?
Je ne peux pas mettre le fichier ce sont des données sensibles... mais la macro est entièrement là.
C'est assez simple, tu as un onglet pour chaque semaine avec le même tableau qui a toujours la même mise en forme.
Dans ces tableaux, il y a d'inscrit le nom de personnes avec leur semaine d'entrée par exemple.
Ma macro permet de prendre les lignes où la semaine inscrite dans le tableau correspond à la semaine de l'onglet et de l'inscrire dans une nouvelle feuille pour avoir une liste des entrées effectives des personnes.
C'est tout.
Je ne peux pas mettre le fichier ce sont des données sensibles... mais la macro est entièrement là.
C'est assez simple, tu as un onglet pour chaque semaine avec le même tableau qui a toujours la même mise en forme.
Dans ces tableaux, il y a d'inscrit le nom de personnes avec leur semaine d'entrée par exemple.
Ma macro permet de prendre les lignes où la semaine inscrite dans le tableau correspond à la semaine de l'onglet et de l'inscrire dans une nouvelle feuille pour avoir une liste des entrées effectives des personnes.
C'est tout.
sans classeur exemple, il sera extrêmement difficile de te répondre, sauf en tâtonnant...
Essaie toutefois de mettre, en début de ta macro :
et en fin de macro, avant End Sub :
Ceci devrait empêcher Excel de procéder aux calculs automatiques sur les autres classeurs durant le temps d'exécution de ta macro.
A vérifier toutefois que cela fonctionne sur tous les classeurs ouverts.....
Essaie toutefois de mettre, en début de ta macro :
Application.Calculation = xlCalculationManual
et en fin de macro, avant End Sub :
Application.Calculation = xlCalculationAutomatic
Ceci devrait empêcher Excel de procéder aux calculs automatiques sur les autres classeurs durant le temps d'exécution de ta macro.
A vérifier toutefois que cela fonctionne sur tous les classeurs ouverts.....