IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

enregister un fichier résultat dans un répertoire voulu


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 50
    Points : 28
    Points
    28
    Par défaut enregister un fichier résultat dans un répertoire voulu
    Bonjour,

    Grâce au forum, j'ai réussi à pas mal me "dépatouiller", mais là je n'arrive pas à trouver la solution.
    Par l'intermédiaire d'un formulaire, je créé un fichier bactch, mais j'ai dû coder en "dur" le lieu où celui-ci doit être déposé! Or moi, je souhaiterais que ce soit l'utilisateur qui précise à quel endroit il souhaite déposer le fichier résultat.

    J'ai utilisé dans mon code ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Open "C:\temp\7349\export_decoupage_raster_4_chaine4.bat" For Output As #1
    Suis-je clair?

    Cordialement

  2. #2
    Membre averti Avatar de J.Michel
    Inscrit en
    Septembre 2007
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Septembre 2007
    Messages : 279
    Points : 323
    Points
    323
    Par défaut
    Bonjour,

    Tu récupère le nom du fichier dans une variable (via une inputbox ou un formulaire) et tu l'utilises ensuite pour ouvrir ton batch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim MonBatch as String
    MonBatch = InputBox ("Saisir le nom du Fichier")
    Open MonBatch For Output As #1

  3. #3
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    L'ami Ouskel'n'or (salut vieux! ) propose une boîte de sélection de répertoire dans les contributions. Ça devrait t'intéresser.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 50
    Points : 28
    Points
    28
    Par défaut
    J'ai tenté une compilation des 2, je n'ai pas de message d'erreur ce qui est déjà pas mal, mais je n'ai pas la création de mon fichier ".bat".
    Je vous mets ci-dessous ce que j'ai tapé, pour voir si je n'ai pas fait n'importe quoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    Public Sub batch()
     
    Dim Coordxmin As Long
    Dim I As Long
    Dim J As Long
    Dim I2 As Long
    Dim J2 As Long
    Dim Pas As Long
    Dim Pas2 As Long
    Dim Pas3 As Long
    Dim CoordXvalid As Long
    Dim CoordYvalid As Long
    Dim Coordxmax As Long
    Dim Coordymin As Long
    Dim Coordymax As Long
    Dim Gdalcy2 As Long
    Dim Gdalcy1 As Long
    Dim Gdalcx1 As Long
    Dim Gdalcx2 As Long
    Dim X As Integer
    Dim Y As Integer
    Dim T As Variant
    Dim L As Variant
    Dim dossier As Object, Rep As Object, Chemin As String
    Dim MonBatch As String
     
    Dim NomFic, Chaine As String, Chaine2 As String, Chaine3 As String, chaine4 As String
     
    'fonction GDAL
    Const Gdal_translate As String = "gdal_translate -of GTiff -srcwin "
    'taille du pixel en mètre fournit par GDALINFO
     
    'T = 5.805
    T = Range("E2")
    'pas terrain que l'on souhaite avoir pour découpage en mètre
    'L = 10000
    L = Range("D2")
    'coordo en pixel des coins nord ouest et sud est
    'Coordxmin = 530
    Coordxmin = Range("A2")
    'Coordxmax = 13496
    Coordxmax = Range("B2")
    'Coordymin = 551
    Coordymin = Range("C2")
    'Coordymax = 9400
    Coordymax = Range("D2")
    'calcul du pas pour en pixel
    Pas = (L / T)
    I = 0
    J = 0
     
    'calcul du nombre d'itérations nécessaires pour les calculs en appliquant la focntion d'arrondi supérieur
    X = RoundUp((Coordxmax - Coordxmin) / Pas - 1)
    Y = RoundUp((Coordymax - Coordymin) / Pas - 1)
     
    'créer et placer le fichier batch
    'Open "C:\temp\7349\export_decoupage_raster_4_chaine4.bat" For Output As #1
     
    Set dossier = CreateObject("Shell.Application")
     
        'Ouvre la boîte de dialogue "sélection d'un répertoire"
        Set Rep = dossier.BrowseForFolder(&H0&, "Sélectionner un répertoire", &H1&)
     
        If Not Rep Is Nothing Then
            Set Rep = Rep.Items.Item
            Chemin = Rep.Path
            'MsgBox Chemin
     
        End If
       MonBatch = InputBox("Saisir le nom du Fichier")
       MsgBox Chemin & "\" & MonBatch
    Open MonBatch For Output As #1
    'Boucle sur les lignes et colonnes de l'image
    For I = 0 To X
        For J = 0 To Y
            NomFic = Chemin & "_" & MonBatch & "_" & I & "_" & J & "ok.tif"
           ' NomFic = "c:/temp/7349/7349" & "_" & I & "_" & J & "ok.tif"
            'calcul de la nouvelle coordonnée de départ en X
            Gdalcx1 = Coordxmin + I * Pas
     
            'calcul de la nouvelle coordonnée de départ pour Y
            Gdalcy1 = Coordymin + J * Pas
            I2 = Gdalcx1 + Pas
            J2 = Gdalcy1 + Pas
     
                'Condition d'itération, si la valeur de la coord X maximale est supérieure à l'emprise de l'image
                'il faut appliquer un nouveau Pas de calcul, inférieur au pas général. Il faut l'appliquer dans
                'la chaine de concaténation de la formule
     
                If I2 > Coordxmax Then
                     NomFic = Chemin & "_" & MonBatch & "_" & I2 & "_" & J2 & "ok.tif"
                     'NomFic = "c:/temp/7349/7349" & "_" & I2 & "_" & J2 & "ok.tif"
                     CoordXvalid = I2 - Pas
                     Pas2 = Coordxmax - CoordXvalid
     
                        Chaine2 = Gdal_translate & " " & Gdalcx1 & " " & Gdalcy1 & " " & Pas2 & " " & Pas & " " & "-co compress=lzw" & " " & "c:/temp/7349/7349_pal300_caris_gt.tif" & " " & NomFic
     
                'Condition d'itération, si la valeur de la coord Y maximale est supérieure à l'emprise de l'image
                'il faut appliquer un nouveau Pas de calcul, inférieur au pas général. Il faut l'appliquer dans
                'la chaine de concaténation de la formule
     
                ElseIf J2 > Coordymax Then
                     CoordYvalid = J2 - Pas
                     Pas3 = Coordymax - CoordYvalid
     
                        Chaine3 = Gdal_translate & " " & Gdalcx1 & " " & Gdalcy1 & " " & Pas & " " & Pas3 & " " & "-co compress=lzw" & " " & "c:/temp/7349/7349_pal300_caris_gt.tif" & " " & NomFic
     
                End If
     
                'Il ne faut pas oublier le cas, où X et Y sont hors de l'emprise (le coin sud-est), c'est pourquoi
                'il faut spécifier qu'à la fois I2 et J2 sont supérieurs aux max X et Y
                'C'est pourquoi, il est nécessaire d'appliquer le Pas de X inférieur au pas normal et le pas de Y inférieur au pas normal
     
                If I2 > Coordxmax And J2 > Coordymax Then
     
                   chaine4 = Gdal_translate & " " & Gdalcx1 & " " & Gdalcy1 & " " & Pas2 & " " & Pas3 & " " & "-co compress=lzw" & " " & "c:/temp/7349/7349_pal300_caris_gt.tif" & " " & NomFic
     
                End If
    'Condition si, la coordo de départ est hors "cadre" alors il faut que la chaine soit vide, c'est-à-dire non utilisée
     
                Select Case Gdalcx1 + Pas > Coordxmax
     
                    Case Gdalcy1 + Pas > Coordymax
     
                    Chaine = Gdal_translate & " " & Gdalcx1 & " " & Gdalcy1 & " " & Pas & " " & Pas & " " & "-co compress=lzw" & " " & "c:/temp/7349/7349_pal300_caris_gt.tif" & " " & NomFic
     
                    Case Else
     
                    Chaine = ""
     
                End Select
     
         'applique dans le batch les différentes chaines de calcul GDAL
            Print #1, Chaine
           Print #1, Chaine2
          Print #1, Chaine3
        Print #1, chaine4
        'fin des boucles
        Next J
    Next I
     
    'ferme le fichier batch
    Close #1
     
    End Sub
    En espérant que ce soit clair!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lister des fichiers contenus dans un répertoire
    Par mithrendil dans le forum Langage
    Réponses: 5
    Dernier message: 01/05/2007, 09h27
  2. Excel - Lister fichiers présents dans un répertoire
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/11/2006, 13h24
  3. [Débutant] Lire plusieurs fichiers txt dans un répertoire
    Par leneuf dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 03/10/2006, 12h39
  4. Réponses: 6
    Dernier message: 14/06/2006, 16h55
  5. [FPDF] créer un fichier PDF dans le répertoire courant
    Par patdez dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/10/2005, 15h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo