[VBA Excel] Eviter l'affichage de certains avertissements

Eviter l'affichage de certains avertissements [VBA Excel] - VB/VBA/VBS - Programmation

Marsh Posté le 20-03-2007 à 11:15:01    

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 :
 
http://img84.imageshack.us/img84/1007/averto1ht2.th.jpg
 
et
 
http://img87.imageshack.us/img87/9971/averto2sl5.th.jpg
 
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 :
  1. Public Sub CopierFeuilleExcel(ByVal sMonBookDeCopie As String, ByVal sMonBookDeDestination As String, ByVal sNomFeuilleACopier As String, ByVal sNomFeuilleCopier As String)
  2. If Dir(sMonBookDeCopie) <> "" And Dir(sMonBookDeDestination) <> "" Then
  3.     Dim xlApp As Excel.Application
  4.     Dim xlBookDeCopie As Workbook
  5.     Dim xlBookDeDestination As Workbook
  6.     Dim i As Integer
  7.     Dim j As Integer
  8.     Dim wsExcel As Excel.Worksheet
  9.   If sMonBookDeCopie <> sMonBookDeDestination Then
  10.     Set xlApp = CreateObject("Excel.Application" )
  11.     Set xlBookDeCopie = xlApp.Workbooks.Open(sMonBookDeCopie)
  12.     Set xlBookDeDestination = xlApp.Workbooks.Open(sMonBookDeDestination)
  13.    
  14.     For i = 1 To xlBookDeCopie.Sheets.Count
  15.    
  16.         If xlBookDeCopie.Sheets(i).Name = sNomFeuilleACopier Then
  17.  
  18.            xlBookDeCopie.Activate
  19.            xlBookDeCopie.Sheets(sNomFeuilleACopier).Select
  20.            xlBookDeCopie.Sheets(sNomFeuilleACopier).Copy After:=xlBookDeDestination. _
  21.            Sheets(xlBookDeDestination.Sheets.Count)
  22.      
  23.            For j = 1 To xlBookDeDestination.Sheets.Count
  24.          
  25.               If xlBookDeDestination.Sheets(j).Name = sNomFeuilleCopier Then
  26.          
  27.                  MsgBox "La feuille copiée n'a pas pu  être renommée, ce nom existe déjà!", vbCritical
  28.              
  29.            Exit For
  30.          
  31.               ElseIf j = xlBookDeDestination.Sheets.Count Then
  32.          
  33.                  xlBookDeDestination.Sheets(j).Name = sNomFeuilleCopier
  34.                  xlBookDeDestination.Activate
  35.                    
  36.                 Set wsTemplate = xlBookDeDestination.Worksheets(sNomFeuilleCopier)
  37.                'c'est ici que l'on renseigne la plage de cellule à séléctionné, copier, puis coller dans le nouveau document
  38.                 wsTemplate.Range("G1:AW45" ).Select
  39.                 wsTemplate.Range("G1:AW45" ).Copy
  40.                 wsTemplate.Range("G1:AW45" ).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  41.                  :=False, Transpose:=False
  42.                ' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  43.                  ':=False, Transpose:=False
  44.                 ' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  45.                  ':=False, Transpose:=False
  46.          
  47.               End If
  48.              
  49.            Next j
  50.          
  51.         Exit For
  52.        
  53.         ElseIf i = xlBookDeCopie.Sheets.Count Then
  54.        
  55.         MsgBox "La feuille à copier n'existe  pas!", vbCritical
  56.        
  57.         End If
  58.          
  59.     Next i
  60.     Application.ScreenUpdating = False
  61.     xlBookDeCopie.Close savechanges:=False
  62.     'xlBookDeCopie.Close True
  63.    ' Application.ScreenUpdating = False
  64.     xlBookDeDestination.Close True
  65.     xlApp.Quit
  66.    
  67.     Set xlBookDeCopie = Nothing
  68.     Set xlBookDeDestination = Nothing
  69.     Set xlApp = Nothing
  70.    
  71.   ElseIf sMonBookDeCopie = sMonBookDeDestination Then
  72.     Set xlApp = CreateObject("Excel.Application" )
  73.     Set xlBookDeCopie = xlApp.Workbooks.Open(sMonBookDeCopie)
  74.     For i = 1 To xlBookDeCopie.Sheets.Count
  75.    
  76.         If xlBookDeCopie.Sheets(i).Name = sNomFeuilleACopier Then
  77.        
  78.            xlBookDeCopie.Activate
  79.            xlBookDeCopie.Sheets(sNomFeuilleACopier).Select
  80.            xlBookDeCopie.Sheets(sNomFeuilleACopier).Copy After:=xlBookDeCopie. _
  81.            Sheets(xlBookDeCopie.Sheets.Count)
  82.            For j = 1 To xlBookDeCopie.Sheets.Count
  83.          
  84.               If xlBookDeCopie.Sheets(j).Name = sNomFeuilleCopier Then
  85.          
  86.                  MsgBox "La feuille copiée n'a pas pu  être renommée, ce nom existe déjà!", vbCritical
  87.              
  88.            Exit For
  89.          
  90.               ElseIf j = xlBookDeCopie.Sheets.Count Then
  91.          
  92.                  xlBookDeCopie.Sheets(j).Name = sNomFeuilleCopier
  93.          
  94.               End If
  95.              
  96.            Next j
  97.        
  98.         Exit For
  99.        
  100.         ElseIf i = xlBookDeCopie.Sheets.Count Then
  101.        
  102.         MsgBox "La feuille à copier n'existe  pas!", vbCritical
  103.        
  104.         End If
  105.          
  106.     Next i
  107.    
  108.     xlBookDeCopie.Close True
  109.     xlApp.Quit
  110.    
  111.     Set xlBookDeCopie = Nothing
  112.     Set xlApp = Nothing
  113.   End If
  114.  
  115. Else
  116.     MsgBox "Le fichier n'existe pas, vérifier le chemin !", vbCritical
  117.    
  118. End If
  119. End Sub


 
Note : cette fonction provient d'Internet (vbsources.com)
 
Merci d'avance.  :)


Message édité par skyst3f le 20-03-2007 à 11:21:53
Reply

Marsh Posté le 20-03-2007 à 11:15:01   

Reply

Marsh Posté le 20-03-2007 à 12:04:29    

A priori en adaptant et encadrant la procedure par Application.DisplayAlerts = False
....
Application.DisplayAlerts = True

Reply

Marsh Posté le 20-03-2007 à 14:11:55    

kiki29 a écrit :

A priori en adaptant et encadrant la procedure par Application.DisplayAlerts = False
....
Application.DisplayAlerts = True


 
 
ça ne fonctionne pas....  :(

Reply

Marsh Posté le 20-03-2007 à 16:19:34    

skyst3f a écrit :

ça ne fonctionne pas....  :(


tu peux développer ta phrase stp ?
qu'est-ce qui ne fonctionne pas ? ton écran n'est pas allumé ? ton imprimante fait du bruit ? Ton code est foireux ?
Il faut un peu etre plus explicite que ca ne fonctionne pas...:o

Reply

Marsh Posté le 20-03-2007 à 21:09:36    

Bonsoir,
Il faut mettre en début de procédure
 
Application.AskToUpdateLinks = False
 
et remettre true à la fin.
 
Pour le presse papier : Application.CutCopyMode = False ....
 
Bon courage


Message édité par Thierry_94 le 20-03-2007 à 21:12:13
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed