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 :

Exporter des données d'un tableau Excel vers un fichier csv sous condition avec "print" [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien d'essai
    Inscrit en
    Avril 2016
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien d'essai
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 61
    Points : 31
    Points
    31
    Par défaut Exporter des données d'un tableau Excel vers un fichier csv sous condition avec "print"
    Bonjour à tous !



    Je souhaite exporter une plage de données d'un tableau Excel vers un fichier .csv grâce à la commande print.

    J'ai créé un bouton avec une macro qui fonctionne et qui me copie toutes les données vers un fichier csv :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Bouton_Click()
    Dim Plage As Object, oL As Object, oC As Object, Tmp As String
    Set Plage = Worksheets("ONGLET_1").Range("a2:g" & Worksheets("ONGLET_1").Range("C65000").End(3).Row)
    Open "Nomdefichier.csv" For Output As #1
    For Each oL In Plage.Rows
    Tmp = ""
    For Each oC In oL.Cells
    Tmp = Tmp & CStr(oC.Text) & ";"
    Next
    Print #1, Tmp
    Next
    Close
    Shell "C:\Program Files (x86)\Notepad++\notepad++.exe " & "C:\Users\" & Environ("username") & "\Documents\Nomdefichier.csv", vbNormalFocus
    End Sub

    Mon problème c'est que je souhaiterais ne pas recopier les lignes du tableau lorsque le mot "NU" se trouve dans la colonne C.

    J'ai essayé d'inclure une condition :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    For Each oL In Plage.Rows
    Tmp = ""
    For Each oC In oL.Cells
        
              While Cells(oL, 3).Value <> NU              'ajout de la commande While
    
    Tmp = Tmp & CStr(oC.Text) & ";"
    
              Wend                'ajout d'un code de fin
    
    Next
    Apparemment ma syntaxe n'est pas bonne mais je n'arrive pas à comprendre où est mon erreur.

    Si quelqu'un peut m'aider, je le remercie par avance !

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour !

    Il y a pourtant une l'icône # dédiée pour baliser le code
    et même une animation dans les règles de ce forum pour les moins doués ‼

    Si tu traduis ton ajout : « Tant que la cellule est différente de la variable s'appelant NU alors … »
    Donc plusieurs erreurs !
    • Déjà il n'y a pas de variable NU; pour du texte ne pas oublier les guillemets ‼
    oL n'est pas une référence de ligne, ne peut être utilisée dans Cells !
    • Pourquoi ne pas utiliser la variable objet oC de la boucle For ?!

    Sinon repartir du code initial en ajoutant un simple If

    ______________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien d'essai
    Inscrit en
    Avril 2016
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien d'essai
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 61
    Points : 31
    Points
    31
    Par défaut Print sous condition
    OK, merci pour cette réponse, je vais reprendre mon code en me servant de la fonction If

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Technicien d'essai
    Inscrit en
    Avril 2016
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien d'essai
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 61
    Points : 31
    Points
    31
    Par défaut Exporter des données d'un tableau Excel vers un fichier csv sous condition avec "print"
    Bonjour,


    Après pas mal d'essais, j'arrive au bout de ma macro en utilisant un if comme recommandé par Marc_L.


    Voici mon code pour celui ou celle que çà intéresse :


    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
     
     
    Private Sub Bouton_Click()
     
    Dim Plage As Object, oL As Object, oC As Object, Tmp As String
    Set Plage = Worksheets("ONGLET_1").Range("a2:g" & Worksheets("ONGLET_1").Range("C65000").End(3).Row)
    Open "Nomdefichier.csv" For Output As #1
    For Each oL In Plage.Rows
    If oL.Cells(3) <> "NU" Then
    Tmp = ""
    For Each oC In oL.Cells
    Tmp = Tmp & CStr(oC.Text) & ";"
    Next
    Print #1, Tmp
    Debug.Print Tmp
    End If
    Next
    Close
    Shell "C:\Program Files (x86)\Notepad++\notepad++.exe " & "C:\Users\" & Environ("username") & "\Documents\Nomdefichier.csv", vbNormalFocus
     
    End Sub

    Bonne journée à tout le monde !

  5. #5
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut





    La fonction CStr de la ligne de code n°12 ne sert à rien car la donnée .Text est déjà du texte !



    ______________________________________________________________________________________________________
    Copier / Coller n'est pas programmer !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Technicien d'essai
    Inscrit en
    Avril 2016
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien d'essai
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 61
    Points : 31
    Points
    31
    Par défaut Exporter des données d'un tableau Excel vers un fichier csv sous condition avec "print"
    Bonjour Marc et merci pour cette réponse.

    J'ai supprimé la fonction CStr, mais lorsque je lance ma macro, le fichier txt qui s'ouvre ne fait apparaître que des ;;;;.

    Je n'ai plus aucune donnée de mon tableau.

    Je ne comprends pas mon erreur.



  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Supprimer la fonction CStr, certes, mais où est donc passée la donnée oC.Text ?‼




    ______________________________________________________________________________________________________
    Il n'y a pas que les aigles qui atteignent les sommets, les escargots aussi mais ils en bavent !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Technicien d'essai
    Inscrit en
    Avril 2016
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien d'essai
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 61
    Points : 31
    Points
    31
    Par défaut Exporter des données d'un tableau Excel vers un fichier csv sous condition avec "print"
    Ok, merci Marc,


    Ca marche avec la syntaxe suivante :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tmp = Tmp & ";" & (oC.Text)

    Je pensais en fait que le oC.Text faisait partie de la fonction à supprimer.

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

Discussions similaires

  1. Copier des données d'un tableau excel vers un tableau word(gabarit)
    Par mogo107 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/07/2013, 09h16
  2. [XL-2010] Exporter des donnée d'un tableau exel vers un tableau sur word
    Par Matrixmax dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/03/2013, 11h10
  3. Réponses: 1
    Dernier message: 08/01/2008, 14h20
  4. Importer des données d'une feuille Excel vers TABLE
    Par souminet dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/11/2006, 09h10
  5. Exporter des données d'un requete SQL vers excel (csv)
    Par PrinceMaster77 dans le forum ASP
    Réponses: 9
    Dernier message: 08/10/2005, 22h28

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