Définition de commande macro - Page 2

Résolu
Précédent
  • 1
  • 2
  1. stephbret56 Messages postés 195 Statut Membre 6
     
    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?
    0
  2. stephbret56 Messages postés 195 Statut Membre 6
     
    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+
    0
  3. NicoDisso Messages postés 231 Statut Membre 32
     
    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é...
    0
  4. stephbret56 Messages postés 195 Statut Membre 6
     
    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+
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. NicoDisso Messages postés 231 Statut Membre 32
     
    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
    0
  7. stephbret56 Messages postés 195 Statut Membre 6
     
    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+
    0
  8. NicoDisso Messages postés 231 Statut Membre 32
     
    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..
    0
    1. stephbret56 Messages postés 195 Statut Membre 6
       
      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
      0
  9. NicoDisso Messages postés 231 Statut Membre 32
     
    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
    0
  10. pmfontaine38 Messages postés 2 Statut Membre
     
    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
    0
  11. pmfontaine38 Messages postés 2 Statut Membre
     
    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
    0
Précédent
  • 1
  • 2