Bonjours,

Contexte :

1 document Excel pour chaque utilisateur. Dans ces documents, on trouve leurs congés, rendez-vous et d'autres données diverses.

De la, j'ai un document Excel(que je dirais le principal), qui récupère les données des fichiers de chaque utilisateur. Le tout formant ainsi un récapitulatif pour le chef de service. Pour cela j'ai utilisé les macros.

J'ai eu un code de base, généré par l'enregistrement de macro d'excel, que j'ai quelque peu bidouillé par rapport à mon besoin. Pour l'instant tout marche bien.

Je cherche maintenant à améliorer ce que j'ai fait.

Voici une partie du code (la totalité n'étant pas utile du fait d'une grande similitude du début...)

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
 
 
Sub Complete()
 
' Macro de sauvegarde de tous les fichiers des contrôleurs. Pour les congés
' Chaque nom de fichier ouvert correspond au tri gramme d'un contrôleur
 
' Ouverture du fichier ou récupérer les informations
' Partie de récupération pour le contrôleur "CASSAGNE"
 
    ChDir "C:\Documents and Settings\vsuppa\Bureau\congé\CAS"
    Workbooks.Open Filename:= _
        "C:\Documents and Settings\vsuppa\Bureau\congé\CAS\CAS.xls"
 
' Sélection de la feuille ou récupérer les informations
 
    Sheets("Janvier à Août 2008").Activate
 
' Sélection des lignes à sauvegarder
 
    Range("B7:DS8").Select
 
' Utilisation de la fonction copié
 
    Selection.Copy
 
' retour sur le document principal
 
    Windows("Congés ICNA 2008 à 2009.xls").Activate
 
' Sélection de la feuille ou récupérer les informations
 
    Sheets("Janvier à Août 2008").Activate
 
' Sélection des lignes à sauvegarder
 
    Range("B7").Select
 
' Copie des données par un collage spécial
 
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
 
End Sub
Ce que je souhaiterais :

1ere demande :

En exécutant ce code, il m'ouvre tous les fichiers 1 par 1, logique, mais ne les fermes pas. J'ai testé la fonction "ActiveWorkbook.Close" qui me fait un plantage par rapport à la fonction "Selection.SasteSpecial..." du coup les fichiers ne se ferme que lors de la fermeture manuel du fichier principal. J'aurais souhaité, si possible, fermer les fichiers (sauf le principal) des utilisateurs une fois les données récupéré...

2eme demande :

Pensez vous que je pourrais optimiser ce code, de manière à le rendre peut être plus dans la logique programmation? Je ne suis pas spécialiste en programmation, donc vos lumières, proposition d'amélioration sont les bien venue.

Voila, je vous remercie par avance.


ps : Je vie en calédonie, donc je ne verrais vos réponse que demain matin pour moi... 9h de décalage. Donc no stress si je répond pas dessuite . Mais vos avis seront finement étudié.