Macro Batch + Autoexec
Bonjour le forum,
J'aurais besoin d'un conseil sur la faisabilité de la chose suivante:
Est il possible de créer une macro qui me lance un batch, le batch lui lancerai un script shell (traitement sed - grep via CYGWIN sur Windows 8) ?
dit d'une autre façon: exécuté un script shell Cygwin via excel (j'ai pensé à autoexec ou autopen...) en passant par une tâche planifiée ou autres...
Un peu dans le style de ce topic:
http://www.commentcamarche.net/forum/affich-3907285-vba-lance-un-bat-qui-lance-un-init
Toutes autres manière de faire est la bienvenue.
Merci pour votre aide :)
ps: je sais c'est peut-être bizarre comme question ^_^
J'aurais besoin d'un conseil sur la faisabilité de la chose suivante:
Est il possible de créer une macro qui me lance un batch, le batch lui lancerai un script shell (traitement sed - grep via CYGWIN sur Windows 8) ?
dit d'une autre façon: exécuté un script shell Cygwin via excel (j'ai pensé à autoexec ou autopen...) en passant par une tâche planifiée ou autres...
Un peu dans le style de ce topic:
http://www.commentcamarche.net/forum/affich-3907285-vba-lance-un-bat-qui-lance-un-init
Toutes autres manière de faire est la bienvenue.
Merci pour votre aide :)
ps: je sais c'est peut-être bizarre comme question ^_^
36 réponses
Résumé de la discussion
La problématique est de savoir s’il est possible de créer une macro qui lance un batch appelant un script shell Cygwin sous Windows 8 à partir d’Excel. Des réponses décrivent notamment une macro qui exécute le batch contenant des commandes Cygwin, et montrent que le script bash peut être démarré via batch depuis Excel, parfois avec Bash --login -i. En pratique, Autoexec ou AutoOpen ne sont plus les méthodes privilégiées sous Office 2010, et des solutions s’appuient sur une tâche planifiée ou sur ThisWorkbook_Open pour coordonner le lancement et la fin du script.
-
Bonjour,
je regarde cela et test pour vous faire un retour.
Merci beaucoup !
++ -
Bonjour,
Si donnees coherantes: avec une adaptation possible suivant ces donnees
un exemple de code de recherche:
' Ecriture numero appele dans test colonne F ' '¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ 'r = Cells(65536, 1).End(xlUp).Row 'recuperation de la derniere cellule non vide de la colonne A excel 2003 'r2 = Cells(65536, 2).End(xlUp).Row 'recuperation de la derniere cellule non vide de la colonne B excel 2003 '¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ Sub Cherche() Dim derlig, derlig1, NbId, plage As Range, plage1 As Range, cel As Range, cel1 As Range Dim val, val1, Idx With Worksheets("fcidfinal") 'derniere ligne fcifinal colonne A derlig = .Range("A" & Rows.Count).End(xlUp).Row 'derniere ligne test colonne A derlig1 = Worksheets("test").Range("A" & Rows.Count).End(xlUp).Row 'Definition en memoire plage de recherche fcidfinal Set plage = .Range("E2:E" & derlig) 'Definition en memoire plage de recherche test Set plage1 = Worksheets("test").Range("A2:A" & derlig) For Each cel In plage 'balayage fcidfinal de la colonne A val = cel 'test si existe dans plage feuil test NbId = Application.CountIf(plage1, val) 'Existe?? If NbId > 0 Then ligtest = 1 With Worksheets("test") For Idx = 1 To NbId 'Recherche valeur exacte ligtest = .Columns("A").Find(val, .Cells(ligtest, "A"), , xlWhole).Row 'Ecriture temps connex fcidfinal colonne D vers test colonne F .Cells(ligtest, 6) = Worksheets("fcidfinal").Cells(cel.Row, 4) Next Idx End With End If 'NbId Next cel End With 'fcidfinal End Sub
Si cela est posible, il faudrait vous entretenir avec la personne qui gere l'ustensil qui genere votre fichier de donnees, car il y a des "anormalites" surprenantes et peut-etre que ce fichier est parametrable. Ca vous aiderait beaucoup.
A+
A+ -
Re
ce que j'ai fourni comme "code" c'est plutôt un pseudo code de mon problème et appliquer sur une feuille (en réalité mon rechercheV doit se faire sur mes 2 feuilles.)
J'ai essayer de traduire mon rechercheV en VB.....
Val1 et Val2 sont des exemples (Val1: ID et Val2: contenu de la cellule en face d'ID)
Ça se trouve c'est totalement faux... J'ai découvert le VB la semaine dernière.
et je ne sais pas du tout comment m'y prendre -
Re,
(recherche dans une feuille) laquelle??
D'ou sortez-vous val1 et val2 !!!!!!! -
Re,
en admettant que les données soient cohérentes, ça donnerait quoi en code ?
j'ai fait cela (avec mon zéro de connaissance en vb), en simplifiant mon problème (recherche dans une feuille) ...
Sub Cherche() Dim val1, val2, resultc Dim r, r2, ra, rd Dim cell, cell2 rd = 1 r = Cells(65536, 1).End(xlUp).Row 'recuperation de la derniere cellule non vide de la colonne A r2 = Cells(65536, 2).End(xlUp).Row 'recuperation de la derniere cellule non vide de la colonne B For Each cell In Range(Cells(1, 1), Cells(r, 1)) 'balayage de la colonne A If cell.Value = val1 Then 'si on trouve la 1ère valeur on récupére son n° de ligne ra = cell.Row For Each cell2 In Range(Cells(ra, 2), Cells(r, 2)) 'balayage de la colonne B If cell2.Value = val2 Then 'si on retrouve la 2nde valeur resultc = cell2.Offset(0, 1).Value 'on stock la valeur de la cellule de la colonne C sur la ligne 'où a été trouvé la seconde valeur Cells(rd, 4).Value = resultc ' rd = rd + 1 End If Next cell2 End If Next cell End Sub
Merci
++ -
Re,
Faire ce que vous demandez est tres simple, mais il faut que les donnees soient coherantes, sinon c'est portnawak.
A+ -
Bonjour,
c'est pas faux pour la correspondance... je vais me pencher dessus
Mais est ce que ma boucle rechercheV est faisable ? Parce que je ne vois pas du tout comment faire ....
Merci ! -
Bonjour,
Je suis desole, mais pour moi ca ne colle pas.
ci-joint un fichier avec les donnees de test et fcifinal
https://www.cjoint.com/?CBnh2T6zbwX
Vous avez des appelants et appeles dans la meme colonne (test)!!!!!!!
A+ -
Re,
manquerais plus que ça me dérange.... alors que vous proposer de m'aider ^^
ça marche, n'hésitez pas si vous avez des questions, ou besoin de précisions ...
Bonne après-midi ! -
Re,
Ok, je regarde cela pour demain matin, si cela ne vous derange pas.
A+ -
ok j'essaye de faire simple et clair ^^
créer une boucle sur rechercheV en vb,
faire ça:=RECHERCHEV($A$2;test1;2;FAUX)
mais en me parcourant toute la colonne A, et en me mettant le résultat en face de chaque ID dans la colonne F.
Algo:
tant que ID en $A$2.test trouvé dans Feuil1
affiché (a coté du temps) en $F$2.test le N° source correspondant à l'id (contenu dans Feuil1 et test)
si plus ID($A$2).feuil1 dans test
passé a l'ID.Feuil1 suivant et refaire une boucle rechercheV.
pour au final avoir dans colonne(F.TEST) le numéro appelé par la source(colonneC.test)
ca fait un récap pour avoir, date | heure | source | destination | temps d'appel
j'espère avoir été clair !
Merci pour l'aide apportée ! :) -
Re,
Admettons que votre tri soit exacte, repetez ce que vous voulez voir trier par Id
SVP
Merci
A+ -
Re,
1/
dans les lignes calllegtype il y a a la fin des connectTime et disconnectTime (je calcule la dessus) et fait la correspondance grâce a l'ID
je récupère les logs comme cela (je fait un traitement "cat" pour supprimer les doublons, avec cygwin)
le fichier sans doublons:
http://cjoint.com/?3BmlO04gW2c
++ -
Re,
1/ c'est de ces lignes dont je parles.
Pourquoi les lignes sont en doubles dans le fichier que vous avez mis a dispo
Pourriez-vous en remettre un a dispo en le compressant?? -
Bonjour,
1/
pour les temps de co et déco je ne me sers pas de toutes les lignes, mais seulement celles avec feat_VSA=TWC (appel décroché) et callLegtype
L'ID me permet d'identifier l'appel correspondant etde faire la corrélation entre les données qui m'intéressent entre les 2 types de lignes.
pour l'anomalie fcidfinal je m'en suis rendu compte, c'est moi qui est mal nommée ma colonne en test.
++ -
Bonjour,
1/
ce qui me parait surprenant, c'est que vous ayez determine des temps conex/deconex avec des enregistrements qui sont supposes etre ranges par ordre croissant (li y a un numero d'ordre: ex 64740: 066866), mais ou les temps ne sont pas en ordre croissant
2/
Il y a une anomalie: l'appelant fcidfinal devient destination en feuil test!!!!!!!
A+ -
Bonjour,
ca donnerait quoi en code, pour faire une boucle sur une rechercheV a affiché dans test ?
tant que ID en $A$2.test trouvé dans Feuil1
affiché (a coté du temps) en F2.test le N° source correspondant a l'id (contenu dans Feuil1 et test)
si plus ID
passé a l'ID suivant et refaire une boucle rechercheV.
j'espère avoir été clair !
Merci -
Re,
ça marche !
bon courage pour la "lecture"....
++ -
Re,
J'ai recupere le fichier, je regarde la chose.
A+ -
Re,
c'est quelque peu indigeste a lire sans traitement ...
http://cjoint.com/?3BloaPMzQr3
merci !
- 1
- 2
Suivant