bonjour à toutes et à tous,

j'ai fait une macro permettant de réarranger puis de compiler deux fichiers différent dans un seul. ayant déjà fait quelque chose de similaire avec d'autres fichiers, j'ai repris le code et adapté. je teste en mode pas à pas, et tout marche. je test en mode 'production', avec le raccourci clavier, et là, c'est le drame

Le fichier devant cumuler les deux autres s'ouvre bien, mais pas de copier/coller; pire, certaines fois il le fait mais ne pas les étapes suivantes. Et bien sûr, pas de message d'erreur (au moins si il y en avait un je pourrais avoir une piste !).

en revanche, tout est ok quand je passe en mode pas à pas, il fait exactement ce que je veux.

je sèche !
voici le code :

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
Sub Macro5()
'
' Macro5 Macro
'(oui, bon le nom est pas top, je sais :))
' Touche de raccourci du clavier: Ctrl+Maj+Z
'
 
' définition de variables
    Dim fichier_agregat As Workbook
    Dim feuille As Worksheet
    I2C_lig = 1
    I2C_col = 1
    y_agregat = 1
 
 
' ouverture du fichier et aller à la fin du fichier récupérer le score de l'audit
    Cells(I2C_lig, I2C_col).Select
    Do Until Cells(1, I2C_col).Value = ""
        I2C_col = I2C_col + 1
    Loop
    Do Until Cells(I2C_lig, 1).Value = ""
        I2C_lig = I2C_lig + 1
    Loop
 
' on fait le ménage
    Columns(I2C_col - 1).Select
    Selection.Cut
    Columns("J:J").Select
    Selection.Insert Shift:=xlToRight
    Range(Columns(11), Columns(I2C_col)).Select
    Selection.Delete Shift:=xlToLeft
 
 
' différenciation de ville :
'   - ville1 : on copie le titre
'   - ville2 : on ne copie pas le titre
' on copie le contenu du fichier
    If Cells(2, 9) = "ville1" Then
        Range(Rows(1), Rows(I2C_lig)).Select
    Else
        Range(Rows(2), Rows(I2C_lig)).Select
    End If
    Selection.Copy
 
' on ouvre l'agregat et on va dans la feuille
    Set fichier_agregat = Workbooks.Open("C:\agregat oct_autres.xlsx")
    Set feuille = fichier_agregat.Worksheets(1)
 
' on compte le nombre de ligne pour aller à la dernière
    Do Until Cells(y_agregat, 1).Value = ""
        y_agregat = y_agregat + 1
    Loop
 
' on se place à la fin du fichier
    Cells(y_agregat, 1).Select
 
' on y copie les données
    ActiveSheet.Paste
 
' et on sauvegarde, et on ferme.
    ActiveWorkbook.Save
    ActiveWorkbook.Close
 
 
End Sub
et manifestement, c'est la notion de Activesheet et ActiveWorkbook à la fin qui ne passent pas. La Macro s'arrête là, sans coller les données la plupart du temps, ou alors colle mais ni ne sauvegarde ni ne ferme.
sauf en mode pas à pas, où tout marche pour le mieux...