Macro Excel avec exécution d'un .bat

Bonjour,
Mon fichier d'entrée contient 4 rubriques : ville entrée, dep entrée, ville sortie, dep sortie
Ma macro créé un fichier avec 2 lignes.
1er ligne : ville entrée, dep entrée
2ème ligne : ville sortie, dep sortie
Je voudrais pouvoir exécuter un .bat à partir de cette macro Excel. Est-ce possible ? Ce .bat lance une requète avec un autre utilitaire qui me renvoit le kilomètrage entre les 2 villes. En sortie, je dois récupérer un fichier avec toutes les informations du fichier en entrée, plus le kilométrage
Merci de vos idées
Configuration: Windows XP
Internet Explorer 6.0

24 réponses

  1. Contributeur
    bonjour

    Ma macro crée n fichiers qui seront ensuite traités n fois par le .bat

    Il suffit de passer le nom du fichier en paramètre au .bat et lorsque tu crées le fichier tu lances l'exécution dans la même boucle.
    2
    1. Contributeur
      bonjour

      Ta feuille est une feuille créée par copie et si tu as une erreur c'est qu'elle doit déjà être supprimée.

      Soit il faut mettre des contrôles sur les erreurs et c'est assez complexe car il y a beaucoup de cas.

      Soit il est possible de faire une boucle pour parcourir les feuilles et supprimer si elle est présente, c'est plus simple.

      For f = 1 to sheets.count
      if sheet(f).name = "xxxxxxx" then sheet(f).delete
      next f
      0
      1. Comment supprimer une feuille à l'intérieur de la macro :

        Cette ligne me renvoit un message d'erreur .

        'Suppression de la copie SAP ( ) '
        Workbooks("SAP2LOXANE").Sheets("SAP (2)").Delete

        Merci de ton retour d'info
        0
        1. Contributeur
          bonjour

          If test <> 0 Then
          LectureResultats (n) inutile car l'appel suivant fait la même chose
          ' Incrément secondaire pour les résultats
          If LectureResultats(n) <> 0 Then
          ' Gestion de la ligne dans le cas où le résultat Loxane n'est pas bon ( km négatif)
          n = n + 1
          End If
          End If 

          Ta ligne soulignée ne sert à rien car tu fais 2 fois la même chose avec l'appel if...

           If Range("E2") > 0 Then
          LectureResultats = 1
          End If à déplacer 
          
          Selection.Copy
          Workbooks("SAP2LOXANE.xls").Sheets("LOXANE").Activate
          Range("G1").Select
          ActiveSheet.Paste
          
          
          Beep
          
          Worksheets("LOXANE").Cells(i, 1).Value = Left(Worksheets("LOXANE").Cells(1, 11).Value, 2)
          Worksheets("LOXANE").Cells(i, 2).Value = Worksheets("LOXANE").Cells(1, 10).Value
          Worksheets("LOXANE").Cells(i, 3).Value = Left(Worksheets("LOXANE").Cells(2, 11).Value, 2)
          Worksheets("LOXANE").Cells(i, 4).Value = Worksheets("LOXANE").Cells(2, 10).Value
          Worksheets("LOXANE").Cells(i, 5).Value = Worksheets("LOXANE").Cells(1, 7).Value
          
          récupérer tes données ici
          
          Beep
          
          ' Suppression Donnnées source
          Range("G1:K3").Select
          Selection.ClearContents
          
          Workbooks("LOXKM").Sheets("LOXKM").Activate
          Windows("LOXKM").Activate
          
          ' mettre ton "end if" ici
          ActiveWorkbook.Close
          Workbooks("SAP2LOXANE.xls").Sheets("LOXANE").Activate
          
          
          End Function 

          Si j'ai bien compris ton souci...
          @+
          0
          1. Bonjour
            J'ai malheureusement encore un problème. Ma macro crée en sortie le fichier de la feuille Loxane, mais je voudrais récupérer les infos des cellules de la feuille du fichier en entrée qui est dans la feuille SAP.JE pense qu'il me faut faire des modifs au niveau de la lecture des résultats mais il faut tenir compte des fameuses lignes où le calcul et négatif.
            Comment faire ?
            Merci
            Florence

            En entrée : Département départ, Ville Départ, Département Arrivée, Ville Arrivée
            En sortie : reprise des infos du fichier d'entrée + kilométrage calculé

            Sub SAPtoLOXANE()
            '
            ' SAPtoLOXANE
            ' Version : 1.0
            ' Date : 19/11/2007

            ' Blocage des alertes et des fenêtres pop-up
            Application.DisplayAlerts = False

            ' Préparation de la feuille Loxane
            Worksheets("LOXANE").Select
            Cells.Select
            Selection.ClearContents
            Range("A1").Select

            ' Préparation de la feuille de données SAP
            Worksheets("SAP").Select
            Cells.Select
            Application.CutCopyMode = False
            Selection.ClearContents
            Range("A1").Select

            ' Declaration des variables et initialisation
            Worksheets("ListeFichiers").Cells(4, 2).Value = 0 ' Zone de test pour la présence des fichiers
            Dim i, n As Integer
            i = 1
            n = 1
            Dim iMax, fichierResultExist, fichierDataExist, test As Integer
            iMax = 1
            Dim fichierLoxane As String
            fichierLoxane = ""

            ' Chargement des données à partir du fichier SAP
            FindFileData
            testF = Worksheets("ListeFichiers").Cells(4, 2).Value
            If testF <> 0 Then
            ChargerDonneesSAP
            End If

            ' Correction des noms de villes SAP pour reconnaissance par Loxane
            corrigerNomVillesIn

            ' Positionnement pour Traitement des données
            Worksheets("SAP").Select

            ' Boucle principale sur les lignes à triater
            While Worksheets("SAP").Cells(i, 1).Value <> ""

            ' Initialisation du booléeen, existant d'un fichier résultat
            test = 0

            'Copie des données ligne à ligne dans la feuille d'envoi vers Loxane
            Worksheets("Output").Cells(1, 1).Value = "Code_postal"
            Worksheets("Output").Cells(1, 2).Value = "Ville"
            Worksheets("Output").Cells(1, 3).Value = "Code_Pays"
            Worksheets("Output").Cells(2, 1).Value = Worksheets("SAP").Cells(i, 1).Value
            Worksheets("Output").Cells(2, 2).Value = Worksheets("SAP").Cells(i, 2).Value
            Worksheets("Output").Cells(2, 3).Value = "F"
            Worksheets("Output").Cells(3, 1).Value = Worksheets("SAP").Cells(i, 3).Value
            Worksheets("Output").Cells(3, 2).Value = Worksheets("SAP").Cells(i, 4).Value
            Worksheets("Output").Cells(3, 3).Value = "F"

            ' Positionnement avant copie
            Sheets("Output").Select
            Range("A1").Select

            ' Enregistrement dans le fichier de traitement Loxane (fichier LOXVKM)
            EnregLOXVKM
            ' Enregistrement du dossier XLS (conservation de structure)
            ActiveWorkbook.SaveAs Filename:= _
            "D:\Loxane\SAP2LOXANE.xls" _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False

            ' Lancement du calcul par Loxane (copie du fichier data et de la requête)
            ' Copie du fichier requête et du fichier de données à traiter.
            Shell "d:\Loxane\TREQITI.BAT"

            ' Temporisation 5" pour le calcul du serveur Loxane
            newHour = Hour(Now())
            newMinute = Minute(Now())
            newSecond = Second(Now()) + 5
            waitTime = TimeSerial(newHour, newMinute, newSecond)
            Application.Wait waitTime

            ' Chargement des données résultats de Loxane (fichier LOXKM) si existe
            FindFileRes
            test = Worksheets("ListeFichiers").Cells(4, 2).Value

            If test <> 0 Then
            LectureResultats (n)
            ' Incrément secondaire pour les résultats
            If LectureResultats(n) <> 0 Then
            ' Gestion de la ligne dans le cas où le résultat Loxane n'est pas bon ( km négatif)
            n = n + 1
            End If
            End If

            ' Suppression fichier résultat de Loxane après traitement pour ne pas rendre
            ' de faux résultat
            Shell "d:\Loxane\del_res.BAT"

            ' Incrément principal (traitement des lignes demandées par SAP)
            i = i + 1

            Wend

            ' Reprise des noms de ville connus par SAP
            corrigerNomVillesOut

            If testF <> 0 Then
            ' Création d'un fichier pour SAP avec Timestamp
            FileBackToSAP
            ' Passage des fichiers SAP dans le sous-dossier Archive
            Shell "d:\Loxane\arc_sap.BAT"
            End If

            ' Sauvegarde du dossier XLS et fermeture
            ActiveWorkbook.Save

            Application.Quit

            ActiveWorkbook.Close

            End Sub

            Sub corrigerNomVillesIn()

            'Reprise des noms de ville SAP en fonction de la table correction pour acceptation par Loxane

            Worksheets("SAP").Select

            Dim k, l As Integer
            k = 1
            l = 2

            ' Boucle principale sur les noms à corriger
            While Worksheets("SAP").Cells(k, 1).Value <> ""
            'Boucle secondaire sur les corrections connues
            l = 2
            While Worksheets("correction").Cells(l, 1).Value <> ""
            If Worksheets("SAP").Cells(k, 2).Value = Worksheets("correction").Cells(l, 1).Value Then
            Worksheets("SAP").Cells(k, 2).Value = Worksheets("correction").Cells(l, 2).Value
            End If
            If Worksheets("SAP").Cells(k, 4).Value = Worksheets("correction").Cells(l, 1).Value Then
            Worksheets("SAP").Cells(k, 4).Value = Worksheets("correction").Cells(l, 2).Value
            End If
            l = l + 1
            Wend
            k = k + 1
            Wend

            End Sub
            Sub corrigerNomVillesOut()

            'Reprise des noms de ville SAP en fonction de la table correction pour acceptation par Loxane

            Worksheets("LOXANE").Select

            Dim k, l As Integer
            k = 1
            l = 2

            ' Boucle principale sur les noms à corriger
            While Worksheets("LOXANE").Cells(k, 1).Value <> ""
            'Boucle secondaire sur les corrections connues
            l = 2
            While Worksheets("correction").Cells(l, 1).Value <> ""
            If Worksheets("LOXANE").Cells(k, 2).Value = Worksheets("correction").Cells(l, 2).Value Then
            Worksheets("LOXANE").Cells(k, 2).Value = Worksheets("correction").Cells(l, 1).Value
            End If
            If Worksheets("LOXANE").Cells(k, 4).Value = Worksheets("correction").Cells(l, 2).Value Then
            Worksheets("LOXANE").Cells(k, 4).Value = Worksheets("correction").Cells(l, 1).Value
            End If
            l = l + 1
            Wend
            k = k + 1
            Wend

            End Sub

            Function Enreg(i As Integer)

            ' Non utilisée
            Sheets("output").Select

            loxanefichier = "output-" + Str(i)
            ChDir _
            "D:\Loxane"
            ActiveWorkbook.SaveAs Filename:= _
            "D:\Loxane\" + loxanefichier + ".txt" _
            , FileFormat:=xlText, CreateBackup:=False

            ActiveSheet.Select
            ActiveSheet.Name = "output"
            Range("H3").Select

            End Function

            Function EnregLOXVKM()

            ' Enregistrement du fichier de données à traiter pour Loxane

            Sheets("output").Select

            loxanefichier = "LOXVKM"
            ChDir _
            "D:\Loxane"
            ActiveWorkbook.SaveAs Filename:= _
            "D:\Loxane\" + loxanefichier _
            , FileFormat:=xlText, CreateBackup:=False

            ActiveSheet.Select
            ActiveSheet.Name = "output"
            Range("H3").Select

            End Function

            Sub FindFileRes()

            'Test l'existence du fichier résultat de Loxane
            With Application.FileSearch
            .NewSearch
            .LookIn = "d:\loxane\"
            .SearchSubFolders = False
            .Filename = "LOXKM"
            End With

            With Application.FileSearch
            If .Execute() > 0 Then
            Worksheets("ListeFichiers").Cells(4, 2).Value = .FoundFiles.Count
            Else
            Worksheets("ListeFichiers").Cells(4, 2).Value = 0
            End If
            End With

            End Sub

            Sub FindFileData()

            'Test l'existence de fichier(s) source(s) issu(s) de SAP
            With Application.FileSearch
            .NewSearch
            .LookIn = "c:\test\fromSAP"
            .SearchSubFolders = False
            .Filename = "LOXANE*.CSV"
            End With

            With Application.FileSearch
            If .Execute() > 0 Then
            Worksheets("ListeFichiers").Cells(4, 2).Value = .FoundFiles.Count
            Else
            Worksheets("ListeFichiers").Cells(4, 2).Value = 0
            End If
            End With

            End Sub

            Function LectureResultats(i As Integer)

            ' Ouverture du fichier retour de Loxane
            ChDir "D:\Loxane\WayServ\Req"
            Workbooks.OpenText Filename:="D:\Loxane\WayServ\Req\LOXKM", Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
            , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, 2), _
            Array(3, 2), Array(4, 2), Array(5, 2)), TrailingMinusNumbers:=True

            ' Recopie des données
            Windows("LOXKM").Activate
            Range("A1:E2").Select

            'Gestion de la ligne où le résultat Loxane renvoit un km négatif - ne pas prendre en compte
            LectureResultats = 0
            If Range("E2") > 0 Then
            LectureResultats = 1
            End If

            Selection.Copy
            Workbooks("SAP2LOXANE.xls").Sheets("LOXANE").Activate
            Range("G1").Select
            ActiveSheet.Paste

            Beep

            Worksheets("LOXANE").Cells(i, 1).Value = Left(Worksheets("LOXANE").Cells(1, 11).Value, 2)
            Worksheets("LOXANE").Cells(i, 2).Value = Worksheets("LOXANE").Cells(1, 10).Value
            Worksheets("LOXANE").Cells(i, 3).Value = Left(Worksheets("LOXANE").Cells(2, 11).Value, 2)
            Worksheets("LOXANE").Cells(i, 4).Value = Worksheets("LOXANE").Cells(2, 10).Value
            Worksheets("LOXANE").Cells(i, 5).Value = Worksheets("LOXANE").Cells(1, 7).Value

            Beep

            ' Suppression Donnnées source
            Range("G1:K3").Select
            Selection.ClearContents

            Workbooks("LOXKM").Sheets("LOXKM").Activate
            Windows("LOXKM").Activate
            ActiveWorkbook.Close
            Workbooks("SAP2LOXANE.xls").Sheets("LOXANE").Activate

            End Function
            Sub ChargerDonneesSAP()

            'Lister les fichiers à traiter
            ListFile

            'Préparation de la feuille de données SAP
            Worksheets("SAP").Select
            Cells.Select
            Application.CutCopyMode = False
            Selection.ClearContents
            Range("A1").Select

            Application.DisplayAlerts = False

            Dim f, indexLibre As Integer
            f = 6
            indexLibre = 1
            Dim fichierTraite As String

            'Ouverture des fichiers en boucle
            While Worksheets("ListeFichiers").Cells(f, 1).Value <> ""
            fichierTraite = Worksheets("ListeFichiers").Cells(f, 1).Value

            'Positionnement de l'index de position pour copie des nouvelles données
            indexLibre = 1
            While Worksheets("SAP").Cells(indexLibre, 1).Value <> ""
            indexLibre = indexLibre + 1
            Wend

            ChDir "c:\test\fromSAP"

            Workbooks.Open Filename:=fichierTraite
            Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
            Semicolon:=True

            ' Copie des résultats
            Range("A1").Select
            Selection.CurrentRegion.Select
            Selection.Copy

            ' Collage des résultats au niveau de l'index de positionnement
            Workbooks("SAP2LOXANE.xls").Sheets("SAP").Activate
            Cells(indexLibre, 1).Select
            ActiveSheet.Paste

            'Nom du fichier (extrait du chemin complet)
            fg = Dir(fichierTraite)

            ' Fermeture du fichier source
            Workbooks(fg).Activate
            ActiveWorkbook.Close

            ' Sauvegarde du dossier XL
            Workbooks("SAP2LOXANE.xls").Sheets("SAP").Activate
            ActiveWorkbook.Save

            ' Incrément principal
            f = f + 1

            Wend

            End Sub
            Sub ListFile()

            ' Nettoyage de la zone de liste fichiers
            Worksheets("ListeFichiers").Select
            Range("A6:B176").Select
            Selection.ClearContents
            Range("A5").Select

            Dim i As Integer
            With Application.FileSearch
            .NewSearch
            .LookIn = Range("b2") & "\"
            .SearchSubFolders = True
            .Filename = Range("b3").Value
            End With

            With Application.FileSearch
            If .Execute() > 0 Then
            'MsgBox .FoundFiles.Count & " Fichier(s) trouvé(s) "
            Range("A6").Select
            For i = 1 To .FoundFiles.Count
            ActiveCell.Value = .FoundFiles(i)
            ActiveCell.Offset(1, 0).Range("A1").Select
            Next i
            Else
            ' Blocage : pas de fichier trouvé malgré le test initial
            MsgBox "Aucun fichier correspondant à ce critère"
            End If
            Range("A6").Select
            End With

            End Sub
            Sub FileBackToSAP()

            ' Sauvegarde du fichier Timestampé

            Dim FichierPourSAP As String
            FichierPourSAP = "LOXANE_FR_" + Trim(Str(Year(Now()))) + Trim(Str(Month(Now())))
            FichierPourSAP = FichierPourSAP + Trim(Str(Day(Now())))
            FichierPourSAP = FichierPourSAP + "-" + Trim(Str(Hour(Now())))
            FichierPourSAP = FichierPourSAP + Trim(Str(Minute(Now())))
            FichierPourSAP = FichierPourSAP + Trim(Str(Second(Now()))) + ".csv"

            Sheets("LOXANE").Select

            Range("A1").Select

            ChDir _
            "c:\test\toSAP"
            ActiveWorkbook.SaveAs Filename:= _
            "c:\test\toSAP\" + FichierPourSAP _
            , FileFormat:=xlCSV, CreateBackup:=False

            ActiveSheet.Select
            ActiveSheet.Name = "LOXANE"
            Range("H3").Select

            Shell "convertit.bat " & FichierPourSAP & " " & Replace(FichierPourSAP, ".csv", "final.csv")

            End Sub
            0
            1. Bonjour

              Trop super, tout marche. Merci beaucoup.

              Commande Application.Quit utilisée
              Florence
              0
              1. Contributeur
                bonjour

                Comment le fermer ?

                On ne le ferme pas on le quitte...

                Quit, méthode
                
                Cette méthode quitte Microsoft Excel.
                

                0
                1. Oups, j'ai encore une question.
                  Quelle est l'instruction pour fermer Excel
                  J'ai créé une tache schedule, qui lance la macro Excel, mais le classeur reste ouvert.
                  Comment le fermer ?
                  Merci d'avance pour la réponse
                  Florence
                  0
                  1. Je viens de faire le test.
                    Ca marche ;-))))))))))
                    Merci beaucoup pour ton aide précieuse qui m'a enlevée un stress terrible, car la date butoir du fonctionnement en automatique approchait à grands pas.
                    J'ai mis dans le test cela :
                    if LectureResultats(n)<> 0 then n = n + 1

                    Merci à l'auvergne depuis la marne.
                    0
                    1. Contributeur
                      bonjour

                      Dans la fonction
                      LectureResultats = 0
                       If Range("E2") > 0 Then
                      LectureResultats = 1
                      Selection.Copy 

                      Dans l'appel
                      LectureResultats (n)
                      ' Incrément secondaire pour les résultats si présent
                      if LectureResultats<> 0 then  n = n + 1 

                      Cela permet d'avoir un résultat utile à la fonction car tu as en fait utilisé la fonction comme une procédure.
                      0
                      1. Bonjour

                        Voici l'appel de ma fonction Lecture résultat :

                        ' Chargement des données résultats de Loxane (fichier LOXKM) si existe
                        FindFileRes
                        test = Worksheets("ListeFichiers").Cells(4, 2).Value
                        If test <> 0 Then
                        LectureResultats (n)
                        ' Incrément secondaire pour les résultats
                        n = n + 1
                        End If

                        Je ne vois pas comment je peux mettre le test qui me permettrait de ne pas prendre en compte la ligne où le calcul du kilométrage est négatif. Je ne comprends déjà pas la structure de ce code :
                        test = Worksheets("ListeFichiers").Cells(4, 2).Value

                        Merci de ton aide.
                        Florence
                        0
                        1. Contributeur
                          bonjour

                          En fait ce que tu nous donnes comme code ne concerne pas ton problème.

                          Tes données sont mises par la fonction sur la ligne i mais c'est l'appel à la fonction que tu devrais regarder car c'est là qu'il ne faudrait pas faire progresser i.

                          ChDir "D:\Loxane\WayServ\Req"
                          cette ligne est inutile puisque tes chemins sont complets.
                          0
                          1. Bonjour

                            Je vourdrais pouvoir éliminer les lignes où le résultat est négatif. J'ai ajouté le test ( là où il y a ), mais cela m'écrit quand même une ligne mais à blanc. Je ne veux pas de ligne à blanc. je veux que mon fichier résultat ait des lignes qui se suivent.
                            Merci du retour d'info

                            ' Ouverture du fichier retour de Loxane
                            ChDir "D:\Loxane\WayServ\Req"
                            Workbooks.OpenText Filename:="D:\Loxane\WayServ\Req\LOXKM", Origin:=xlWindows, _
                            StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
                            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
                            , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, 2), _
                            Array(3, 2), Array(4, 2), Array(5, 2)), TrailingMinusNumbers:=True

                            ' Recopie des données
                            Windows("LOXKM").Activate
                            Range("A1:E2").Select

                            <gras> If Range("E2") > 0 Then


                            Selection.Copy
                            Workbooks("SAP2LOXANE.xls").Sheets("LOXANE").Activate
                            Range("G1").Select
                            ActiveSheet.Paste

                            Beep

                            Worksheets("LOXANE").Cells(i, 1).Value = Left(Worksheets("LOXANE").Cells(1, 11).Value, 2)
                            Worksheets("LOXANE").Cells(i, 2).Value = Worksheets("LOXANE").Cells(1, 10).Value
                            Worksheets("LOXANE").Cells(i, 3).Value = Left(Worksheets("LOXANE").Cells(2, 11).Value, 2)
                            Worksheets("LOXANE").Cells(i, 4).Value = Worksheets("LOXANE").Cells(2, 10).Value
                            Worksheets("LOXANE").Cells(i, 5).Value = Worksheets("LOXANE").Cells(1, 7).Value

                            Beep

                            End If

                            ' Suppression Donnnées source
                            Range("G1:K3").Select
                            Selection.ClearContents

                            Workbooks("LOXKM").Sheets("LOXKM").Activate
                            Windows("LOXKM").Activate
                            ActiveWorkbook.Close
                            Workbooks("SAP2LOXANE.xls").Sheets("LOXANE").Activate

                            End Function
                            0
                            1. Bonjour,
                              J'ai presque fini, ma macro fonctionne et crée un fichier avec les bonnes zones, mais j'ai été fortement aidée.( Il va falloir que je demande une formation pour comprendre tout ! )Seulement ces zones sont séparées par des carrés, je voudrais que ces zones soient séparées par des ; . comme faire dans la macro ?
                              Merci pour le retour d'info
                              0
                              1. Ne faut-il pas que je mette mon appel au .bat à la création du fichier comme suit; mais avec quel paramètrage derrière TSREQITI.BAT ?

                                Sheets("output").Select

                                loxanefichier = "output-" + Str(i)
                                ChDir _
                                "D:\Loxane"
                                ActiveWorkbook.SaveAs Filename:= _
                                "D:\Loxane\" + loxanefichier + ".txt" _
                                , FileFormat:=xlText, CreateBackup:=False

                                Shell "d:\REQLOX\TSREQITI.BAT"

                                ActiveSheet.Select
                                ActiveSheet.Name = "output"
                                Range("H3").Select
                                0
                                1. La première ligne copie le fichier dans le répertoire REQ pour être traité par CALCUL_ITI.RX (2ème ligne ) qui renvoit un kilométrage.
                                  Il faut ensuite que je récupére ce kilométrage pour le remettre avec le couple de mon fichier qui est en entrée.

                                  L'appel au shell est dans la boucle de création du fichier output- x.txt, mais cela ne fonctionne pas bien. J'ai peut-être mal renseigné mon appel :

                                  Application.DisplayAlerts = False

                                  zFormattageNomVilles

                                  Worksheets("SAP").Select
                                  i = 1
                                  fichierloxane = ""

                                  While Worksheets("SAP").Cells(i, 1).Value <> ""

                                  Worksheets("Output").Cells(2, 1).Value = Worksheets("SAP").Cells(i, 1).Value
                                  Worksheets("Output").Cells(2, 2).Value = Worksheets("SAP").Cells(i, 2).Value
                                  Worksheets("Output").Cells(3, 1).Value = Worksheets("SAP").Cells(i, 3).Value
                                  Worksheets("Output").Cells(3, 2).Value = Worksheets("SAP").Cells(i, 4).Value

                                  Sheets("Output").Select

                                  Range("A1").Select

                                  Enreg (i)

                                  Shell "d:\REQLOX\TSREQITI.BAT i.txt"

                                  i = i + 1

                                  Wend

                                  Et dans mon .Bat :

                                  copy "D:\LOXANE\output- %1" D:\LOXANE\TEST\LOXANET\LOXVKM%1

                                  copy D:\LOXANE\TEST\LOXANET\LOXVKM "D:\LOXANe\WAYSERV\REQ"

                                  copy D:\REQLOX\CALCUL_ITI.RX "D:\LOXANE\WayServ\REQ"

                                  Pas facile pour moi, merci de toutes tes infos et de ton aide.
                                  0
                                  1. Contributeur
                                    bonjour

                                    En fait pour que cela fonctionne, il faudrait tu tu traite en boucle tes fichiers et à chaque fichier créé lancer le .bat.

                                    Pour lancer ton .bat
                                    Shell "d:\LOXANE\REQBAT.BAT x.txt"

                                    Dans le .bat tu ne mets qu'une ligne pour un fichier banalisé

                                    copy "D:\LOXANE\output- %1" D:\LOXANE\TEST\LOXANET\LOXVKM%1

                                    Mais je ne vois pas bien ce que tu veux faire avec les autres lignes ?

                                    copy D:\LOXANE\TEST\LOXANET\LOXVKM "D:\LOXANe\WAYSERV\REQ"
                                    copy D:\REQLOX\CALCUL_ITI.RX "D:\LOXANE\WayServ\REQ"
                                    0
                                    1. Bonjour

                                      J'ai toujours des problèmes avec ma macro excel et le lancement du .bat ( avec paramètres ).
                                      Les fichiers créés par ma macro sont de cette forme : output- x.txt ( x est un incrément )
                                      Je dois lancer un .bat qui va prendre en entrée les fichiers output- x.txt
                                      Je ne sais pas comment passer le fichier en paramètre dans le shell ( dont voici la struture que j'ai mise dans ma macro )

                                      Shell "d:\LOXANE\REQBAT.BAT"

                                      Exemple du .bat : ( 6 correspond au 6ème fichier créé )

                                      copy "D:\LOXANE\output- 6.txt" D:\LOXANE\TEST\LOXANET\LOXVKM.TXT

                                      copy D:\LOXANE\TEST\LOXANET\LOXVKM "D:\LOXANe\WAYSERV\REQ"

                                      copy D:\REQLOX\CALCUL_ITI.RX "D:\LOXANE\WayServ\REQ"

                                      Merci du retour d'info.
                                      0
                                      1. Contributeur
                                        bonjour

                                        Je ne sais comment faire pour mettre la macro en message personne

                                        Tu double cliques sur le pseudo en haut de ce message et sur la nouvelle fenêtre tu choisis "lui écrire un message" puis tu fais un coller de ta macro.
                                        @+
                                        0
                                        1. Bonjour
                                          Merci de toutes tes infos.
                                          Je ne sais comment faire pour mettre la macro en message personnel : c'est la première fois que j'utilise un forum.
                                          Merci
                                          0
                                          • 1
                                          • 2