Bonjour à tous!
Je suis actuellement en stage dans le cadre de ma 2ème année de BTS Info Gestion Option Développeur.
Je dois 'automatiser' la saisie d'informations dans un fichier excel, recensant toutes les subventions reçues par l'entreprise, leur répartition et leur utilisation.
Ce fichier doit se remplir à partir des fiches info des contrats de subventions.
Le langage imposé est donc VBA (je n'en ai fais qu'une fois quand j'étais en 1ère STG Gestion...)
Dans un premier temps j'ai créé une fonction récupérant tous les noms des fichiers commençant par Fiches Info (stockés dans un tableau à une dimension).
Puis j'ai essayé de mettre le nom des fichiers dans la Colonne 'Contrat' de mon tableur. Lorsque je veux exécuter ma macro ce message d'erreur apparaît :
Erreur de compilation : Incompatibilité de type
(CF ligne en rose dans le code, et variable soulignée)
En espérant que quelqu'un puisse éclairer ma lanterne...
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
52
53
54
55
56
57
58 'Cette fonction récupère les noms de tous les fichiers comportant "Fiche INFO dans leur intitulé Public Function ListeFichier(ByVal maListe As String) As String Set FichierSch = Application.FileSearch With FichierSch 'Dossier dans lequel chercher les fichiers .LookIn = "C:\Users\Akhane\Desktop\STAGE_IG2\excel" 'Extension des fichiers à trouver .Filename = "*.xls" 'Des fichiers on été trouvés If .Execute > 0 Then For compteur = 1 To .FoundFiles.Count 'Si le fichier commence "par Fiche Info" et est de type *.xsl If Left(Right(.FoundFiles(compteur), Len(.FoundFiles(compteur)) - Len(.LookIn)), 21) = "Fiche INFO " Then ReDim Preserve maListe(0 To .FoundFiles.Count) If Not .FoundFiles.Count = 0 Then 'Initialisation du tableau grâce aux noms trouvés maListe [compteur - 1] = .FoundFiles(compteur) End If End If MsgBox (compteur & "fichiers trouvés") Else MsgBox ("pas de fichier excel trouvé") End If End With End Function 'Cette procédure permet de remplir de manière automatique les colonnes liées au nom d un contrat Sub remplirInfosContrat() Dim compteur As Integer Dim k As Integer Dim myTab(2) As String Dim maListe(1) As String 'Initialisation de k k = 0 'Appel de la fonction ListeFichier maListe = Me.ListeFichier(maListe) 'Boucle sur la liste des noms de fichiers For compteur = 0 To UBond(maListe, 1) 'Ouverture du fichier correspondant à l'indice i Workbooks.Open Filename = maListe(i) 'Séparation de la chaîne de caractères comportant le nom du fichier pour ne garder que le nom de l'acteur concerné myTab = Split(maListe(i), "-") 'Affectation de ce nom à la cellule "contrat" Cells(15 + k, 7) = myTab(1) 'incrémentation de k pour passer à la ligne d'en dessous s'il y a un nouveau fichier k = k + 1 Next compteur End Sub
Merci d'avance![]()
Partager