9 : l'indice n'appartient pas à la sélection
Fermé
Denirouu
Messages postés
3
Date d'inscription
lundi 15 juin 2015
Statut
Membre
Dernière intervention
15 juin 2015
-
Modifié par jordane45 le 15/06/2015 à 11:23
Denirouu Messages postés 3 Date d'inscription lundi 15 juin 2015 Statut Membre Dernière intervention 15 juin 2015 - 15 juin 2015 à 17:40
Denirouu Messages postés 3 Date d'inscription lundi 15 juin 2015 Statut Membre Dernière intervention 15 juin 2015 - 15 juin 2015 à 17:40
A voir également:
- 9 : l'indice n'appartient pas à la sélection
- Internet explorer 9 - Télécharger - Navigateurs
- Filmora 9 - Télécharger - Montage & Édition
- Livre catégorie 9 signification ✓ - Forum Loisirs / Divertissements
- Tous les code possible de 0 à 9 (4 chiffres ) - Forum Jeux vidéo
- +33 9 - Forum Mobile
4 réponses
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
15 juin 2015 à 11:26
15 juin 2015 à 11:26
Bonjour,
Il semble que ton message indique que le souci se situe sur ta fonction
Que contient cette fonction ?
As tu vérifié qu'elle fonctionne ?
Que contiennent tes variables DestinationFolder et TabInputs au moment de l'erreur ?
Il semble que ton message indique que le souci se situe sur ta fonction
Call GenerateInputsFiles(DestinationFolder, TabInputs)
Que contient cette fonction ?
As tu vérifié qu'elle fonctionne ?
Que contiennent tes variables DestinationFolder et TabInputs au moment de l'erreur ?
Denirouu
Messages postés
3
Date d'inscription
lundi 15 juin 2015
Statut
Membre
Dernière intervention
15 juin 2015
Modifié par jordane45 le 15/06/2015 à 17:05
Modifié par jordane45 le 15/06/2015 à 17:05
Bonjour Jordane45,
Merci pour ta réponse.
Je teins à te préciser que je suis un novice sur VBA et sur ce Forum.
J'ai hérité de cette macro, je suis en train de faire quelques modifications et de rajouter des fonctions afin qu'elle soit plus adaptée à mon besoin.
Ci-dessous le contenu de la fonction :
Merci.
Denirouu
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
.
Merci pour ta réponse.
Je teins à te préciser que je suis un novice sur VBA et sur ce Forum.
J'ai hérité de cette macro, je suis en train de faire quelques modifications et de rajouter des fonctions afin qu'elle soit plus adaptée à mon besoin.
Ci-dessous le contenu de la fonction :
Public Sub GenerateInputsFiles(DestinationFolder As String, TabInputs As Variant) On Error GoTo errHandler Dim DestFolder As String Dim InputFileName As String Dim WkbInput As Workbook Dim TabDealData As Variant Dim ParamBT As Variant Dim i As Integer Dim j As Integer Dim InputInfo As InputObj Dim InputEnCours As InputObj Dim RowInitialID As Integer Dim SheetName As String Dim InputNb As Integer Dim DealNb As Integer Dim TabInputsAnalyse As Variant Dim TabInputsAnalyse2 As Variant ReDim TabInputsAnalyse(4, -1 To -1) ReDim TabInputsAnalyse2(4, -1 To -1) Dim SH As Worksheet 'Destination contient le répertoire dans lequel il faut générer les fichiers. 'TabInputs contient les données ConduitName/InputType/InputCode/InputName/Paramètres frmMsgTrait.MousePointer = fmMousePointerHourGlass Application.ScreenUpdating = False 'Compteur d'input InputNb = 0 'Compteur de deal par input DealNb = 0 'Pour chaque deal: For j = 0 To UBound(TabInputs, 2) InputInfo.Conduit = TabInputs(0, j) InputInfo.Type = TabInputs(1, j) InputInfo.Name = TabInputs(4, j) InputInfo.Code = IIf(IsNull(TabInputs(2, j)), "", TabInputs(2, j)) InputInfo.Deal = TabInputs(3, j) InputInfo.Param = TabInputs(5, j) & "|" & TabInputs(6, j) 'Recuperer les données du deal TabDealData = GetDealData(DestinationFolder, InputInfo) If IsNull(TabDealData) Then Else If InputEnCours.Conduit & InputEnCours.Type & InputEnCours.Name <> InputInfo.Conduit & InputInfo.Type & InputInfo.Name Then If InputEnCours.Conduit <> "" Then Application.DisplayAlerts = False Sheets("Default Rate (Vasicek) Results").Delete Sheets("Other Inputs Results").Delete Sheets("Deal (Default Rate (Vasicek))").Delete Sheets("Deal (Dilution Rate)").Delete Sheets("Deal (Default Rate STD)").Delete Sheets("Deal (DSO and LHR)").Delete Sheets("Deal (Other Inputs)").Delete Application.DisplayAlerts = True 'Sur la feuille Bilan inserer les lignes pour le deal et mettre les formules dans les bonnes cases Worksheets("Results").Select Call UpdateInputsBilanSheet(InputEnCours.Name) Calculate WkbInput.Save Call UpdateSyntheseScores(DestinationFolder, InputEnCours, TabInputsAnalyse, TabInputsAnalyse2) WkbInput.Close Set WkbInput = Nothing ' Debug.Print Application.MemoryUsed & " + " & Application.MemoryFree & " = " & Application.MemoryTotal ' Call ClearClipboard ' Debug.Print Application.MemoryUsed & " + " & Application.MemoryFree & " = " & Application.MemoryTotal DealNb = 0 End If InputEnCours = InputInfo 'ActualInput = InputInfo.Conduit & InputInfo.Type & InputInfo.Name 'Vérifier l'existance du rep destination 's'il n'existe pas le créér = Destination\ConduitName\ConduitName - InputType DestFolder = DestinationFolder & InputInfo.Conduit If Not PathExists(DestFolder) Then MkDir DestFolder End If DestFolder = DestFolder & "\" & InputInfo.Conduit & " - " & InputInfo.Type If Not PathExists(DestFolder) Then MkDir DestFolder End If DestFolder = DestFolder & "\" 'Ouvrir le classeur template BT -Template inputs.xls Workbooks.Open (ThisWorkbook.Path & "\Templates\BT - Template inputs.xls") 'replacement des caractères interdits dans le nom du fichier InputFileName = Mid(FileBTData, 1, 7) & " - Inputs - " & InputInfo.Conduit & " " & InputInfo.Type & " - " & InputInfo.Name InputFileName = Replace(InputFileName, "/", " ") InputFileName = Replace(InputFileName, "\", " ") InputFileName = Replace(InputFileName, ":", " ") InputFileName = Replace(InputFileName, "*", " ") InputFileName = Replace(InputFileName, "?", " ") InputFileName = Replace(InputFileName, """", " ") InputFileName = Replace(InputFileName, ">", " ") InputFileName = Replace(InputFileName, "<", " ") InputFileName = Replace(InputFileName, "|", " ") InputFileName = DestFolder & InputFileName 'Enregister Sous Destination\ConduitName\ConduitName - InputType\BT - Inputs - ConduitName InputType - InputName.xls Application.DisplayAlerts = False ActiveWorkbook.SaveAs FileName:=InputFileName Application.DisplayAlerts = True Select Case UCase(InputInfo.Name) Case "DEFAULT RATE (VASICEK)" Sheets("Default Rate (Vasicek) Results").Copy Before:=Sheets(1) ActiveSheet.Name = "Results" Case "LHR", "DSO" Sheets("Other Inputs Results").Copy Before:=Sheets(1) ActiveSheet.Name = "Results" Case Else Sheets("Other Inputs Results").Copy Before:=Sheets(1) ActiveSheet.Name = "Results" End Select Call ClearClipboard InputNb = InputNb + 1 MsgTraitLabel2 "En cours : " & Mid(FileBTData, 1, 7) & " - Inputs - " & InputInfo.Conduit & " " & InputInfo.Type & " - " & InputInfo.Name 'Desactiver le mode calcul With Application .Calculation = xlManual .CalculateBeforeSave = False End With Set WkbInput = ActiveWorkbook End If 'Copier la feuille Deal Select Case UCase(InputInfo.Name) Case "DEFAULT RATE (VASICEK)" Sheets("Deal (Default Rate (Vasicek))").Copy After:=Sheets(8) Case "DEFAULT RATE STD DEVIATION" Sheets("Deal (Default Rate STD)").Copy After:=Sheets(8) Case "DILUTION RATE" Sheets("Deal (Dilution Rate)").Copy After:=Sheets(8) Case "LHR", "DSO" Sheets("Deal (DSO and LHR)").Copy After:=Sheets(8) Case Else Sheets("Deal (Other Inputs)").Copy After:=Sheets(8) End Select Call ClearClipboard ' Debug.Print Application.MemoryUsed & " + " & Application.MemoryFree & " = " & Application.MemoryTotal ' Application.CutCopyMode = False ' Debug.Print Application.MemoryUsed & " + " & Application.MemoryFree & " = " & Application.MemoryTotal RowInitialID = 0 'Renommer la feuille avec DealName SheetName = "EnCours" ActiveSheet.Name = SheetName Worksheets(SheetName).Cells(16, 6) = TabDealData(6, 0) Worksheets(SheetName).Cells(25, 1).Select 'Insert les données au bon endroit For i = 0 To UBound(TabDealData, 2) RowInitialID = ActiveCell.Row If CStr(Worksheets(SheetName).Cells(RowInitialID, 1).Value) = CStr(DateAdd("d", -1, CDate("01" & "/" & Month(TabDealData(6, i)) + 1 & "/" & Year(TabDealData(6, i))))) Or CStr(Worksheets(SheetName).Cells(RowInitialID, 1).Value) = "" Then Worksheets(SheetName).Cells(RowInitialID, 1).Value = DateAdd("d", -1, DateAdd("m", 1, CDate("01" & "/" & Month(TabDealData(6, i)) & "/" & Year(TabDealData(6, i))))) Worksheets(SheetName).Cells(RowInitialID, 2).Value = TabDealData(7, i) Worksheets(SheetName).Cells(RowInitialID, 5).Value = TabDealData(8, i) Worksheets(SheetName).Cells(RowInitialID, 1).Select Else While CDate("01" & "/" & Month(ActiveCell) & "/" & Year(ActiveCell)) <> CDate("01" & "/" & Month(TabDealData(6, i)) & "/" & Year(TabDealData(6, i))) RowInitialID = RowInitialID + 1 If RowInitialID > 150 Then Rows(RowInitialID & ":" & RowInitialID).Insert Shift:=xlDown RowInitialID = RowInitialID + 1 End If Worksheets(SheetName).Cells(RowInitialID, 1).Select Worksheets(SheetName).Cells(RowInitialID, 1).Value = DateAdd("d", -1, DateAdd("m", 2, CDate("01" & "/" & Month(Cells(RowInitialID - 1, 1).Value) & "/" & Year(Cells(RowInitialID - 1, 1).Value)))) Wend Worksheets(SheetName).Cells(RowInitialID, 2) = TabDealData(7, i) Worksheets(SheetName).Cells(RowInitialID, 5) = TabDealData(8, i) End If Next i RowInitialID = ActiveCell.Row If RowInitialID < 150 Then Rows(RowInitialID + 1 & ":150").Delete 'Worksheets(SheetName).Range("F25:BN25").AutoFill Destination:=Worksheets(SheetName).Range("F25:BN" & RowInitialID), Type:=xlFillDefault 'Worksheets(SheetName).Range("C25:D25").AutoFill Destination:=Worksheets(SheetName).Range("C25:D" & RowInitialID), Type:=xlFillDefault Worksheets(SheetName).Cells(17, 6) = TabDealData(6, i - 1) If InputInfo.Param <> "" Then ParamBT = Split(InputInfo.Param, "|") 'Cells(15, 3) = ParamBT(0) Worksheets(SheetName).Cells(16, 3) = CDbl(ParamBT(0)) Worksheets(SheetName).Cells(17, 3) = CDbl(ParamBT(1)) End If 'Formatage Worksheets(SheetName).Range("A" & RowInitialID & ":A" & RowInitialID).Borders(xlEdgeBottom).LineStyle = xlContinuous Worksheets(SheetName).Range("AC25:AC" & RowInitialID).Borders(xlInsideVertical).LineStyle = xlNone Worksheets(SheetName).Range("AC25:AC" & RowInitialID).Borders(xlInsideHorizontal).LineStyle = xlNone Worksheets(SheetName).Range("AC" & RowInitialID & ":AC" & RowInitialID).Borders(xlEdgeBottom).LineStyle = xlContinuous If UCase(InputInfo.Name) = "DEFAULT RATE (VASICEK)" Then Worksheets(SheetName).Range("AL25:AL" & RowInitialID).Borders(xlInsideVertical).LineStyle = xlNone Worksheets(SheetName).Range("AL25:AL" & RowInitialID).Borders(xlInsideHorizontal).LineStyle = xlNone Worksheets(SheetName).Range("AL" & RowInitialID & ":AL" & RowInitialID).Borders(xlEdgeBottom).LineStyle = xlContinuous End If Worksheets(SheetName).Range("A1:D1").Select WkbInput.Save Worksheets(SheetName).ChartObjects(1).Activate ActiveChart.ChartTitle.TEXT = InputInfo.Name & " - " & InputInfo.Deal 'Ajout de la donnée « 3 months average » si elle existe Worksheets(SheetName).Cells(25, 1).Select For i = 0 To UBound(TabDealData, 2) RowInitialID = ActiveCell.Row If CStr(Worksheets(SheetName).Cells(RowInitialID, 1).Value) = CStr(DateAdd("d", -1, CDate("01" & "/" & Month(TabDealData(6, i)) + 1 & "/" & Year(TabDealData(6, i))))) Then If TabDealData(9, i) <> "" Then Worksheets(SheetName).Cells(RowInitialID, 3).Value = TabDealData(9, i) Worksheets(SheetName).Cells(RowInitialID, 1).Select Else While CDate("01" & "/" & Month(ActiveCell) & "/" & Year(ActiveCell)) <> CDate("01" & "/" & Month(TabDealData(6, i)) & "/" & Year(TabDealData(6, i))) RowInitialID = RowInitialID + 1 Worksheets(SheetName).Cells(RowInitialID, 1).Select Wend If TabDealData(9, i) <> "" Then Worksheets(SheetName).Cells(RowInitialID, 3) = TabDealData(9, i) Worksheets(SheetName).Cells(RowInitialID, 1).Select End If Next i ActiveSheet.Cells(1, 1).Select Worksheets(SheetName).Name = InputInfo.Code & InputInfo.Deal WkbInput.Save ' Debug.Print Application.MemoryUsed & " + " & Application.MemoryFree & " = " & Application.MemoryTotal ' Application.CutCopyMode = False ' Debug.Print Application.MemoryUsed & " + " & Application.MemoryFree & " = " & Application.MemoryTotal DealNb = DealNb + 1 DoEvents End If Next j Application.DisplayAlerts = False Sheets("Default Rate (Vasicek) Results").Delete Sheets("Other Inputs Results").Delete Sheets("Deal (Default Rate (Vasicek))").Delete Sheets("Deal (Dilution Rate)").Delete Sheets("Deal (Default Rate STD)").Delete Sheets("Deal (DSO and LHR)").Delete Sheets("Deal (Other Inputs)").Delete Application.DisplayAlerts = True 'Sur la feuille Bilan inserer les lignes pour le deal et mettre les formules dans les bonnes cases Worksheets("Results").Select Call UpdateInputsBilanSheet(CStr(TabInputs(4, j - 1))) Calculate WkbInput.Save Call UpdateSyntheseScores(DestinationFolder, InputEnCours, TabInputsAnalyse, TabInputsAnalyse2) WkbInput.Close Call ClearClipboard Set WkbInput = Nothing 'Synthese des inputs Analyses Call UpdateSyntheseAnalyses(DestinationFolder, TabInputsAnalyse, TabInputsAnalyse2) Workbooks(Mid(FileBTData, 1, 7) & " - Inputs Results.xls").Activate For Each SH In Worksheets SH.Activate Cells(1, 1).Select Next Sheets(1).Select ActiveWorkbook.Save Workbooks(Mid(FileBTData, 1, 7) & " - Inputs Results.xls").Close Application.ScreenUpdating = True frmMsgTrait.MousePointer = fmMousePointerArrow Erase TabDealData Erase ParamBT Exit Sub errHandler: Set WkbInput = Nothing Err.Raise Err.Number, "BTInputs:GenerateInputsFiles", Err.Description Application.ScreenUpdating = True End Sub
Merci.
Denirouu
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
.
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
15 juin 2015 à 17:07
15 juin 2015 à 17:07
Il faudrait que tu mettes un point d'arrêt dans ton code ... et que tu le fasses dérouler en mode pas à pas pour essayer de savoir sur quelle ligne il bloque exactement...
Denirouu
Messages postés
3
Date d'inscription
lundi 15 juin 2015
Statut
Membre
Dernière intervention
15 juin 2015
15 juin 2015 à 17:40
15 juin 2015 à 17:40