Bonjour,

J'aimerais créer une macro pour mettre à jour les onglets d'un classeur excel. Je suis totalement novice, mais j'ai commencé par lire des tutoriels. On m'a également apporté de l'aide sur d'autres forums mais qui se revele insuffisante pour l'instant et pour mon cas.

Pour resumer ce fameux cas:

Dans mon "d:\", j'ai
- Fichier "analysis.xls" (1 feuil "synthesis", 1 feuil "pays1", 1 feuil "pays2")
- Fichier "sourcepays1" (1 feuil)
- Fichier "sourcepays2" (1 feuil)
Ces 2 derniers fichiers ont 1 structure identique, seules les valeurs changent.

Tous les mois, je recupère ces fichiers source. Le but est donc de faire une macro pour ne pas faire un copier coller manuel des valeurs (parce qu'en réalité j'ai pas que 2 pays ). En gros, je souhaite que ça se passe ainsi,:

dans feuil "synthesis" avec un bouton "MAJ"
- Trouve moi les fichiers "SourcePays*.xls" dans le dossier
- Ouvre le premier. Controle moi la concordance des mois (valeur) entre le mois choisi en feuil "synthesis" et le mois marqué sur "SourcePays*.xls".
- Si identiques,
- appelle moi la macro definie pour la feuil "pays*" (et qui execute un copier/coller des plages de valeurs spécifées selon le pays)
- Sinon
- msg d'erreur pour ce pays et passe au suivant
- Recommence avec le suivant.[/quote]

Voila du code dont je ne suis, mais alors, vraiment pas sur!
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
Option Explicit
 
Private Sub ButtonMAJ_Click()
 
    Dim wb_target As Workbook
    Dim chemin, mois_target, wb_sourcex, mois_sourcex As String
 
    'trouve moi les fichiers "SourcePays*.xls"
    Set chemin = ChDir(ActiveWorkbook.Path)
    Set wb_sourcex = (chemin & "\" & "SourcePays*.xls")
    Set wb_target = Workbooks("Analysis.xls")
    Set mois_target = Workbooks("Analysis.xls").sheets(1).Range("H1")
 
    Select Case MsgBox("Etes-vous sûr de vouloir charger les données de" & " " & mois_target & "?", vbYesNo)
    Case vbYes
 
For Each wb_sourcex In .. 'repertoire avec tous les fichiers sourcepaysx.xls
 
    Workbooks.Open (wb_sourcex)
    If mois_target.Value <> wb_sourcex.Range("B8").Value Then
         MsgBox "Le mois choisi ne correspond pas avec les données du rapport !", vbExclamation
         Workbooks("SourcePays*.xls").Close
    Else
 
    'Call MiseAJour* (nom de la macro; MiseAJour1 si sourcepays1)
 
    End If
 
    Next wb_sourcex
 
    wb_sourcex.Close
 
    MsgBox "Vos données ont bien été mises à jour pour " & mois_target
 
    Case vbNo
 
    End Select
 
    End Sub
Bon c'est du très sommaire parce que je n'y connais rien, je bloque surtout sur la boucle et le call de la macro en fonction du pays "étudié".

Toute aide est grandement bienvenue!

Bonne soirée