Définition de commande macro - Page 2

Résolu
  • Votes
  • Date
  • Date décroissante
  1. Heu ben la c'est balaise j'comprend pas grand chose à ton script mais le problème n'est pas là j'essaierai de voir plus claire prochainement.

    Que dois je faire du contenu de ma macro je conserve ou pas.

    Dans ton script tu met un End Sub mais y a pas de Sub je pense que c'est un oublie

    Donc dans l'hypothèse que je ne garde pas le contenu de ma macro cela veut dire que je fais un copier coller des lignes en gras à la place de ma macro et que je coche "microsoft scripting runtime"

    Puis

    j'enregistre ma macro.

    Je lance excel j'ouvre mon fichier excel et j'active la nouvelle macro à la fin de la procédure je dois avoir un fichier sous C: qui ce nomme export.csv c'est bien ça?
    1. Message pour NicoDisso,

      Ecoute en insistant un peut je te confirme que ton script fonctionne à merveille.
      Par contre j'ai juste a déclarer des colonnes en plus puisque je dois avoir de la colonne A à R je vais essayer de faire la modification de mon coté je te tiens au courant.

      Merci beaucoup A+
      1. pour ce qui est du dernier "end sub", il correspond à "Public Sub Export()"

        pour ce qui est du reste, tu remplaces effetcivement ta macro par tout le texte en gras et ça roule.

        Pour ce qui est des colonnes, effectivement tu en déclares 8 de plus et par contre tu modifies également la boucle des J qui parcoure les colonnes afin qu'elle devienne

        Do Until ActiveSheet.Cells(I, 1).Value = ""
        For J = 1 To 18
        Select Case J
        Case 1
        Colonne_A = ActiveSheet.Cells(I, J).Value

        sinon tu ne va exporter que les 10 premieres colonnes.

        Au moins, j'espere que tu comprends ce que cela fait afin que tu puisse réexploiter cela plus tard si besoin...

        Au fait, mois je mettrai cette macro dans mon classeru perso avec un bouton personnalisé afin d'avoir juste à cliquer sur le bouton lorsque je veux la mettre en marche depuis le fichier importé...
        1. ok si je comprend bien le passage suivant est une boucle c'est bien ça

          Do Until ActiveSheet.Cells(I, 1).Value = ""
          For J = 1 To 18
          Select Case J
          Case 1
          Colonne_A = ActiveSheet.Cells(I, J).Value

          merci je vais mettre à jour ma macro et je te tiens au courant

          A+
          1. en fait

            Do Until ActiveSheet.Cells(I, 1).Value = "" => jusqu'a ce qu'il trouve un cellule en colonne A qui soit vide
            For J = 1 To 10 => boucle pour chaque colonne
            Select Case J
            Case 1 => suivant la colonne traite le contenu differement
            Colonne_A = ActiveSheet.Cells(I, J).Value => mets dan sla variable colonne_A le contenu de la cellule qui correspond à la ligne et à la colonne

            du coup comme tu rajoutes des colonnes à exporter, il faut que ta boucle parcoure + de 10 colonnes
            1. Super ça marche Nickel je vois un peut plus claire sur le fonctionnement du script.

              J'aurai peut-être encore un ptit peut besoin de toi pour la procédure il faut que je l'affine par rapport au besoin je te tiens au courant.

              Et encore un grand merci et chapeau pour la technique.

              Bonne soirée et bon Week-end

              A+
              1. de rien,
                bon week end à toi aussi, il faudra juste voter pour les messages. Je ne sais pas à quoi ca sert, mais si il y en qui ont besoin d'info, ça peut etre bien..
                1. Bonjour NicoDisco,

                  J'aurai une petite question à propos de l'inputbox

                  Lorsque l'inputbox s'active il y a ouverture d'une boîte de dialogue qui contient par exemple une question.

                  Exemple de question:

                  Indiquez la date du jour au format JJMMAA

                  Ce champ et récupérer à travers une variable pour divers opérations de la macro.

                  Ma question :

                  Dans cette même boîte de dialogue est-il possible de poser 2 questions en sachant que les réponses seront chargées dans deux variables différentes?

                  Exemple :

                  La date du jour JJMMAA
                  et
                  Le Nom du Fichier

                  Merci d'avance pour ton aide
              2. tu peux le faire à condition de dire à l'utilisateur de séparer les données qu'il saisit par un charactere spécial style "|"
                du coup avec la fonction split tu generes un tableau dont les données sont séparées par ton charactère.

                ex : toto | titi
                variable 1 = toto
                variable 2 = titi

                moi, je prefere faire une userform avec les champs qui vont bien, c'est plus sur car tu peux tester lors de la saisie et autorisé ou non la validation
                1. Bonjour,
                  Je souhaite utilisé cette macro Excel==>csv avec 30 colonnes.
                  J'ai réussi en en transferer 28 avec le code si dessous. Mais je n'arrive pas à ecrire les deux dernière sur la ligne qui commence par : Print #1,
                  Pouvez-vous m'aider ?
                  Merci d'avance
                  Patrick

                  Option Explicit

                  Dim Fso As FileSystemObject
                  'DETAIL DE L'ADRESS
                  Type Export_csv
                  Colonne_A As String
                  Colonne_B As String
                  Colonne_C As String
                  Colonne_D As String
                  Colonne_E As String
                  Colonne_F As String
                  Colonne_G As String
                  Colonne_H As String
                  Colonne_I As String
                  Colonne_J As String
                  Colonne_K As String
                  Colonne_L As String
                  Colonne_M As String
                  Colonne_N As String
                  Colonne_O As String
                  Colonne_P As String
                  Colonne_Q As String
                  Colonne_R As String
                  Colonne_S As String
                  Colonne_T As String
                  Colonne_U As String
                  Colonne_V As String
                  Colonne_W As String
                  Colonne_X As String
                  Colonne_Y As String
                  Colonne_Z As String
                  Colonne_AA As String
                  Colonne_AB As String
                  Colonne_AC As String
                  Colonne_AD As String
                  End Type

                  'DETAIL DU FICHIER
                  Public Detail_Export_csv As Export_csv

                  'EMPLACEMENT DU FICHIER A CREER
                  Public Emplacement_Fichier As String
                  Private Function Ecriture_Entete() As Boolean
                  'Dim J, NombreLignes As Integer
                  Dim str, nom_fichier, Chemin As String
                  Dim f, fs

                  Set Fso = New FileSystemObject

                  Chemin = ThisWorkbook.Path & "\"
                  ' Code
                  Sheets("cartoexploreur").Select
                  On Error Resume Next
                  Set fs = CreateObject("Scripting.FileSystemObject")
                  ' On crée le fichier
                  Sheets("BD").Select
                  Emplacement_Fichier = Chemin + ActiveSheet.Cells(1, 27).Text

                  Sheets("cartoexploreur").Select
                  On Error Resume Next
                  If Fso.FileExists(Emplacement_Fichier) = True Then
                  Fso.DeleteFile Emplacement_Fichier, True
                  End If
                  On Error GoTo 0

                  Set Fso = Nothing

                  On Error Resume Next
                  Open Emplacement_Fichier For Output As #1
                  Select Case Err.Number
                  Case Is = 0
                  Ecriture_Entete = True
                  Case 71
                  MsgBox "Le support n'est pas accessible.", vbExclamation, "Message"
                  Ecriture_Entete = False
                  Case Else
                  MsgBox Err.Description, vbExclamation, "Message"
                  Ecriture_Entete = False
                  End Select
                  On Error GoTo 0

                  End Function

                  Private Function Ecriture_Detail(Colonne_A As String, Colonne_B As String, Colonne_C As String, Colonne_D As String, Colonne_E As String, Colonne_F As String, Colonne_G As String, Colonne_H As String, Colonne_I As String, Colonne_J As String, Colonne_K As String, Colonne_L As String, Colonne_M As String, Colonne_N As String, Colonne_O As String, Colonne_P As String, Colonne_Q As String, Colonne_R As String, Colonne_S As String, Colonne_T As String, Colonne_U As String, Colonne_V As String, Colonne_W As String, Colonne_X As String, Colonne_Y As String, Colonne_Z As String, Colonne_AA As String, Colonne_AB As String, Colonne_AC As String, Colonne_AD As String) As Boolean
                  Ecriture_Detail = False

                  Detail_Export_csv.Colonne_A = Colonne_A
                  Detail_Export_csv.Colonne_B = Colonne_B
                  Detail_Export_csv.Colonne_C = Colonne_C
                  Detail_Export_csv.Colonne_D = Colonne_D
                  Detail_Export_csv.Colonne_E = Colonne_E
                  Detail_Export_csv.Colonne_F = Colonne_F
                  Detail_Export_csv.Colonne_G = Colonne_G
                  Detail_Export_csv.Colonne_H = Colonne_H
                  Detail_Export_csv.Colonne_I = Colonne_I
                  Detail_Export_csv.Colonne_J = Colonne_J
                  Detail_Export_csv.Colonne_K = Colonne_K
                  Detail_Export_csv.Colonne_L = Colonne_L
                  Detail_Export_csv.Colonne_M = Colonne_M
                  Detail_Export_csv.Colonne_N = Colonne_N
                  Detail_Export_csv.Colonne_O = Colonne_O
                  Detail_Export_csv.Colonne_P = Colonne_P
                  Detail_Export_csv.Colonne_Q = Colonne_Q
                  Detail_Export_csv.Colonne_R = Colonne_R
                  Detail_Export_csv.Colonne_S = Colonne_S
                  Detail_Export_csv.Colonne_T = Colonne_T
                  Detail_Export_csv.Colonne_U = Colonne_U
                  Detail_Export_csv.Colonne_V = Colonne_V
                  Detail_Export_csv.Colonne_W = Colonne_W
                  Detail_Export_csv.Colonne_X = Colonne_X
                  Detail_Export_csv.Colonne_Y = Colonne_Y
                  Detail_Export_csv.Colonne_Z = Colonne_Z
                  Detail_Export_csv.Colonne_AA = Colonne_AA
                  Detail_Export_csv.Colonne_AB = Colonne_AB
                  Detail_Export_csv.Colonne_AC = Colonne_AC
                  Detail_Export_csv.Colonne_AD = Colonne_AD

                  On Error Resume Next
                  Print #1, Detail_Export_csv.Colonne_A & ";" & Detail_Export_csv.Colonne_B & ";" & Detail_Export_csv.Colonne_C & ";" & Detail_Export_csv.Colonne_D & ";" & Detail_Export_csv.Colonne_E & ";" & Detail_Export_csv.Colonne_F & ";" & Detail_Export_csv.Colonne_G & ";" & Detail_Export_csv.Colonne_H & ";" & Detail_Export_csv.Colonne_I & ";" & Detail_Export_csv.Colonne_J
                  Print #1, Detail_Export_csv.Colonne_K & ";" & Detail_Export_csv.Colonne_L & ";" & Detail_Export_csv.Colonne_M & ";" & Detail_Export_csv.Colonne_N & ";" & Detail_Export_csv.Colonne_O & ";" & Detail_Export_csv.Colonne_P & ";" & Detail_Export_csv.Colonne_Q & ";" & Detail_Export_csv.Colonne_R & ";" & Detail_Export_csv.Colonne_S & ";" & Detail_Export_csv.Colonne_T
                  Print #1, Detail_Export_csv.Colonne_U & ";" & Detail_Export_csv.Colonne_V & ";" & Detail_Export_csv.Colonne_W & ";" & Detail_Export_csv.Colonne_X & ";" & Detail_Export_csv.Colonne_Y & ";" & Detail_Export_csv.Colonne_Z & ";" & Detail_Export_csv.Colonne_AA & ";" & Detail_Export_csv.Colonne_AB & ";" & Detail_Export_csv.Colonne_AC & ";" & Detail_Export_csv.Colonne_AD

                  If Err.Number = 0 Then
                  Ecriture_Detail = True
                  Else
                  Ecriture_Detail = False
                  End If
                  On Error GoTo 0

                  End Function

                  Private Sub Ecriture_Fin()

                  Close #1

                  End Sub

                  Public Sub Export()

                  Call Ecriture_Entete

                  Dim Colonne_A As String
                  Dim Colonne_B As String
                  Dim Colonne_C As String
                  Dim Colonne_D As String
                  Dim Colonne_E As String
                  Dim Colonne_F As String
                  Dim Colonne_G As String
                  Dim Colonne_H As String
                  Dim Colonne_I As String
                  Dim Colonne_J As String
                  Dim Colonne_K As String
                  Dim Colonne_L As String
                  Dim Colonne_M As String
                  Dim Colonne_N As String
                  Dim Colonne_O As String
                  Dim Colonne_P As String
                  Dim Colonne_Q As String
                  Dim Colonne_R As String
                  Dim Colonne_S As String
                  Dim Colonne_T As String
                  Dim Colonne_U As String
                  Dim Colonne_V As String
                  Dim Colonne_W As String
                  Dim Colonne_X As String
                  Dim Colonne_Y As String
                  Dim Colonne_Z As String
                  Dim Colonne_AA As String
                  Dim Colonne_AB As String
                  Dim Colonne_AC As String
                  Dim Colonne_AD As String

                  Dim I As Integer
                  Dim J As Integer

                  I = 1

                  Do Until ActiveSheet.Cells(I, 1).Value = ""
                  For J = 1 To 30
                  Select Case J
                  Case 1
                  Colonne_A = ActiveSheet.Cells(I, J).Value
                  Case 2
                  Colonne_B = ActiveSheet.Cells(I, J).Value
                  Case 3
                  Colonne_C = ActiveSheet.Cells(I, J).Value
                  Case 4
                  Colonne_D = ActiveSheet.Cells(I, J).Value
                  Case 5
                  Colonne_E = ActiveSheet.Cells(I, J).Value
                  Case 6
                  Colonne_F = ActiveSheet.Cells(I, J).Value
                  Case 7
                  Colonne_G = ActiveSheet.Cells(I, J).Value
                  Case 8
                  Colonne_H = ActiveSheet.Cells(I, J).Value
                  Case 9
                  Colonne_I = ActiveSheet.Cells(I, J).Value
                  Case 10
                  Colonne_J = ActiveSheet.Cells(I, J).Value
                  Case 11
                  Colonne_K = ActiveSheet.Cells(I, J).Value
                  Case 12
                  Colonne_L = ActiveSheet.Cells(I, J).Value
                  Case 13
                  Colonne_M = ActiveSheet.Cells(I, J).Value
                  Case 14
                  Colonne_N = ActiveSheet.Cells(I, J).Value
                  Case 15
                  Colonne_O = ActiveSheet.Cells(I, J).Value
                  Case 16
                  Colonne_P = ActiveSheet.Cells(I, J).Value
                  Case 17
                  Colonne_Q = ActiveSheet.Cells(I, J).Value
                  Case 18
                  Colonne_R = ActiveSheet.Cells(I, J).Value
                  Case 19
                  Colonne_S = ActiveSheet.Cells(I, J).Value
                  Case 20
                  Colonne_T = ActiveSheet.Cells(I, J).Value
                  Case 21
                  Colonne_U = ActiveSheet.Cells(I, J).Value
                  Case 22
                  Colonne_V = ActiveSheet.Cells(I, J).Value
                  Case 23
                  Colonne_W = ActiveSheet.Cells(I, J).Value
                  Case 24
                  Colonne_X = ActiveSheet.Cells(I, J).Value
                  Case 25
                  Colonne_Y = ActiveSheet.Cells(I, J).Value
                  Case 26
                  Colonne_Z = ActiveSheet.Cells(I, J).Value
                  Case 27
                  Colonne_AA = ActiveSheet.Cells(I, J).Value
                  Case 28
                  Colonne_AB = ActiveSheet.Cells(I, J).Value
                  Case 29
                  Colonne_AC = ActiveSheet.Cells(I, J).Value
                  Case 30
                  Colonne_AD = ActiveSheet.Cells(I, J).Value
                  End Select
                  Next J

                  If Ecriture_Detail(Colonne_A, Colonne_B, Colonne_C, Colonne_D, Colonne_E, Colonne_F, Colonne_G, Colonne_H, Colonne_I, Colonne_J, Colonne_K, Colonne_L, Colonne_M, Colonne_N, Colonne_O, Colonne_P, Colonne_Q, Colonne_R, Colonne_S, Colonne_T, Colonne_U, Colonne_V, Colonne_W, Colonne_X, Colonne_Y, Colonne_Z, Colonne_AA, Colonne_AB, Colonne_AC, Colonne_AD) = False Then
                  Exit Do
                  End If

                  I = I + 1
                  Loop

                  Call Ecriture_Fin

                  End Sub
                  1. Bonjour,
                    Désolé pour le doublon de mon message. Comme le premier n'apparaissait pas j'ai cru qu'il y avait une erreur de manip.
                    Et je ne sais pas supprimer le premier.
                    Patrick
                    Précédent
                    • 1
                    • 2