Bonjour,

Je me permets de vous appeler à l'aide car après avoir cherché deux jours sur les forums, l'aide, etc... je dois me rendre à l'évidence : mon code a un problème (au minimum) et ce n'est visiblement pas moi qui vais le voir

En deux mots, j'essaye de séparer en plusieurs fichiers (un par centre) les données de centres en utilisant une macro VBA excel 2007. Le numéro de centre est indiqué dans une colonne.

Dans un premier temps je cherche la zone dans lequel sont les données, je recopie le titre "cid" et la valeur du centre que je cherche dans la colonne après la zone qui contient les données (et cela en ligne 1 et 2).

Alors vient le plus grand moment... Plantage sur "AdvancedFilter" avec un code d'erreur 1004 "nom de champ introuvable ou incorrect dans la plage d'extraction". Lorsque j'essaye avec des range de type range("A1:Z34"), je n'ai pas de problème mais ici j'essaie d'avoir un code plus générique...

Voici le code où se situe le problème

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
 
 
    'création des ranges des données
    Set range_data_global = Worksheets(feuille_data).Range(Worksheets(feuille_data).Cells(ligne_debut_comptage, colonne_debut_comptage), Worksheets(feuille_data).Cells(derniere_ligne, derniere_colonne))
 
    Set range_selector = Worksheets(feuille_data).Range(Worksheets(feuille_data).Cells(1, derniere_colonne + 1), Worksheets(feuille_data).Cells(2, derniere_colonne + 1))
 
    'pour chaque centre, création d'un fichier avec ses données...
    For Each element In tableau_cles
        'cree fiche pour resultat
        Sheets.Add
        ActiveSheet.Name = "tmp"
        'critere de selection
        Worksheets(feuille_data).Cells(2, derniere_colonne + 1).value = element
 
        'filtre de la zone des données
        range_data_global.AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=range_selector, _
            CopyToRange:=Worksheets("tmp").Range("A1"), Unique:=False
 
        ActiveSheet.Copy
        ActiveWorkbook.SaveAs Filename:=element 'nom_fichier = element
        ActiveWorkbook.Close
        ActiveSheet.Delete
        Sheets(feuille_data).Select
 
    Next element
Voilà, si vous avez des idées...

Un grand merci à tous ceux qui se pencheront sur le problème!

Bonne journée