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 SubCe 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 = FalseL'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 = TrueTout bêtement!
Merci, ça marche nickel!