VBA - Répondre automatique à une boîte de dialogue

Salutations à tous!

Je me permets de venir à vous, car j'ai un soucis

J'utilise le code suivant :

Sub Articles()
    'On empêche le refresh de l'écran pour accélérer la macro
    Application.ScreenUpdating = False
    'On empêche le rafraichissement de la barre d'état
    Application.DisplayStatusBar = False
    'On désactive les évènements pour éviter l'apparition de fenêtre
    Application.EnableEvents = False

    'On efface les dernières données de l'onglet Articles
    Sheets("Articles").Range("A:F").ClearContents

    'On détermine le nom du fichier actuel
    Dim nomfichier As Variant
    nomfichier = ThisWorkbook.Name

    'On détermine la fonction d'ouverture d'un fichier
    Dim fichier As String
    fichier = Application.GetOpenFilename

    'Ouverture fenêtre de selection du fichier d'entrée
    Workbooks.Open Filename:=fichier

    'Supprime le chemin
    fichier = Dir(fichier)

    'On modifie le fichier d'extraction BO Articles
    Rows("1:5").Delete Shift:=xlUp
    Columns("A:A").Delete Shift:=xlToLeft
    Columns("C:D").Delete Shift:=xlToLeft
    Columns("E:AE").Delete Shift:=xlToLeft
    Range("A:D").Select
    Selection.Copy

    'On colle les données dans l'onglet Articles
    Workbooks(nomfichier).Sheets("Articles").Cells(1, 7).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                          SkipBlanks:=False, Transpose:=False

    'On ferme le fichier d'extraction BO Articles
    ActiveWorkbook.Close Savechanges:=False

    'On met en page l'onglet Articles
    Dim iLigFin As Integer
    iLigFin = Workbooks(nomfichier).Sheets("Fournisseurs").Range("G" & Rows.Count).End(xlUp).Row
    'On supprime les doublons
    Workbooks(nomfichier).Sheets("Articles").Range("$G$1:$J$" & iLigFin).RemoveDuplicates Columns:=3, Header:= _
        xlYes
    'On détermine la dernière ligne non vide de l'onglet Articles
    r = Workbooks(nomfichier).Sheets("Articles").Range("G" & Rows.Count).End(xlUp).Row

    'On enlève les nombres de la famille
    Set Plage = Workbooks(nomfichier).Sheets("Articles").Range(Cells(2, 7), Cells(r, 7))
    For Each c In Plage
        c.Value = Mid(c.Value, 3)
    Next c
    'On enlève les nombre de la SF1
    Set Plage = Workbooks(nomfichier).Sheets("Articles").Range(Cells(2, 8), Cells(r, 8))
    For Each c In Plage
        c.Value = Mid(c.Value, 6)
    Next c

    'On déplace les colonnes Famille et SF1
    Columns("G:H").Select
    Selection.Cut
    Columns("K:L").Select
    Workbooks(nomfichier).Sheets("Articles").Paste
End Sub

Ce code n'est très certainement pas optimal, mais il fait carrément le taf. Donc, pour le moment, je m'en contente.

Le hic, c'est que je copie/colle une grosse quantité de données d'un fichier vers l'onglet cible de la macro. Et du coup, j'ai une boîte de dialogue qui s'ouvre et m'indique ceci :

Le Presse-papier contient une grande quantité d'informations. Voulez-vous avoir la possibilité de coller ces informations dans un autre document ultérieurement?

- Pour les enregistrer dans le Presse-papiers afin de pouvoir les coller ultérieurement, cliquez sur Oui.

- Pour les supprimer du Presse-papiers et libérer de la mémoire, cliquez sur Non

Et ce, malgré le fait que j'ai mis :

Application.EnableEvents = False

L'un de vous a-t-il une idée/astuce/conseil pour palier cet inconvénient?

Vous en remerciant par avance,

Benjen

Bonjour, il manque :

'En début de macro
Application.DisplayAlerts = False

'.........

'En fin de macro
Application.DisplayAlerts = True

Tout bêtement!

Merci, ça marche nickel!

Rechercher des sujets similaires à "vba repondre automatique boite dialogue"