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 :

Créer des fichiers CSV en fonction du liste de variables d'une feuille excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 51
    Par défaut Créer des fichiers CSV en fonction du liste de variables d'une feuille excel
    Bonjour a tous,

    j'ai besoin de votre aide pour faire une boucle, j'ai essayé de le faire mais en vain

    Je souhaite faire une boucle qui me créer autant de feuilles que variable qui ce trouve dans une colonne d'une autre feuille

    Ensuite quand les feuilles sont créer je crée des fichiers CSV en fonction des nouvelles feuilles créer précédemment.

    J'ai pour l'instant réussi a faire la création de la nouvelle feuille le Nom de la feuille "NF" + valeur de la cellule A2 (de la feuille F_BdD)

    le fonctionnement de la macro:
    Etape 1
    je crée une config dans la feuille F_BdD l'info de la col0 je prendre la valeur de D2 de la feuille "Donnée Variable" que je colle dans la colonne A et les autre colonnes B à D sont des informations fixe
    Ensuite je copie toutes les valeurs de la feuille F_BdD que je colle dans une nouvelle feuille avec le nom de la feuille NF + val A2.
    Etape 2
    il reste a faire ensuite la conversion en csv le code je trouve dans le module2 mais pour l'instant je n'ai pas encore testé.

    ci-dessous le code pour la première étape :
    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
     
    'Code création des colonnes avec le contenu des cellules fixe
     
    Dim Wk1 As Worksheet
    Dim Wk2 As Worksheet
    Dim NF As Worksheet ' Une référence à la feuille nouvellement créée
     
    Dim x As Integer
     
    Set Wk1 = Worksheets("F_BdD")
    Set Wk2 = Worksheets("Donnée Variable")
     
    'sélection de la page
    Wk1.Select
     
     
    'remplissage avec une boucle for
     
    For x = 2 To 13
     
    ' cells( ligne , colonne ) la ligne évolue en fonction de x
     
    Wk1.Cells(x, 1) = Wk2.Cells(2, 4).Value
    Wk1.Cells(x, 2) = "CASSETTE"
    Wk1.Cells(x, 3) = "CASSTETE-" & x - 1
    Wk1.Cells(x, 4) = "5600"
     
     
    Next x
     
     
    'nom des nouvelles colonnes
     
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "Col0"
     
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Col1"
     
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "Col2"
     
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "Col3"
     
    'Sélection des données pour le copier dans une nouvelle feuil
     Cells.Select
        Selection.Copy
     
    Set NF = ThisWorkbook.Worksheets.Add ' La référence est posée
     
      NF.Name = "NF" & Wk1.Range("A2").Value ' Le nom d'onglet de la nouvelle feuille est posé.
     
        ActiveSheet.Paste
     
     
    End Sub
    Merci encore pour votre aide.






  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Ton fichier s'est fait mettre dans la filière no 13, pour le plus grand bien de tous. Même que tu as un lien pour que tu puisses savoir pourquoi.

    Citation Envoyé par undo74 Voir le message
    Bonjour a tous,

    il reste a faire ensuite la conversion en csv le code je trouve dans le module2 mais pour l'instant je n'ai pas encore testé.

    C'est l'enfance de l'art.

    1) Tu enregistres une macro Excel en passant par Enregistrer Sous... et tu choisis un format à ton goût.

    ou

    2) Tu regardes dans l'aide pour saveas ou saveas2 et tu choisis la constante qui correspond au format que tu veux.

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    clément a manger un lion prends un mars la prochaine fois

    en ce qui concerne cette demande
    alors en effet j'ai allumé tout mes décodeurs mais sans succès quand au fichier en premier post je dirais que la charte n'a un peu mais pas beaucoup pas du tout regardée
    pour commencer rien que la première phrase heu.. comment dire heu....
    je crée une config dans la feuille F_BdD l'info de la col0
    ouais!.. si tu veut et la marmotte elle met le chocolat dans le papier alu hein....
    bon quand on va plus loin malgré les bits manquants dans mon décodeurs
    je crois comprendre que tu copie des cellules de plusieurs feuille dans une nouvelle que tu aimerais sauvegarder en CSV

    moi je dis qu'il n'est pas nécessaire de faire tout ca

    1 des variables tableaux

    2 la fonction open sur un fichier texte

    3 transcription des données tableaux dans ce fichier texte

    un indice "close#1"

    résultat instantané

    a bon entendeur
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bon malgré tout je me suis permis de regarder xe que tu avais proposé pour démarrer
    j'en ai fait ceci:
    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
    Dim x As long ,Wk1 As Worksheet, Wk2 As Worksheet, NF As Worksheet    ' Une référence à la feuille nouvellement créée
    Set Wk1 = Worksheets("F_BdD")
    Set Wk2 = Worksheets("Donnée Variable")    ' celui la on sait pas a quoi il sert
    'sélection de la page
    With Wk1
        'Code création des colonnes avec le contenu des cellules fixe
        'nom des nouvelles colonnes
        .Range("A1:D1") = Array("Col0", "Col1", "Col2", "Col3")
        'remplissage avec une boucle for
        For x = 2 To 13
            ligne = Array(Wk2.Cells(2, 4).Value, "CASSETTE", "CASSTETE-" & x - 1, "5600")
            .Cells(x, 1).Resize(1, 4) = ligne
        Next x
     
        Set NF = ThisWorkbook.Worksheets.Add    ' La référence est posée
        NF.Name = "NF" & .Range("A2").Value    ' Le nom d'onglet de la nouvelle feuille est posé.
     
        'Sélection des données pour le copier dans une nouvelle feuil
        .Cells(1, "A").Resize(13, 4).Copy Destination:=NF.Cells(1, 1)
     
    End With
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 51
    Par défaut
    Bonjour patricktoulon,
    Merci d'avoir pris connaissance de mon sujet.
    J'ai pu avancé de mon coté et je suis arrivé au résultat voulu mais je pense le code fournie dans mon exemple n'est pas très clean.
    je ne suis pas développeur mais j'essaye de faire des choses

    merci d’avance.
    cdt,

Discussions similaires

  1. [XL-2007] Récupérer des données d'un site WEB et les collées sur une feuille Excel
    Par clem4491 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/06/2014, 12h19
  2. Créer des fichiers à la sortie en fonction d'un champ
    Par nice-one dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 26/04/2013, 13h24
  3. [AppleScript] utiliser des variables entre une feuille Excel et un fichier xml (ou autre)
    Par phil74 dans le forum AppleScript
    Réponses: 0
    Dernier message: 03/10/2011, 21h51
  4. Réponses: 1
    Dernier message: 29/01/2010, 16h38
  5. Liste des fichiers CSV dans une feuille
    Par DubDub dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 19/02/2009, 08h05

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