Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/11/2011, 16h13   #1
Membre actif
 
Inscription : juillet 2006
Messages : 295
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 295
Points : 191
Points : 191
Par défaut Fermer un fichier sans message concernant le presse-papier

Bonjour,

Je suis actuellement en train de faire une macro automatisant un certain traitement qui va chercher des informations dans un fichier B pour les copier coller dans un fichier A.
J'ai un petit souci : au moment de fermer le fichier B, j'ai toujours le message me demandant si je veux conserver le presse-papier. J'ai vu en faisant des recherches qu'il y avait beaucoup de questions par rapport à ce sujet, mais après avoir testé maintes solutions, ça ne marche toujours pas chez moi.

Si quelqu'un peut jeter un oeil à mon code pour voir où j'ai pu oublier un truc, cela m'aiderait bien !


Code :
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Sub Macro2()
'
' Macro2 Macro
'
' Touche de raccourci du clavier: Ctrl+b
'
    'Déclarations
    Dim oApp As Excel.Application
    Dim Fichier As Excel.Workbook
    Dim OnglMois1 As Worksheet, OnglMois2 As Worksheet, OnglMois3 As Worksheet, OnglMois4 As Worksheet, OnglMois5 As Worksheet, OnglMois6 As Worksheet
    Dim Recap As Worksheet
 
    Set oApp = CreateObject("Excel.Application")
    Set Recap = ThisWorkbook.Worksheets("Récap")
    Set Fichier = oApp.Workbooks.Open("N:\Mondossier\CAL.xls")
 
    Set OnglMois1 = Fichier.Worksheets("Nov 11")
    Set OnglMois2 = Fichier.Worksheets("Déc 11")
    Set OnglMois3 = Fichier.Worksheets("Janv 12")
    Set OnglMois4 = Fichier.Worksheets("Févr 12 ")
    Set OnglMois5 = Fichier.Worksheets("Mars 12")
    Set OnglMois6 = Fichier.Worksheets("Avril 12")
 
    OnglMois1.Range("A2:AI5").Copy
    Recap.Paste Destination:=Recap.Cells(1, 1)
    'Application.CutCopyMode = False
 
    OnglMois2.Range("A2:AI5").Copy
    Recap.Paste Destination:=Recap.Cells(5, 1)
    'Application.CutCopyMode = False
 
    OnglMois3.Range("A2:AI5").Copy
    Recap.Paste Destination:=Recap.Cells(9, 1)
    'Application.CutCopyMode = False
 
    OnglMois4.Range("A2:AI5").Copy
    Recap.Paste Destination:=Recap.Cells(13, 1)
    'Application.CutCopyMode = False
 
    OnglMois5.Range("A2:AI5").Copy
    Recap.Paste Destination:=Recap.Cells(17, 1)
    'Application.CutCopyMode = False
 
    OnglMois6.Range("A2:AI5").Copy
    Recap.Paste Destination:=Recap.Cells(21, 1)
    Application.CutCopyMode = False
 
    'Annule toutes les alertes Excel
    Application.DisplayAlerts = False
    Application.CutCopyMode = False
    Fichier.Close False
 
    'Restaure l'affichage des Alertes
    Application.DisplayAlerts = True
 
    Recap.Range("E:AI").ColumnWidth = 15
    Recap.Range("3:4,7:8,11:12,15:16,19:20,23:24").RowHeight = 175
    Recap.PageSetup.PrintArea = "$A$1:$AI$24"
 
    With ActiveSheet.PageSetup
        'Définition des marges
        .LeftMargin = Application.InchesToPoints(0.25)
        .RightMargin = Application.InchesToPoints(0.25)
        .TopMargin = Application.InchesToPoints(0.2)
        .BottomMargin = Application.InchesToPoints(0.2)
        .HeaderMargin = Application.InchesToPoints(0)
        .FooterMargin = Application.InchesToPoints(0)
 
        'Pour ajuster sur une page
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
 
        'Pour imprimer en paysage
        .Orientation = xlLandscape
 
        '.PrintQuality = 600
        '.Draft = False
    End With
 
    ActiveWindow.SelectedSheets.PrintPreview
End Sub
NB : j'ai testé le Application.CutCopyMode = False après tous les collages, et avant la fermeture du fichier de données, ainsi que la suppression des alertes Excel avec la commande Application.DisplayAlerts = False...

Merci d'avance :-)
Alqualonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 16h23   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Je ne comprend pas pourquoi tu as crée une nouvelle instance d'Excel oApp
Donc,et
Code :
oApp.DisplayAlerts=False
Remarque que tu peux travailler avec une seule instance Excel
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/11/2011, 16h31   #3
Membre actif
 
Inscription : juillet 2006
Messages : 295
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 295
Points : 191
Points : 191
Bonjour mercatog et un grand merci !!

J'avais laissé traîner cette histoire de deuxième instance après avoir cherché comment utiliser un objet Workbook pour éviter de tout retaper...

Merci beaucoup !
Alqualonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 16h37   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Sinon, ton code serait comme ceci (avec une seule instance Excel) et avec une boucle! à tester
Code :
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
Sub Macro2()
Dim Fichier As Workbook
Dim Sh As Worksheet, Recap As Worksheet
Dim i As Byte
Dim Tb
 
Application.ScreenUpdating = False
Tb = Array("Nov 11", "Déc 11", "Janv 12", "Févr 12", "Mars 12", "Avril 12")
Set Recap = ThisWorkbook.Worksheets("Récap")
Set Fichier = Workbooks.Open("N:\Mondossier\CAL.xls")
 
With Recap
    For i = 0 To UBound(Tb)
        Set Sh = Fichier.Worksheets(Tb(i))
        Sh.Range("A2:AI5").Copy .Cells(1 + 4 * i, 1)
        Set Sh = Nothing
    Next i
    'On ferme le fichier
    Fichier.Close False
    Set Fichier = Nothing
 
    .Range("E:AI").ColumnWidth = 15
    .Range("3:4,7:8,11:12,15:16,19:20,23:24").RowHeight = 175
    .PageSetup.PrintArea = "$A$1:$AI$24"
 
    With .PageSetup
        'Définition des marges
        .LeftMargin = Application.InchesToPoints(0.25)
        .RightMargin = Application.InchesToPoints(0.25)
        .TopMargin = Application.InchesToPoints(0.2)
        .BottomMargin = Application.InchesToPoints(0.2)
        .HeaderMargin = Application.InchesToPoints(0)
        .FooterMargin = Application.InchesToPoints(0)
 
        'Pour ajuster sur une page
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
 
        'Pour imprimer en paysage
        .Orientation = xlLandscape
    End With
End With
Set Recap = Nothing
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h25.


 
 
 
 
Partenaires

Hébergement Web