IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Fermer un fichier sans message concernant le presse-papier [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    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 : 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
    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 :-)

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Je ne comprend pas pourquoi tu as crée une nouvelle instance d'Excel oApp
    Donc,et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oApp.DisplayAlerts=False
    Remarque que tu peux travailler avec une seule instance Excel

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Par défaut
    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 !

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Sinon, ton code serait comme ceci (avec une seule instance Excel) et avec une boucle! à tester
    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
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Fermer un fichier sans message de confirmation
    Par benoaa dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/07/2014, 16h56
  2. Réponses: 2
    Dernier message: 15/03/2009, 15h06
  3. Réponses: 2
    Dernier message: 20/03/2008, 10h38
  4. lire nom de fichier pour sauvegarde ensuite sur presse papier
    Par chapeau_melon dans le forum VBScript
    Réponses: 3
    Dernier message: 21/03/2007, 21h35
  5. Fermer le pc sans message ...
    Par Coussati dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 26/12/2005, 20h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo