macro excel dans un batch.

kamsy

XLDnaute Nouveau
bonjour,
je voudrai automatisé une macro dans un fichier batch
j'utilise excel 2010

je n'ai aucune idée de comment je pourrai faire.
voici mon code
Sub convertisseur()
'
' convertisseur Macro
' convertisseur txt en xls
'

'
ChDir "D:\Envoi_mail"
Workbooks.OpenText Filename:="D:\Envoi_mail\stat_du_mois.txt", Origin:= _
xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, _
1), Array(10, 1), Array(20, 1), Array(30, 1), Array(63, 1), Array(81, 1)), _
TrailingMinusNumbers:=True
Range("D5:D1555").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
ActiveWindow.SmallScroll Down:=-21
ActiveWindow.ScrollRow = 1476
ActiveWindow.ScrollRow = 1349
ActiveWindow.ScrollRow = 1192
ActiveWindow.ScrollRow = 1113
ActiveWindow.ScrollRow = 1031
ActiveWindow.ScrollRow = 942
ActiveWindow.ScrollRow = 878
ActiveWindow.ScrollRow = 857
ActiveWindow.ScrollRow = 788
ActiveWindow.ScrollRow = 734
ActiveWindow.ScrollRow = 717
ActiveWindow.ScrollRow = 686
ActiveWindow.ScrollRow = 640
ActiveWindow.ScrollRow = 581
ActiveWindow.ScrollRow = 527
ActiveWindow.ScrollRow = 479
ActiveWindow.ScrollRow = 438
ActiveWindow.ScrollRow = 415
ActiveWindow.ScrollRow = 397
ActiveWindow.ScrollRow = 389
ActiveWindow.ScrollRow = 339
ActiveWindow.ScrollRow = 287
ActiveWindow.ScrollRow = 252
ActiveWindow.ScrollRow = 239
ActiveWindow.ScrollRow = 208
ActiveWindow.ScrollRow = 196
ActiveWindow.ScrollRow = 134
ActiveWindow.ScrollRow = 75
ActiveWindow.ScrollRow = 34
ActiveWindow.ScrollRow = 26
ActiveWindow.ScrollRow = 14
Selection.NumberFormat = "0.00"
Rows("1:2").Select
Selection.Delete Shift:=xlUp
ActiveWorkbook.SaveAs Filename:="D:\Envoi_mail\stat_du_mois.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
End Sub

Merci pour vos réponse
 

camarchepas

XLDnaute Barbatruc
Re : macro excel dans un batch.

Bonjour ,

Déjà plus court en enlevant les chutes de coupe de l'enregistreur

Ma boule de cristal est en fusion , mais rien n'y fait .....

Bon sérieusement ,
donnes nous un modele de fichier texte et la présentation que tu veux obtenir en Excel ?

un batch peut simplement consister à ouvrir un Excel avec macro autostart qui réalise ce que tu souhaites

Pour le moment c'est cela le mystére ?????


Code:
Sub convertisseur()
 '
 ' convertisseur Macro
 ' convertisseur txt en xls

  Workbooks.OpenText Filename:="D:\Envoi_mail\stat_du_mois.txt", Origin:= _
 xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, _
 1), Array(10, 1), Array(20, 1), Array(30, 1), Array(63, 1), Array(81, 1)), _
 TrailingMinusNumbers:=True
 Range("D51555").Select
 Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
 ReplaceFormat:=False

 Selection.NumberFormat = "0.00"
 Rows("1:2").Select
 Selection.Delete Shift:=xlUp
 ActiveWorkbook.SaveAs Filename:="D:\Envoi_mail\stat_du_mois.xlsx", _
 FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
 ActiveWindow.Close
 End Sub
 

kamsy

XLDnaute Nouveau
Re : macro excel dans un batch.

bonjour Camar et merci de ta réponse

voici les entête que je veux mettre en place

entité | flux | banque | total_montant | total_transaction | total_fichier

il y a 6 colonnes et un nombre de ligne infini
j'ai utilisé le code en faisant l'enregistreur de la macro.
à la base j'ai un fichier Txt que je converti en xls et qui est mon résultat

mon scroll permet de modifé les "." par les ","
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : macro excel dans un batch.

RE ,
et non ,
c'est ici que tu remplaces le . par une ,

ok , moi , je sais mais sans le fichier texte , je peut rien vérifier .

Code:
Range("D51555").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
 

kamsy

XLDnaute Nouveau
Re : macro excel dans un batch.

je sais que c'est difficile de travailler à l'aveugle.
j'ai des données qui sont assez confidentiel et qui porte le nom de certaine entreprise, donc je ne veux pas étaler tout ça.
j'espère que tu comprendras. envoi moi ton email en pv et je t enverrai le fichier si tu veux bien,

je pense que tu as saisie mon problème.
exécuter une macro à l'aide d'un batch et avoir un fichier enregistrer dans un endroit precis en sachant que cette macros sera exécuter tous les mois et donc ecraser le fichier précédent
 

kamsy

XLDnaute Nouveau
Re : macro excel dans un batch.

Travail «*req.Transaction*»*: étape 1, «*Requetetransaction*»*: début d'exécution de 2014-09-30 21:10:55

entité flux banque total_montant total_transaction total_fichier
--------- --------- --------- -------------------------------- ----------------- -------------
societe1 SCT CA 144542.28 39 7
societe1 SCT CIO 599537.77 157 25
societe1 SPAY0030 CIO 131655.82 63 1
societe2 D3200014 BNP 11529.96 2 2
societe2 SCT BNP 858781.31 292 28
societe2 SCT SBCIC 1447538.76 285 13
societe2 VCOM014 SBCIC 2912644.11 528 13
societe3 SCT SG 88082.19 26 6
societe3 V4000066 SG 440304.62 78 6
societe4 SCT BNP 894577.55 18 3
societe4 SCT CIO 29912.85 66 16
societe5 SCT SG 3400867.12 569 48
societe6 SCT CIO 67524.44 7 4
societe6 SCT125 CDN 1130839.32 278 15
societe6 SCT125 CE 1914116.63 249 20

les données sont allignées; ils sont dans un fichier txt. j'ai mis ma macros en place que tu trouveras au début et qui me permet de convertir le txt en xls
il y a , a peu pres 300 lignes
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : macro excel dans un batch.

Donc ,
on part sur le principe que ta macro fonctionne .
pour la faire exécuter toutes les X temps,
Le plus simple est de l'embarquer dans le classeur de synthese dans un module standard,

ensuite dans le module thisworbook tu utilises l'événementiel open , se produisant à l'ouverture du classeur.

Private Sub Workbook_Open()
call convertisseur
End Sub

puis dans windows
Panneu de config,
outil d'administration
planificateur
bibliotheque du planificateur
clic droit sur la fenetre du milieu
créer une nouvelle tâche ,
régler les paramètres dont le déclencheur à X heure X jour

voilà , voilà

Sinon tu peux intégrer la gestion du timer dans le fichier mais cela nécessite de le laisser ouvert. pour cela que j'utilise le planificateur.

Depuis de nombreuses années maintenant , j'ai des quotidiennes qui tournent chaques nuit, et hormi des éléments extérieurs ou des coupures de courant ça marche du tonnerre
 
Dernière édition:

kamsy

XLDnaute Nouveau
Re : macro excel dans un batch.

bonjour,
tout ça c'est bon
ma macro se lance bien
le seul problème c'est qu'il n'enregistre pas mon fichier et le ferme
je sais qu'il me manque quelquechose au niveau :

Private Sub Workbook_Open()
call convertisseur
End Sub
il manque la fonction d'enregistrer et quitter que je ne sais pas interpréter
 

camarchepas

XLDnaute Barbatruc
Re : macro excel dans un batch.

Voici donc ,

puisque la mise en place est bonne.
un autre élément important est de ne pas lancer la macro sur ouverture de consultation.
on peut par exemple sécuriser avec l'heure prévue du traitement

Code:
Private Sub Workbook_Open()

If Time > "08:00" Then exit sub ' PErmet d'ouvrir le classeur sans l'éxécution de la macro
 call convertisseur
 'Fin du traitement,
 If Workbooks.Count > 1 Then
   'Fermeture de ce classeur et sauvegarde si autre classeur
    ThisWorkbook.Close True
  Else
   'Sauvegarde de ce classeur puis fermeture de l'instance Excel si pas d'autre classeur
   ThisWorkbook.Save
   Application.Quit
 End If
End Sub
 

kamsy

XLDnaute Nouveau
Re : macro excel dans un batch.

c'est pas mal,
mais j'ai pas du tout fait comme ça
je lance un batch du genre
c:\programme files\Microsoft office\office14\excel.ext /cmd/nom de ma macro c:\chemin de mon fichier txt. avec une planification donc l'heure et la date ne figure pas du tout sur mon vba.

je vais essayer de prendre des morceaux de ce que tu m'as donner et te tiens au courant
 

Staple1600

XLDnaute Barbatruc
Re : macro excel dans un batch.

Bonsoir à tous

Bonsoir à tous
kamsy (Bienvenue sur le forum)
NB: Tu parles de batch mais je n'en vois pas la queue d'un ici ;)
C'est une macro VBA pas un batch.

je lance un batch du genre
c:\programme files\Microsoft office\office14\excel.ext /cmd/nom de ma macro c:\chemin de mon fichier txt.

Donc finalement, il y a bien un batch;)

Suggestion: un script VBS (ou mieux powershell) ferait aussi l'affaire et se manipule plus facilement avec la planificateur de tâches.
Si intéressé, je peux poster un exemple de VBS (ou powershell) , sinon on en restera au stade de la suggestion ;)

PS: kamsy : tu ne salues jamais les membres du forum qui te souhaitent la bienvenue sur celui-ci (cf mon précédent message) ou tu as simplement zappé mon passage dans ton fil :confused::rolleyes:
 

Statistiques des forums

Discussions
312 211
Messages
2 086 300
Membres
103 173
dernier inscrit
Cerba95