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

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Points : 25
    Points
    25
    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
    Points : 15 546
    Points
    15 546
    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
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Points : 25
    Points
    25
    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
    Points : 15 546
    Points
    15 546
    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
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Points : 25
    Points
    25
    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
    Points : 15 546
    Points
    15 546
    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

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    Tu devrais être payé pour l'aide que tu apportes.
    Merci bcp!!

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    Désolé je reviens sur ce fil, car ôô miracle de l'informatique, ce code marchait hier, mais pas aujourd'hui. Excel ne découpe pas aux point virgules. Après avoir regardé l'aide, j'ai vu qu il y a des arguments comme "Other" et "Comma" pour spécifier les délimiteur, mais rien n'y fait. Je pense que des gens ont déjà utilisé cela, alors si quelqu'un pouvait m'expliquer comment faire...

  9. #9
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Regarde , je réponds plus précisément à la question. Tu dois renommer ton fichier et lui donner l'extension .txt
    A+

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    Ok je commence à comprendre, mais peux tu m'expliquer la syntaxe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Name "D:\xls\Fichier.csv" As "D:\xls\Fichier.txt"
    Mon Excel ne la reconnait pas...Au pire, j'enregistre avec SaveAs dans un fichier temporaire.txt que j'ouvre ensuite...?

+ 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