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 :

Export d'une plage de lignes d'un fichier puis sauvegarde sous CSV


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Par défaut Export d'une plage de lignes d'un fichier puis sauvegarde sous CSV
    Bonjour,

    Je me remets péniblement mais avec plaisir dans Excel et son VBA. Je n'arrive pas à faire une chose toute simple.
    J'ai créé un menu avec un contrôle. Lorsque j'appuie sur ce bouton, j'aimerais que la plage sélectionnée dans "Feuil1" soit copiée à partir d'A2 sur "Feuil3".

    J'ai donc fait le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub generer_Click()
    Sheets("Feuil1").Selection.Copy
    Sheets("Feuil3").Range("A2").Paste
    End Sub
    J'ai l'impression que ça bloque au choix de la feuille car quand je supprime Sheets("Feuil1") sur la première ligne ça passe à la seconde où ça bloque à nouveau. Je pense donc qu'il manque une liaison entre le choix de la feuille et la copie ou le collage de la sélection mais je ne sais pas laquelle.


  2. #2
    Membre averti
    Homme Profil pro
    Technicien Qualité Logiciel
    Inscrit en
    Janvier 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Qualité Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 44
    Par défaut
    Salut Zak Blayde,

    Etant donné que tu ne peux sélectionné qu'une plage dans ton fichier Excel, pour la sélection fait juste : Selection.Copy

    Par contre pour la suite tu dois sélectionner d'une part le classeur, puis la cellule puis copier le contenu... J'ai pas trouvé autrement...

    Essai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Selection.Copy
    Sheets("Feuil3").Select
    Range("A2").Select
    ActiveSheet.Paste

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut Copie de Formules
    Bonjour,

    En VBA, contrairement au code renvoyé par l'enregistreur, il n'est pas nécessaire de procéder à selection + action sur un objet Range.
    En effet, l'action suffit.

    Pour ton cas, tu peux adapter ce code renvoyé par l'aide en ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets("Sheet1").Range("A1:D4").Copy _
        destination:=Worksheets("Sheet2").Range("E5")
    Souvent, à commencer par moi, on oublie l'instruction "destination"

    Pour un collage special, tu peux également affecter l'instruction directement à un objet Range.

    En espérant que cela te sera utile.

    Cordialement.

    Marcel.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub generer_Click()
    Worksheets("Feuil1").Activate
    Selection.Copy _
        Destination:=Worksheets("Feuil3").Range("A2")
    End Sub
    J'utilise cette formule là du coup. J'active néanmoins Feuil1 avant de copier, car chaque feuille peut avoir sa sélection propre et mon bouton est dans un menu et non sur la feuille.

    Maintenant si vous voulez bien j'aurais besoin d'un conseil plus théorique. J'ai deux feuilles. Une première qui est un fichier contenant une ligne par personne et renseignant son nom, son adresse postale, son adresse e-mail. Une seconde dans laquelle je souhaite pour chaque lignes qu'on aura sélectionné dans la première réorganiser les les colonnes dans la seconde.

    Imaginons par exemple que dans la première feuille le nom apparaisse en colonne C, je voudrais que dans la seconde il soit en A. Et le même genre d'opération sur les colonnes voisines.

    Le but final est de réorganiser les données des lignes sélectionnées dans la première feuille dans la seconde, pour les mettre dans un ordre qui me permette de créer un fichier texte importable dans Thunderbird pour un carnet d'adresses.

    Que me conseillez-vous, l'utilisation de boucles pour déplacer colonne par colonne ? C'est à ça que j'ai pensé en premier mais je sens déjà l'usine à gaz venir.

    edit : sinon je me dis que je dois pouvoir passer par une appli externe pour mapper les éléments. Je vais voir de ce coté là.

  5. #5
    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 heu!...
    bonjour
    si tu a beaucoup de cell a copier

    ça dépend de tes cellules en fait

    si elle sont toutes collée ma fois sélectionne les toutes
    sinon effectivement il va falloir faire une boucle

    ou repeter l'opération le nombre de fois nécessaire


    au plaisir
    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

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut Réorganisation des colonnes
    A mon - humble - avis, tu aurais dû ouvrir un nouveau post pour cette question.

    Si j'ai bien compris,

    Dans la feuille 1, les données sont dans un ordre différent pour chaque enregistrement.
    Exemple
    enregistrement 1 : mail, nom, adresse
    enregistrement 2 : adresse, mail, nom,
    etc...

    Et tu souhaites que, dans la feuille 2, ces colonnes soient ordonnées afin que dans la colonne A figurent les noms, en colonne B les adresses (adresse sur 1 seule colonne ?), en colonne C les adresses mail.

    Sur la base de 3 colonnes, il faudrait alors qu'il y ait une distinction pour chaque donnée:
    exemple :
    - les 5 premiers caractères = 5 chiffres ==> colonne 2 adresse
    - présence de l'arobase @ ==> colonne 3 mail
    - autre ==> colonne 1 nom
    Pour gérer ces 3 cas, je verrais bien

    D'autre part, commment envisages-tu la sélection des noms à choisir.
    Je te conseille 1 ou 0 dans une colonne annexe. La sélection s'effectuerait sur cette base.

    Voilà une méthode que j'appliquerais dans ton cas.

    Avant tout, merci de confirmer ce qui précède.

    Cordialement.

    Marcel.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Par défaut
    Merci pour ton post, je pense finalement adopter une approche différente.

    Je travaille désormais sur deux fichiers car l'un pourrait être régénéré. J'ai donc mon fichier "base" et mon fichier "export". Le second est celui que je développe.

    Je pense donc copier les lignes sélectionnées de base vers export, puis je demande le nom du fichier voulu à l'utilisateur via une UserBox. Je concatène le nom saisi avec ".csv" pour créer le fichier final. j'utiliserai sans doute un autoIt pour importer ce dernier fichier dans Thunderbird en mappant ça comme il faut. J'essaierai de faire ça le plus simplement possible.

    Pour le moment je bloque sur la concaténation du nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton_OK_Click()
        Workbooks("export.xls").SaveAs Filename:=UserForm1.TextBox_NomFichier.Text & ".csv", FileFormat:=xlCSV, CreateBackup:=False
    End Sub
    edit : Eh non ça marche !!!
    Par contre il me fait un fichier à ";" alors que j'aimerais des virgules. Et sous XL2000 les options ont l'air limitées à ce niveau. De plus il sera utilisé par de multiples utilisateurs donc les options régionales de Windows aident peu.

Discussions similaires

  1. Colorer une plage de lignes excels sous condition
    Par All_yson dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/06/2014, 12h33
  2. selectionner une plage de lignes vides
    Par anaisanais dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/01/2008, 16h21
  3. Selection d'une plage avec ligne variable
    Par ginkas31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/01/2008, 07h04
  4. exporter une plage de cellules vers un fichier texte
    Par VINCENTNINI dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/10/2007, 08h12

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