aide sur une macro ok sous excel 2003 mais plus sous excel 2007

  • Auteur de la discussion pascalus
  • Date de début

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


 

zeb

Modérateur
1. Lire le règlement.
2. Relire le règlement.
3. Modifier le message précédent (Pas le recopier, le modifier. Voir les icônes en haut à droite du message).
4. Se servir des numéros de lignes du code plutôt que de mettre en gras.
5. Préciser le message d'erreur exact.
6. Attendre qu'une bonne âme vienne apporter une solution

Ce message s'autodétruira quand le message précédent sera conforme au règlement.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 847
Membres
1 586 373
Dernier membre
https://forum.tomshardwar
Partager cette page
Haut