Bonjour à tous,
Je pense que mon soucis est tout bête mais je ne trouve pas la solution.
Je dois compléter un fuille excel à partir d'une autre feuille avec un sommeprod, car je fais une recherche sur deux critères (chacun dans une colonne) et je renvois le contenu d'une troisième colonne. En fait je recherche des couples Numéro de dossier / Date et je renvoie un numéro associé à ce couple.
Tout fonctionne sauf que le fichier qui possède les numéros associés aux couples peut changer d'emplacement.
Du coup, j'utilise le bout de code suivant pour demander à l'utilisateur d'indiquer l'emplacement du fichier, puis je nomme les plages dudit fichier pour simplifier la suite et je fais mon sommeprod.
Il y a un soucis avec la variable regroupfich dans mon SOMMEPRODUCT car ça me fait planter la macro : erreur 1004 erreur définie par l'application ou par l'objet.
Si j'écris en dur le chemin du fichier dans le SOMMEPRODUCT, ça fonctionne.
Donc je pense que j'ai un soucis de syntaxe ligne 51 du code.
Quelqu'un aurait une idée ?
D'avance merci
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
45
46
47
48
49
50
51
Dim wb As Workbook
Dim ws As Worksheet
MsgBox "Choisissez le fichier de regroupement"
'Ouverture de la boite de choix de fichier et récupération du nom de fichier sélectionné dans la variable nomfich
regroupfich = Application.GetOpenFilename
'Si aucun choix de fichier, fin de la procédure
If regroupfich = False Then Exit Sub
'Ouverture du fichier de regroup
Set wb = Workbooks.Open(regroupfich)
Set ws = wb.Worksheets(1)
'Récupération de la dernière ligne du fichier de regroup
Dim Last As Long
Last = Range("A" & Rows.Count).End(xlUp).Row
'Nommer les 3 plages d'intérêt
ActiveWorkbook.Names.Add Name:="Num.sejour", RefersToR1C1:="=Feuil1!R2C1:R" & Last & "C1"
ActiveWorkbook.Names.Add Name:="Dt.recept.", RefersToR1C1:="=Feuil1!R2C2:R" & Last & "C2"
ActiveWorkbook.Names.Add Name:="No.rum", RefersToR1C1:="=Feuil1!R2C3:R" & Last & "C3"
'Fermer le fichier de regroup
Application.DisplayAlerts = False
ActiveWorkbook.Save
wb.Close
Application.DisplayAlerts = True
Windows("Traitement.xlsm").Activate
 
'Feuille NA<120
    'Tri des données NA<120
    Sheets("NA<120").Select
    Columns("A:F").Select
    ActiveWorkbook.Worksheets("NA<120").Sort.SortFields.Clear
        'Ajout de la colonne D comme clé de tri
    ActiveWorkbook.Worksheets("NA<120").Sort.SortFields.Add Key:=Range("D:D") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
        'Ajout de la colonne E comme clé de tri
    ActiveWorkbook.Worksheets("NA<120").Sort.SortFields.Add Key:=Range("E:E") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
        'Application du tri
    With ActiveWorkbook.Worksheets("NA<120").Sort
        .SetRange Range("A:F")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    'Ajout des num de regroupement
    Windows("Traitement.xlsm").Activate
    Range("G2").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMPRODUCT(( " & regroupfich & " !Num.sejour=RC[-3])*( " & regroupfich & " !Dt.recept.=RC[-2])*( " & regroupfich & " !No.rum))"