Bonjour,
Je viens vers vous car j'ai écrie un code qui est le suivant:
Sub tableau_depose_info()
' Désactivation du rafraîchissement de l'écran durant l'exécution du code
' (Cela évite de voir les fichiers s'ouvrir et se fermer à très grande vitesse :
' sensation de scintillement de l'écran...)
Application.ScreenUpdating = False
' Désactivation également des messages d'alerte afin que le code ne risque pas d'être interrompu
Application.DisplayAlerts = False
' Déclaration des variables et enregistrement du nom du fichier source
' (fichier actif, à partir duquel on exécute le code)
Dim NomSource, NomFichier, NomChemin, NomFeuille As String
NomSource = ActiveWorkbook.Name
' Création d'une boucle, l'opération étant répétée autant de fois qu'il y a de fichiers à renseigner
' (cf. onglet "Fichiers", colonne B)
' La fonction End(xlUp).Row retourne le numéro de ligne de la première cellule non vide rencontrée
' en partant de la fin du fichier (ligne 1 048 576 sous Excel 2007-2010)
For i = 2 To Sheets("Fichiers").Range("B1048576").End(xlUp).Row
' Sélection de la zone à copier (le tableau)
Range("B5:W616").Select
' Copie
Selection.Copy
' Déclaration du nom du fichier dans lequel il va falloir coller le tableau précédemment copié
' ainsi que du chemin d'accès et du nom de l'onglet de destination
' Ces noms sont renseignés dans l'onglet "Fichiers" du fichier source, colonne D
' La ligne lue est la ligne i (cf. Création boucle)
NomFichier = Sheets("Fichiers").Range("B" & i).Value
NomChemin = Sheets("Fichiers").Range("C" & i).Value
NomFeuille = Sheets("Fichiers").Range("D" & i).Value
' Ouverture du classeur de destination
Workbooks.Open (NomChemin & "\" & NomFichier)
' Activation de l'onglet de destination
' (au cas où le fichier aurait plusieurs onglets et s'ouvrirait sur un autre que celui désiré)
Sheets(NomFeuille).Activate
' Sélection de la cellule supérieur gauche de la zone sur laquelle vont être collées les données
Range("B14").Select
' Collage spécial : valeurs
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' Collage spécial : format
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
' Sélection d'une cellule quelconque pour ne pas rester avec l'ensemble du tableau sélectionné
Range("A1").Select
' Enregistrement du fichier
ActiveWorkbook.Save
' Fermeture du fichier
ActiveWorkbook.Close
' Retour (activation) sur le fichier source
Workbooks(NomSource).Activate
' Activation de l'onglet comportant les données à copier
' (normalement ce n'est pas nécessaire, simple précaution)
Sheets("depose_infos").Activate
' Fin de la boucle, passe au fichier suivant ou à la suite du code (selon la valeur de i)
Next
' Sélection d'une cellule quelconque pour ne pas rester avec l'ensemble du tableau sélectionné
Range("A1").Select
' Activation du rafraîchissement de l'écran
Application.ScreenUpdating = True
' Activation des messages d'alerte
Application.DisplayAlerts = True
' Message indiquant la fin du traitement
MsgBox "Fichiers mis à jour !"
End Sub
Il fonctionne parfaitement, le problème c'est que je colle mon tableau dans 25 fichiers et qu'a chaque ouverture de ces fichiers un message s'ouvre et me demande de mettre a jours les liaisons.
J'aimerais donc savoir si c'est possible que mon tableau ce copie sans que ce message ne s'affiche ?
Edit Amadéus: Merci d'utiliser les balises Code.