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 :

[VBA-E] Eviter l'affichage de certains messages après un copier/coller


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 174
    Points : 62
    Points
    62
    Par défaut [VBA-E] Eviter l'affichage de certains messages après un copier/coller
    Bonjour,

    J'ai une macro qui ouvre une feuille Excel, copie cette feuille et la colle dans un autre fichier Excel. Cette opération fonctionne mais lors de la fermeture des fichiers concerné l'utilisateur à ces messages à l'écran :



    et



    Comment faire pour ne pas les afficher ou au pire, automatiser la réponse (non dans mon cas). Je vous donne le code de ma fonction qui copie/colle au cas où :

    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    Public Sub CopierFeuilleExcel(ByVal sMonBookDeCopie As String, ByVal sMonBookDeDestination As String, ByVal sNomFeuilleACopier As String, ByVal sNomFeuilleCopier As String)
    If Dir(sMonBookDeCopie) <> "" And Dir(sMonBookDeDestination) <> "" Then
        Dim xlApp As Excel.Application
        Dim xlBookDeCopie As Workbook
        Dim xlBookDeDestination As Workbook
        Dim i As Integer
        Dim j As Integer
        Dim wsExcel As Excel.Worksheet
      If sMonBookDeCopie <> sMonBookDeDestination Then
        Set xlApp = CreateObject("Excel.Application")
        Set xlBookDeCopie = xlApp.Workbooks.Open(sMonBookDeCopie)
        Set xlBookDeDestination = xlApp.Workbooks.Open(sMonBookDeDestination)
     
        For i = 1 To xlBookDeCopie.Sheets.Count
     
            If xlBookDeCopie.Sheets(i).Name = sNomFeuilleACopier Then
     
               xlBookDeCopie.Activate
               xlBookDeCopie.Sheets(sNomFeuilleACopier).Select
               xlBookDeCopie.Sheets(sNomFeuilleACopier).Copy After:=xlBookDeDestination. _
               Sheets(xlBookDeDestination.Sheets.Count)
     
               For j = 1 To xlBookDeDestination.Sheets.Count
     
                  If xlBookDeDestination.Sheets(j).Name = sNomFeuilleCopier Then
     
                     MsgBox "La feuille copiée n'a pas pu  être renommée, ce nom existe déjà!", vbCritical
     
               Exit For
     
                  ElseIf j = xlBookDeDestination.Sheets.Count Then
     
                     xlBookDeDestination.Sheets(j).Name = sNomFeuilleCopier
                     xlBookDeDestination.Activate
     
                    Set wsTemplate = xlBookDeDestination.Worksheets(sNomFeuilleCopier)
                   'c'est ici que l'on renseigne la plage de cellule à séléctionné, copier, puis coller dans le nouveau document
                    wsTemplate.Range("G1:AW45").Select
                    wsTemplate.Range("G1:AW45").Copy
                    wsTemplate.Range("G1:AW45").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                     :=False, Transpose:=False
                   ' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                     ':=False, Transpose:=False
                    ' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                     ':=False, Transpose:=False
     
                  End If
     
               Next j
     
            Exit For
     
            ElseIf i = xlBookDeCopie.Sheets.Count Then
     
            MsgBox "La feuille à copier n'existe  pas!", vbCritical
     
            End If
     
        Next i
        Application.ScreenUpdating = False
        xlBookDeCopie.Close savechanges:=False
        'xlBookDeCopie.Close True
       ' Application.ScreenUpdating = False
     
        xlBookDeDestination.Close True
        xlApp.Quit
     
        Set xlBookDeCopie = Nothing
        Set xlBookDeDestination = Nothing
        Set xlApp = Nothing
     
      ElseIf sMonBookDeCopie = sMonBookDeDestination Then
        Set xlApp = CreateObject("Excel.Application")
        Set xlBookDeCopie = xlApp.Workbooks.Open(sMonBookDeCopie)
        For i = 1 To xlBookDeCopie.Sheets.Count
     
            If xlBookDeCopie.Sheets(i).Name = sNomFeuilleACopier Then
     
               xlBookDeCopie.Activate
               xlBookDeCopie.Sheets(sNomFeuilleACopier).Select
               xlBookDeCopie.Sheets(sNomFeuilleACopier).Copy After:=xlBookDeCopie. _
               Sheets(xlBookDeCopie.Sheets.Count)
               For j = 1 To xlBookDeCopie.Sheets.Count
     
                  If xlBookDeCopie.Sheets(j).Name = sNomFeuilleCopier Then
     
                     MsgBox "La feuille copiée n'a pas pu  être renommée, ce nom existe déjà!", vbCritical
     
               Exit For
     
                  ElseIf j = xlBookDeCopie.Sheets.Count Then
     
                     xlBookDeCopie.Sheets(j).Name = sNomFeuilleCopier
     
                  End If
     
               Next j
     
            Exit For
     
            ElseIf i = xlBookDeCopie.Sheets.Count Then
     
            MsgBox "La feuille à copier n'existe  pas!", vbCritical
     
            End If
     
        Next i
     
        xlBookDeCopie.Close True
        xlApp.Quit
     
        Set xlBookDeCopie = Nothing
        Set xlApp = Nothing
      End If
     
    Else
        MsgBox "Le fichier n'existe pas, vérifier le chemin !", vbCritical
     
    End If
    End Sub
    Note : cette fonction provient d'Internet (vbsources.com)

    Merci d'avance.

  2. #2
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    575
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 575
    Points : 262
    Points
    262
    Par défaut
    Bonjour,

    j'ajouterai quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.DisplaysAlerts=False
    juste avant de fermer ton classeur.
    Et remettre à True juste après

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 174
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par marsupilami34
    Bonjour,

    j'ajouterai quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.DisplaysAlerts=False
    juste avant de fermer ton classeur.
    Et remettre à True juste après
    ça ne fonctionne pas . J'ai même essayé de le mettre en début de programme et de le laisser à false. rien à faire...

    On ne peut pas faire en sorte de paramétrer certaines réponses?

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Pour le premier message d'erreur que tu as, tu n'a pas d'autres moyens que le


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.displayAlerts = False

    et de le remettre a True à la fin de ta macro

    Pour les liaisons, c'est quand tu fais le Open de ton classeur, tu as une option :

    Il faut la mettre à 0 pour ne plus avoir le message

    Regarde dans l'aide en ligne de Excel, c'est marqué

  5. #5
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 174
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par illight
    Pour le premier message d'erreur que tu as, tu n'a pas d'autres moyens que le


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.displayAlerts = False

    et de le remettre a True à la fin de ta macro

    Pour les liaisons, c'est quand tu fais le Open de ton classeur, tu as une option :

    Il faut la mettre à 0 pour ne plus avoir le message

    Regarde dans l'aide en ligne de Excel, c'est marqué
    Merci pour la deuxième astuce, elle fonctionne.

    Mais pour mon vidage du presse papier rien à faire. DisplayAlerts ne fonctionne pas.

    J'ai essayé de vider le presse papier en utilisant cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub vide_PP()
    On Error Resume Next
    Application.CommandBars("Clipboard").Controls(4).Execute
    End Sub
    et aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CutCopyMode=False
    Mais rien à faire. Pourtant j'ai mis le code avant chaque fermeture de fichiers .

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Bah la je suis a court d'idée, car chez moi le displayAlerts marche très bien

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040

Discussions similaires

  1. VBA: Affichage d'un message lors de l'ouverture d'un fichier word
    Par LANGAZOU dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 02/03/2015, 19h32
  2. [AC-2007] Message Maxlocksperfile sur copier/coller
    Par micbett dans le forum IHM
    Réponses: 9
    Dernier message: 28/03/2012, 17h26
  3. Affichage en couleur de certains messages
    Par brunodu60 dans le forum AS/400
    Réponses: 7
    Dernier message: 05/01/2010, 16h16
  4. [PostgreSQL] eviter l'affichage des messages d'erreur
    Par Gandalf dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/03/2007, 10h15
  5. [VBA-E]Eviter un message de sécurité
    Par em79 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/02/2006, 12h42

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