Bonjour tout le monde ,
Je reviens vers vous pour un problème avec une macro que j'ai réaliser pour traiter un certain nombre de fichiers.
La macro :
v_cellule est définie en integer , du coup quand j'arrive à 32767 la macro beug et me met un message d'erreur dépassement de la capacité , hors j'aimerai définir v_cellule en Long comme ça j'ai plus le problème de capacité sauf que je n'y arrive pas car c'est pas compatible avec la déclaration Byref...
Quelqu'un aurait une idée de comment je pourrai modifier la déclaration afin que je puisse traiter les fichiers sans avoir à me soucier de la limite de capacité pour un Iteger et définir v_cellule en Long?
Merci à tout le monde et bonne journée
Je reviens vers vous pour un problème avec une macro que j'ai réaliser pour traiter un certain nombre de fichiers.
La macro :
Code:
Option Explicit
Sub TraiterRepertoire(ByRef nomfic_NIR2 As String, ByRef repertoire_RAF As String, ByRef sauvegarde As String)
'****************************Paramètre du fichier de résultat****************************************************
Dim xlsapp As Object 'Excel.Application
Dim xlsbook As Object 'Excel.Workbook 'Classeur Excel
Dim xlssheet As Object 'Excel.Worksheet 'Feuille Excel
Set xlsapp = CreateObject("Excel.Application")
Set xlsbook = xlsapp.Workbooks.Add
'Protection
If Dir(sauvegarde & "Report.xls") <> "" Then
If MsgBox("Fichier Report.xls existe déjà voulez-vous le supprimer ?", vbYesNo) = vbYes Then
Kill sauvegarde & "Report.xls"
Else
MsgBox "Arrèt de la macro"
End
End If
End If
xlsbook.SaveAs sauvegarde & "Report.xls"
Set xlssheet = xlsbook.Sheets("Feuil1")
Dim i As Integer
i = 1
'****************************Paramètre du fichier de résultat****************************************************
Dim FSO As New FileSystemObject
Dim file_RAF As File
Dim wb_NIR2 As Workbook
Workbooks.OpenText nomfic_NIR2
Set wb_NIR2 = ActiveWorkbook
wb_NIR2.Worksheets(1).Columns(1).NumberFormat = "0"
For Each file_RAF In FSO.GetFolder(repertoire_RAF).Files
'Ajout de deux nouveau paramètre
If UCase(file_RAF.Name) Like "RAF*" Then TraiterFichierRAF wb_NIR2.Worksheets(1), file_RAF, xlssheet, i
Next
wb_NIR2.Close False
'*******************************Fermeture du fichier de résultat
TRI xlsbook
xlsbook.Save
xlsbook.Close
xlsapp.Quit
xlsapp.Workbooks.Open (sauvegarde & "Report.xls") 'Affichage du réultat
xlsapp.Visible = True
Set xlsapp = Nothing
Set xlsbook = Nothing
Set xlssheet = Nothing
'*******************************Fermeture du fichier de résultat
End Sub
Sub TraiterFichierRAF(ws_NIR2 As Worksheet, file_RAF As File, v_newfile As Worksheet, v_cellule As Integer)
Dim synthese As Workbook
Dim ws_synthese As Worksheet
Dim wb_RAF As Workbook
Dim ws_RAF As Worksheet
Dim ws_RAF_resultat As Worksheet
Dim cel_NIS_cherchee As Range
Dim cel_RAF_trouvee As Range
Dim cel_REF_resultat As Range
Dim v_cel_fin As String
Dim ligne As Single
Workbooks.OpenText Filename:=file_RAF.Path
Set wb_RAF = ActiveWorkbook
Set ws_RAF = wb_RAF.Worksheets(1)
Set ws_RAF_resultat = wb_RAF.Worksheets.Add
ws_RAF_resultat.Name = "Resultat"
Set cel_REF_resultat = ws_RAF_resultat.Range("A1")
v_cel_fin = FIND_LAST(ws_NIR2) '.Range("A1")
For Each cel_NIS_cherchee In ws_NIR2.Range("A1:" & v_cel_fin)
Set cel_RAF_trouvee = ws_RAF.Columns(1).Find(cel_NIS_cherchee.Value)
If Not cel_RAF_trouvee Is Nothing Then
Do
cel_REF_resultat.Value = cel_RAF_trouvee.Value
v_newfile.Range("A" & v_cellule) = cel_RAF_trouvee.Value '*******Ecriture dans le nouveau fichier
v_newfile.Range("D" & v_cellule) = SUPP_PATH(file_RAF) '*******Ecriture du fichier RAF
Set cel_REF_resultat = cel_REF_resultat.Offset(1)
Set cel_RAF_trouvee = cel_RAF_trouvee.Offset(1)
ligne = ligne + 1
v_cellule = v_cellule + 1
Loop Until cel_RAF_trouvee.Text Like "S10.G01.00.002*" Or cel_RAF_trouvee.Value = ""
End If
Next
wb_RAF.Close False
End Sub
v_cellule est définie en integer , du coup quand j'arrive à 32767 la macro beug et me met un message d'erreur dépassement de la capacité , hors j'aimerai définir v_cellule en Long comme ça j'ai plus le problème de capacité sauf que je n'y arrive pas car c'est pas compatible avec la déclaration Byref...
Quelqu'un aurait une idée de comment je pourrai modifier la déclaration afin que je puisse traiter les fichiers sans avoir à me soucier de la limite de capacité pour un Iteger et définir v_cellule en Long?
Merci à tout le monde et bonne journée