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

OpenOffice & LibreOffice Discussion :

Creation Macro, enregstrer au format csv un selection selon filtre. [LibreOffice][Tableur]


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre actif

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 371
    Points : 276
    Points
    276
    Par défaut Creation Macro, enregstrer au format csv un selection selon filtre.
    Bonjour,

    Je veux créer une macro pour enregistrer chacun de mes groupes d'utilisateurs dans un fichier csv (utf8, séparé par des ";") . Un fichier par groupe.

    Les groupes sont renseigné dans la colonne "groupe", colonne = "AG" de la feuille "utilisateurs"

    J'ai joint un fichier pour que vous voyez comment il est construit.
    Dans la feuille "liste_sommaire", vous pourrez voir ma liste de groupe et le nombre de donnée que j'ai a traiter.

    Je veux enregistrer au format csv les colonnes allant de "A" à "AG" de la feuille utilisateur.
    Le nom du fichier peut être: nom_du_groupe.csv

    Je suis débutant sur la création de macro sous libreOffice.

    Merci pour votre aide.
    vandman
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Voici le code qui permet de créer un fichier :
    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
    Sub CreerFichier()
        Dim FileNo As Integer, Repertoire As String
        Dim CurrentLine As String
        Dim File1 As String, File2 As String
     
     
        'Définir le fichier à créer
        Repertoire = "/home/vincent/Documents/"
     
        'Définir le nom du fichier 
        Fichier = Repertoire & "nom_groupe.csv"
     
        'Créer le fichier et ajouter les lignes
        FileNo = Freefile
        Open Fichier For Output As #FileNO
           Print #FileNo, "Texte ajouté"
        Close #FileNo
     
    end sub
    Ensuite avec ce tuto, tu auras tous les éléments pour aller chercher les infos dans ton fichier pour créer les documents CSV...

    @+.

  3. #3
    Membre actif

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 371
    Points : 276
    Points
    276
    Par défaut
    Bon je suis probablement un peu dummy mais bon j'essaye.

    j'ai commencé à écrire ceci:

    J'ai créé deux fonctions, une pour lire des cellules et une ou j'ai repris ce qui m'a été proposé pour la création des fichiers.
    Dans la colonne 4 j'ai la liste de mes groupes.
    Je lis donc chaque cellule de la colonne jusqu’à trouver une cellule vide.
    Pour chaque cellule, J'utilise son contenue pour créer le fichier désiré
    et je utilise le contenue pour faire mon filtre insérer ce qui m'intéresse dans le fichier.

    Est-ce que je dois créer une feuille intermédiaire pour chaque catégorie avant de l'enregistrer ou puis-je directement créer le fichier à partir de mes lignes filtré?
    j'ai aussi besoin d'aide pour corriger le code existant car en l'état, il est pas bon?

    Je l'ai dit, je suis débutant.

    Avec le
    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
    Sub Main
    Dim group as string
    Dim cologne_init, ligne_init as integer
     
    colonne_init = 4
    ligne_init = 2
    groupe=LireGroupe(colonne_init, ligne_init)
    Do While groupe <> ""
    groupe=LireGroupe(colonne_init, ligne_init)
    Function CreerFichier(groupe)
    ligne_init = ligne_init + 1
    End Sub
     
    Function CreerFichier(NomFichier as string)
        Dim FileNo As Integer, Repertoire As String
        Dim CurrentLine As String
        Dim File1 As String, File2 As String
     
     
        'Définir le fichier à créer
        Repertoire = "/home/vincent/Documents/"
     
        'Définir le nom du fichier 
        Fichier = Repertoire & NomFichier & ".csv"
     
        'Créer le fichier et ajouter les lignes
        FileNo = Freefile
        Open Fichier For Output As #FileNO
           Print #FileNo, "Texte ajouté"
        Close #FileNo
     
    end Function
     
    Function LireGroupe(colonne as integer, ligne as integer)
     Dim monDocument As Object
     Dim lesFeuilles as Object
     Dim maFeuille As Object
     Dim maCellule As Object
     
        monDocument = ThisComponent
        lesFeuilles = monDocument.Sheets
        maFeuille = lesFeuilles.getByName("liste_sommaire")
    --    maCellule = maFeuille.getCellByPosition(colonne,ligne)
        LireGroupe = maFeuille.getCellByPosition(colonne,ligne)
     
    End Function

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Quelque chose comme cela devrait convenir :
    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
    Function zoom61()
        Dim FileNo As Integer, Repertoire As String, Fichier As String
        Dim monDocument As Object
        Dim lesFeuilles as Object
        Dim maFeuille1 As Object, maFeuille2 As Object
        Dim maCellule As Object
        Dim txt As String
     
        'initialise la 
        Repertoire = "/home/vincent/Documents/"
     
        'J'initialise les feuilles
        monDocument = ThisComponent
        lesFeuilles = monDocument.Sheets
        maFeuille1 = lesFeuilles.getByName("liste_sommaire")
        maFeuille2 = lesFeuilles.getByName("utilisateurs")
     
        'Récupère la dernière position de la feuille "utilisateurs"
        maPosition = maFeuille2.createCursor
        maPosition.gotoEndOfUsedArea(False)
        LigneFin = maPosition.RangeAddress.EndRow
     
        'Boucle pour balayer la première page
        For i = 1 to 58
            'Récupérer la valeur de la colonne D
            maCellule = maFeuille1.getCellByPosition(3, i)
            Valeur1 = maCellule.String
            'Création du fichier
            Fichier = Repertoire & Valeur1 & ".csv"
            FileNo = Freefile
            Open Fichier For Output As #FileNO
                'Boucle sur la feuille "utilisateurs"
                For j = 1 to LigneFin
                    'Récupère la valeur de la colonne G
                    maCellule = maFeuille2.getCellByPosition(32, j)
                    Valeur2 = maCellule.String
                    txt = ""
                    'Test pour savoir si les valeurs sont identiques
                    if Valeur1 = Valeur2 then
                        'Boucle pour créer la ligne du fichier
                        for k = 1 to 34
                            maCellule = maFeuille2.getCellByPosition(k, j)
                            txt  = txt & ";" & maCellule.String
                            'msgbox txt
                        next
                        Print #FileNo, txt
                    end if
                Next
            Close #FileNo
        Next
        msgbox "Terminé"
    End function

  5. #5
    Membre actif

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 371
    Points : 276
    Points
    276
    Par défaut
    Merci zoom61,

    Ca fonctionne

    Je vais abusé, mais serait-il possible de personnaliser de manière à avoir une boite de dialogue qui demande ou stocker les fichier et une barre de progression avec un bouton stop?

    Merci

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

Discussions similaires

  1. SPUFI - SELECT Sortie sous format csv
    Par Julien Del dans le forum DB2
    Réponses: 3
    Dernier message: 04/03/2010, 13h01
  2. [CSV] Exploitation du format csv
    Par flopad dans le forum Langage
    Réponses: 17
    Dernier message: 08/11/2005, 16h36
  3. query format csv
    Par tiopan dans le forum Access
    Réponses: 3
    Dernier message: 29/09/2005, 14h27
  4. [D6][Excel] Comment enregistrer en format csv ?
    Par ShinGaruda dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 04/05/2005, 19h59
  5. [VBA-E] macro conversion excel vers csv
    Par baboune dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/07/2004, 09h23

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