Bonjour à Tous,
Suite à une création massive de fichiers xml, nous avons codé un petit programme qui permet de générer plusieurs fichier xml en modifiant certaines valeurs nécessaire au projet, le programme ce termine bien mais un petit message d'erreur fait son apparition "l'indice n'appatient pas à la sélection"
j'ai volontairement effacé le contenu du fichier xml ..![]()
Code:
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 'Fonction permettant de creer le fichier XML à partir de coefSA et du tableau d'idPRM Function creationFichier(coefSA, tableauIdPrm, cheminEnregistrement, nomFichier) As String Dim intFic As String Dim contenu As String Dim i As Long Dim mp As String Dim ld As Date mp = "MAJ_Pas" ld = Date contenu = " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " contenu = contenu & " intFic = FreeFile cheminFichierEnregistrement = cheminEnregistrement & "/" & nomFichier & ".xml" Open cheminFichierEnregistrement For Output As intFic Print #intFic, contenu Close intFic Application.DisplayAlerts = True End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 'Renvoie du nom du fichier Function recuperationFichier() As String Sheets("Feuil1").Select recuperationFichier = ActiveWorkbook.ActiveSheet.Range("B9").Value End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 'Renvoie l'idPRM Function recuperationidPRM() As String Sheets("Feuil1").Select recuperationidPRM = ActiveWorkbook.ActiveSheet.Range("B6").Value End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 'Renvoie le chemin d'enregistrement Function repertoireEnregistrement() As String Sheets("Feuil1").Select repertoireEnregistrement = ActiveWorkbook.ActiveSheet.Range("B7").Value End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 'Renvoie le coefSA Function recuperationCOEFSA() As Long Sheets("Feuil1").Select temp = ActiveWorkbook.ActiveSheet.Range("B8").Value 'recuperationCOEFSA = If (IsNumeric(temp) = False) Then MsgBox ("Le coefSA doit être un nombre") recuperationCOEFSA = False Else recuperationCOEFSA = temp End If End Function
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 'Recopie le fichier d idPRM 'il faut rendre ce chemin variable Sub copieFichierIDPRM(Chemin) Workbooks.Open Filename:=Chemin Columns("A:A").Select Selection.Copy ActiveWorkbook.Close SaveChanges:=False Windows("CreationFichierSC03_V2.xlsm").Activate Sheets("Feuil2").Select Range("A1").Select ActiveSheet.Paste End Sub
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 'Renvoie un tableau contenant les éléments de la colonne A Function arrayIdPrm(coefSA, repertoireE, nomFichier) As Variant 'Définit le type de données pour le tableau. Dim tableauIdPrm() As String Dim i As Long Dim nb As Currency Sheets("Feuil2").Select 'Définit la taille du tableau nb = WorksheetFunction.CountA(Columns("A:A")) 'ReDim tableauIdPrm(nb) 'On insère les données dans le tableau For i = 1 To nb 'tableauIdPrm(i) = Cells(i, 1).Value temp = creationFichier(coefSA, Cells(i, 1).Value, repertoireE, nomFichier & "_" & i) Next 'valeur qu on renvoie arrayIdPrm = tableauIdPrm End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 'verifie que ca marche Sub verif() myarray = arrayIdPrm() 'Boucle sur les éléments du tableau For j = 1 To UBound(myarray) MsgBox myarray(j) Next j End Sub
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 'Fonction appelée une fois qu'on a cliqué sur le bouton Sub debutFonction() Dim j As Long Application.DisplayAlerts = False If Range("B6") = "" Then MsgBox ("Veuillez Choisir un fichier") Exit Sub End If If Range("B7") = "" Then MsgBox ("Veuillez choisir un répertoire") Exit Sub End If If Range("B8") = "" Then MsgBox ("Veuillez saisir Pas Courbe svp") Exit Sub End If If Range("B9") = "" Then MsgBox ("Veuillez saisir un nom de fichier svp") Exit Sub End If 'récupération des valeurs contenues dans la feuille 1 If (recuperationCOEFSA()) Then coefSA = recuperationCOEFSA() Else Exit Sub End If cheminIdPrm = recuperationidPRM() nomFichier = recuperationFichier() repertoireE = repertoireEnregistrement() 'on copie le tableau d'idPRM sur la feuille 2 et on prend les différentes valeurs qu'on met dans le tableau tableauIdPrm copieFichierIDPRM (cheminIdPrm) tableauIdPrm = arrayIdPrm(coefSA, repertoireE, nomFichier) 'on crée le fichier xml For j = 1 To UBound(tableauIdPrm) temp = creationFichier(coefSA, tableauIdPrm(j), repertoireE, nomFichier & "_" & j) Next 'on indique que le fichier est prêt Sheets("Feuil1").Select MsgBox "Le fichier est terminé" End Sub
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 Sub Bouton7_Clic() FileToOpen = Application.GetOpenFilename("Fichiers Excel(*.xlsx), *.xlsx", , "Choisir le fichier à ouvrir") If FileToOpen = False Then MsgBox "Operation annulée", vbExclamation Exit Sub End If Workbooks.Open FileToOpen Workbooks("CreationFichierSC03_V2.xlsm").Activate Range("B6").Select Selection.Value = FileToOpen End SubMerci
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 Sub Bouton9_Clic() Dim objShell As Object, objFolder As Object, oFolderItem As Object Dim Chemin As String Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&) On Error Resume Next Set oFolderItem = objFolder.Items.Item Chemin = oFolderItem.Path Range("B7").Select Selection.Value = Chemin End Sub![]()
Partager