A voir également:
- Macro pour un seul classeur
- Macro logiciel - Télécharger - Organisation
- Macro word - Guide
- Macro recorder - Télécharger - Confidentialité
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Comment mettre plusieurs pdf en un seul - Guide
3 réponses
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 mars 2024
7 208
19 juin 2014 à 22:33
19 juin 2014 à 22:33
Bonjour,
Que veux-tu que l'on teste sans fichier ni code ?
eric
Que veux-tu que l'on teste sans fichier ni code ?
eric
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
20 juin 2014 à 09:28
20 juin 2014 à 09:28
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
20 juin 2014 à 09:39
20 juin 2014 à 09:39
pas de souci.
Bonne continuation avec Éric que je salue au passage.
Bonne journée
Bonne continuation avec Éric que je salue au passage.
Bonne journée
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 mars 2024
7 208
20 juin 2014 à 09:46
20 juin 2014 à 09:46
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...
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 mars 2024
7 208
20 juin 2014 à 11:37
20 juin 2014 à 11:37
Ter repetita...
Sans fichier de travail c'est tout ce qu'on peut en dire
Sans fichier de travail c'est tout ce qu'on peut en dire
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.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
20 juin 2014 à 12:04
20 juin 2014 à 12:04
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.....
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 mars 2024
7 208
20 juin 2014 à 12:10
20 juin 2014 à 12:10
C'est tout
Ben voyons, mais je n'ai pas plus de courage que toi à le faire.
Tu me vois éplucher ta macro pour savoir que dans telle cellule je dois y trouver ça ?
Allez, c'est bon, je n'insiste plus et j'abandonne.
Bon courage
eric
Ben voyons, mais je n'ai pas plus de courage que toi à le faire.
Tu me vois éplucher ta macro pour savoir que dans telle cellule je dois y trouver ça ?
Allez, c'est bon, je n'insiste plus et j'abandonne.
Bon courage
eric