pascalus
Nouveau membre
bonjour à tous et d'avance merci pour l'aide que vous pourrez m'apporter
j'utilise depuis des années une macro pour transformer un fichier excel en un fichier .dat (pour pouvoir ensuite l'intégrer dans un fichier paye)
seulement voila nous somme spassées sous excel 2007, et la patatra , j'ai un souci , la macro ne fonctionne plus.
est ce que quelqu'un peut me donner un coup de main car je n'arrive pas à comprendre le probleme.
Encore merci en esperant que je suis bien au bon endroit.
je me permets de vous coller la macro , j'ai une demande de debogage et lorsque je fais ok j'ai donc la ligne 62 qui apparait en jaune.
■
Sub InterfaceElementsVariables()
'
' Test Macro
' Macro enregistrée le 22/07/99 par Pierre Le Roux
'
Dim TabPrimes() As Variant
' MonTexte = "Saisir le mois et l'année de traitement sous la forme MMAAAA (ex : 061999)"
' MoisTrt = Application.InputBox(MonTexte)
Partie1 = "371130609"
Blanc2 = Space(2)
Blanc9 = Space(9)
Blanc46 = Space(46)
Blanc1 = Space(1)
Blanc6 = Space(6)
Blanc8 = Space(8)
TT = "TT"
E = "E"
' Ouverture du fichier ICMS
MonFichier = Application.GetOpenFilename _
("Fichiers Personnalisés (*.*),*.* ")
If MonFichier = False Then
GoTo SortieProcedure
End If
Workbooks.Open FileName:=MonFichier
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1))
Workbooks(Workbooks(Workbooks.Count).Name).Activate
NomFenetrePrincipale = ActiveSheet.Name
If Mid(Right(MonFichier, 12), 7, 2) = "99" Then
MoisTrt = Mid(Right(MonFichier, 12), 5, 2) + "19" + Mid(Right(MonFichier, 12), 7, 2)
Else
MoisTrt = Mid(Right(MonFichier, 12), 5, 2) + "20" + Mid(Right(MonFichier, 12), 7, 2)
End If
'Création du tableau croisé dynamique
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
ActiveCell.CurrentRegion, TableDestination:="", TableName:= _
"Tableau croisé dynamique1"
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddFields RowFields:= _
"CREWID", ColumnFields:="SALARY"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("AMOUNT")
.Orientation = xlDataField
.Name = "NB AMOUNT"
.Function = xlCountNums
End With
Cells(3, 1).Activate
RowIndex = 0
NbEnreg = 1
IndexCol = 15
NbPrimes = 0
Do Until ActiveCell.Offset(-1, NbPrimes + 1).Value = "Total"
NbPrimes = NbPrimes + 1
ReDim Preserve TabPrimes(NbPrimes)
TabPrimes(NbPrimes) = ActiveCell.Offset(-1, NbPrimes).Value
Loop
Do Until ActiveCell.Offset(RowIndex, 0).Value = "Total"
Matricule = ActiveCell.Offset(RowIndex, 0).Value
For I = 1 To NbPrimes
Prime = ActiveCell.Offset(RowIndex, I).Value
If Prime > 0 Then
Enreg = Partie1 + Format(Matricule, "00000000") + Blanc2 + Format(TabPrimes(I), "0000") + _
Blanc9 + Format(Prime * 100, "000000000") + Blanc46 + E + Space(9) + _
MoisTrt + Blanc1 + "01" + MoisTrt + "000000" + "01" + MoisTrt + TT
ActiveCell.Offset(NbEnreg - 3, IndexCol).Value = Enreg
NbEnreg = NbEnreg + 1
End If
Next
RowIndex = RowIndex + 1
Loop
Application.DisplayAlerts = False
NbEnreg = 1
NomPrime = "VA" + MoisTrt + ".DAT"
ActiveCell.Offset(NbEnreg - 3, IndexCol).EntireColumn.Select
Selection.Copy
ActiveWorkbook.Worksheets.Add.Name = NomPrime
Sheets(NomPrime).Select
Selection.PasteSpecial Paste:=xlValues, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
ActiveWorkbook.SaveAs FileName:=NomPrime, FileFormat _
:=xlText, CreateBackup:=False
ActiveWindow.SelectedSheets.Delete
' Sheets(NomFenetrePrincipale).Activate
' Cells(NoLigne, NoCol).Select
ActiveWindow.Close
SortieProcedure:
End Sub
■
le but de la macro est de donné en format .dat sur une ligne une information à partir d'un fichier excel
par exemple la ligne excel:
300 600904 ABRIL ANTOINE 19/05/2008 FRA 1762 FORFAIT DE REMPLACEMENT 2727 CTS €
une fois transformé:
37113060900600904 1762 000000100 E 062008 0106200800000001062008TT
encore une fois mes excuses aupres des administrateurs du forum et notamment ZEB,
je n'ai pas de message d'erreur , juste une demande de debogage qui est en fait une erreur :-(
désolé si cela n'est pas clair
j'utilise depuis des années une macro pour transformer un fichier excel en un fichier .dat (pour pouvoir ensuite l'intégrer dans un fichier paye)
seulement voila nous somme spassées sous excel 2007, et la patatra , j'ai un souci , la macro ne fonctionne plus.
est ce que quelqu'un peut me donner un coup de main car je n'arrive pas à comprendre le probleme.
Encore merci en esperant que je suis bien au bon endroit.
je me permets de vous coller la macro , j'ai une demande de debogage et lorsque je fais ok j'ai donc la ligne 62 qui apparait en jaune.
■
Sub InterfaceElementsVariables()
'
' Test Macro
' Macro enregistrée le 22/07/99 par Pierre Le Roux
'
Dim TabPrimes() As Variant
' MonTexte = "Saisir le mois et l'année de traitement sous la forme MMAAAA (ex : 061999)"
' MoisTrt = Application.InputBox(MonTexte)
Partie1 = "371130609"
Blanc2 = Space(2)
Blanc9 = Space(9)
Blanc46 = Space(46)
Blanc1 = Space(1)
Blanc6 = Space(6)
Blanc8 = Space(8)
TT = "TT"
E = "E"
' Ouverture du fichier ICMS
MonFichier = Application.GetOpenFilename _
("Fichiers Personnalisés (*.*),*.* ")
If MonFichier = False Then
GoTo SortieProcedure
End If
Workbooks.Open FileName:=MonFichier
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1))
Workbooks(Workbooks(Workbooks.Count).Name).Activate
NomFenetrePrincipale = ActiveSheet.Name
If Mid(Right(MonFichier, 12), 7, 2) = "99" Then
MoisTrt = Mid(Right(MonFichier, 12), 5, 2) + "19" + Mid(Right(MonFichier, 12), 7, 2)
Else
MoisTrt = Mid(Right(MonFichier, 12), 5, 2) + "20" + Mid(Right(MonFichier, 12), 7, 2)
End If
'Création du tableau croisé dynamique
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
ActiveCell.CurrentRegion, TableDestination:="", TableName:= _
"Tableau croisé dynamique1"
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddFields RowFields:= _
"CREWID", ColumnFields:="SALARY"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("AMOUNT")
.Orientation = xlDataField
.Name = "NB AMOUNT"
.Function = xlCountNums
End With
Cells(3, 1).Activate
RowIndex = 0
NbEnreg = 1
IndexCol = 15
NbPrimes = 0
Do Until ActiveCell.Offset(-1, NbPrimes + 1).Value = "Total"
NbPrimes = NbPrimes + 1
ReDim Preserve TabPrimes(NbPrimes)
TabPrimes(NbPrimes) = ActiveCell.Offset(-1, NbPrimes).Value
Loop
Do Until ActiveCell.Offset(RowIndex, 0).Value = "Total"
Matricule = ActiveCell.Offset(RowIndex, 0).Value
For I = 1 To NbPrimes
Prime = ActiveCell.Offset(RowIndex, I).Value
If Prime > 0 Then
Enreg = Partie1 + Format(Matricule, "00000000") + Blanc2 + Format(TabPrimes(I), "0000") + _
Blanc9 + Format(Prime * 100, "000000000") + Blanc46 + E + Space(9) + _
MoisTrt + Blanc1 + "01" + MoisTrt + "000000" + "01" + MoisTrt + TT
ActiveCell.Offset(NbEnreg - 3, IndexCol).Value = Enreg
NbEnreg = NbEnreg + 1
End If
Next
RowIndex = RowIndex + 1
Loop
Application.DisplayAlerts = False
NbEnreg = 1
NomPrime = "VA" + MoisTrt + ".DAT"
ActiveCell.Offset(NbEnreg - 3, IndexCol).EntireColumn.Select
Selection.Copy
ActiveWorkbook.Worksheets.Add.Name = NomPrime
Sheets(NomPrime).Select
Selection.PasteSpecial Paste:=xlValues, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
ActiveWorkbook.SaveAs FileName:=NomPrime, FileFormat _
:=xlText, CreateBackup:=False
ActiveWindow.SelectedSheets.Delete
' Sheets(NomFenetrePrincipale).Activate
' Cells(NoLigne, NoCol).Select
ActiveWindow.Close
SortieProcedure:
End Sub
■
le but de la macro est de donné en format .dat sur une ligne une information à partir d'un fichier excel
par exemple la ligne excel:
300 600904 ABRIL ANTOINE 19/05/2008 FRA 1762 FORFAIT DE REMPLACEMENT 2727 CTS €
une fois transformé:
37113060900600904 1762 000000100 E 062008 0106200800000001062008TT
encore une fois mes excuses aupres des administrateurs du forum et notamment ZEB,
je n'ai pas de message d'erreur , juste une demande de debogage qui est en fait une erreur :-(
désolé si cela n'est pas clair