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))"
Partager