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 :

[VBA-E]Ouvrir un fichier.cvs séparateur ;


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Par défaut [VBA-E]Ouvrir un fichier.cvs séparateur ;
    Véridique, manip à faire en 15sec.
    1 - Ouvrez un nouveau document Excel

    2 - Remplisser la cellule "A1" avec ce que vous voulez

    3 - Coller ce code:
    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
    Sub essai()
     
    Columns("A:A").Select
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
            :=";", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
            1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12 _
            , 1), Array(13, 1), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), _
            Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array( _
            25, 1), Array(26, 1), Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), _
            Array(32, 1), Array(33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array( _
            38, 1), Array(39, 1), Array(40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1), _
            Array(45, 1), Array(46, 1), Array(47, 1), Array(48, 1), Array(49, 1), Array(50, 1), Array( _
            51, 1), Array(52, 1), Array(53, 1), Array(54, 1), Array(55, 1)), TrailingMinusNumbers _
            :=True
     
    End Sub
    Ce code a été géénra par une macro. Je lui ai simplement demandé de faire un "Texte à colonnes" avec ";" comme délimiteur.

    4 - Essayez de sauvegarder votre document.

    J'attends vos réponses!!

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    As-tu pensé à utiliser "Transpose" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True
    avant de créer un code qui sature la mémoire ?
    Précaution : Ne sélectionner que la plage de données, "A:A" => 65536 lignes, transposé sur 255 colonnes, ça passe pas

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Par défaut
    Je 'nai pas très bien compris ton code... Est-ce qu'il transpose du texte en découpant dans des colonnes ? Si oui, en le testant, je n'arrive pas à le faire marcher.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Précise ce que tu veux faire... et obtenir
    Pas vérifié mais je crois me souvenir qu'on ne peut pas "transposer" sur place
    Si tu as A1 dans la sélection à transposer, tu ne peux pas placer tes données transposées à partir de A1.
    En outre, précise ta plage de données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set plage = Range(Cells(NoLigne1,NoCol1), Cells(NoLigneFin,NoCol))
    'ou en l'occurence
    set plage = Range(Cells(NoLigne1,1), Cells(NoLigneFin,1))
    Tu ne peux pas transposer "A:A" (comme je te l'ai dit) car là tu prends toute la colonne.
    Dans le cas précis, la copie transposée de plage peut se faire en B1, C1, D5... pas en A1

  5. #5
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Par défaut
    J'ouvre un fichier qui est formaté comme ceci:

    NOM_PRODUIT;ID_PRODUIT;Prix;etc.
    NOM_PRODUIT;ID_PRODUIT;Prix;etc.
    NOM_PRODUIT;ID_PRODUIT;Prix;etc.
    NOM_PRODUIT;ID_PRODUIT;Prix;etc.

    Le problème est que ce fichier est un .csv, et qu'en l'ouvrant depuis VBA avec Application.Open() il me met tout dans la colonne A1 'alors qu'en l'ouvrant depuis Fichier->Ouvrir, il me met chaque élément compris entre 2 ; dans des colonnes différentes.
    La première methode que j'ai trouvée est de l'ouvrir, puis utiliser TextToColumn (depuis le Menu >Data(données) de Excel), d'ou mon problème initial.
    Je suis en train de voir la fonction Open de Excel pour voir si elle peut transposer directement à l'ouverture de fichier. Mais cela me parait difficile.

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tiens, essaie ça en remplaçant le nom du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Workbooks.OpenText Filename:="D:\xls\Fichier.csv", Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Semicolon:=True

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/08/2013, 09h47
  2. [VBA-E]Ouvrir un fichier.csv ou un fichier.txt séparateur ";"
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/05/2007, 12h09
  3. [VBA-W] Ouvrir un fichier protégé
    Par Elstak dans le forum VBA Word
    Réponses: 1
    Dernier message: 28/06/2006, 12h09
  4. [VBA-E]Ouvrir un fichier ayant un mot de passe
    Par Friko dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/04/2006, 08h45
  5. [VBA-E] ouvrir un fichier .xls sans executer les macro
    Par lae_t2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/01/2003, 17h07

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