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 :

Changement de format entre fichier sans extension -> Excel [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Changement de format entre fichier sans extension -> Excel
    Bonjour a tous,

    Tout d'abord merci au acteur de ce site. Je suis passé de <Ignorant VBA> à <Presque plus débutant VBA>

    J'espère que mon problème n'est pas récurrent. En tout cas je pense avoir épluché le net.

    Je vais essayer d'etre le plus précis possible.


    Sources: 4 fichiers sans extension, issus d'une base de donnée.
    Cible: Un fichier excel pour retravailler ces 4 fichiers.

    Voici une partie de mon 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
    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
    'Suppression feuilles T1/T2/T3 existant
     
    Workbooks("Tarifs Clients.xls").Activate
    Application.DisplayAlerts = False
    For Each Sh In Sheets
    If Sh.Name = "T1" Or Sh.Name = "T2" Or Sh.Name = "T3" Or Sh.Name = "T4" Then Sh.Delete
    Next Sh
    Application.DisplayAlerts = True
     
     
    'Nouvelles feuilles T1/T2/T3/T4
     
    Workbooks.Open Filename:="X:\Commercial\TARIF FM\Tarifs clients\T1"
    Range("A1:E10000").Select
    Selection.Copy
    Workbooks("Tarifs Clients.xls").Activate
    Sheets.Add.Name = "T1"
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Workbooks("T1").Close False
    Columns(4).Select
    Selection.TextToColumns , _
    DataType:=xlFixedWidth, FieldInfo:=Array(0, 4), _
    TrailingMinusNumbers:=True
     
    Workbooks.Open Filename:="X:\Commercial\TARIF FM\Tarifs clients\T2", local:=True
    Range("A1:C15000").Select
    Selection.Copy
    Workbooks("Tarifs Clients.xls").Activate
    Sheets.Add.Name = "T2"
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Workbooks("T2").Close False
     
    Workbooks.Open Filename:="X:\Commercial\TARIF FM\Tarifs clients\T3", local:=True
    Range("A1:E10000").Select
    Selection.Copy
    Workbooks("Tarifs Clients.xls").Activate
    Sheets.Add.Name = "T3"
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Workbooks("T3").Close False
     
     
    Workbooks.Open Filename:="X:\Commercial\TARIF FM\Tarifs clients\T4", local:=True
    Range("A1:C1500").Select
    Selection.Copy
    Workbooks("Tarifs Clients.xls").Activate
    Sheets.Add.Name = "T4"
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Workbooks("T4").Close False

    Mon problème étant que lorsque j'ouvre mes fichier le format de certaines colonne varie d'un fichier à l'autre.

    Par exemple un code article qui en ouvrant via bloc note est 4001 303, devient via excel 4 001 303.

    Vu que j'utilise des RECHERCHEV => #N/A

    En copiant les valeurs manuellement du bloc note, j'arrive a obtenir le bon format, si le format de ma colonne est texte.

    Via VBA j'arrive a ouvrir mes fichier avec le bloc note :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'MonFichier = "X:\Commercial\TARIF FM\Tarifs clients\T3"
    'Shell "C:\windows\Notepad.exe " & MonFichier, vbNormalFocus
    Mais je ne sais pas copier le contenu.

    Ci joint des exemple de mes fichiers : http://dl.free.fr/aGB9Wneah

    En espérant avoir été assez clair.

    Merci d'avance

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Une proposition avec sendleys
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    MonFichier = "C:\T2 - Exemple"
    Shell "C:\windows\Notepad.exe " & MonFichier, vbNormalFocus
    SendKeys "^a"
    Application.Wait Now + TimeSerial(0, 0, 1)
    SendKeys "^c"
    Application.Wait Now + TimeSerial(0, 0, 1)
    ThisWorkbook.Sheets("Feuil2").PasteSpecial
    Jérôme

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour et merci jfontaine

    J'ai un peu adapté ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sheets.Add.Name = "T2"
    MonFichier = "C:\T2 - Exemple"
    Shell "C:\windows\Notepad.exe " & MonFichier, vbNormalFocus
    SendKeys "^a"
    Application.Wait Now + TimeSerial(0, 0, 1)
    SendKeys "^c"
    Application.Wait Now + TimeSerial(0, 0, 1)
    Workbooks("Tarifs Clients.xls").Sheets("T2").Activate
    Cells.NumberFormat = "@"  
    Range("A1").Select
    ActiveSheet.PasteSpecial

    J'ai rajouté Cells.NumberFormat = "@" sinon le format standart s'applique et change mes codes ressemblant à des nombres


    J'ai 2 autres questions:
    -J'ai mis du temps a répondre car excel me collais mes valeurs selon les critères de convertion qui étaient déja en mémoire (séparateurs = " " & "ý"), sais tu comment les initialiser en début de macros?

    -Comment fermer ce fichier T2. J'ai essyé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendKeys "%{F4}N", True
    Sans succès.

    Merci

    Floup

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Il faut que notepad soit la fenêtre active pour fermer avec ALT + F4. Mettre la ligne avant le collage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sheets.Add.Name = "T2"
    MonFichier = "C:\T2 - Exemple"
    Shell "C:\windows\Notepad.exe " & MonFichier, vbNormalFocus
    SendKeys "^a"
    Application.Wait Now + TimeSerial(0, 0, 1)
    SendKeys "^c"
    Application.Wait Now + TimeSerial(0, 0, 1)
    SendKeys "%{F4}"
     
    Workbooks("Tarifs Clients.xls").Sheets("T2").Activate
    Cells.NumberFormat = "@"  
    Range("A1").Select
    ActiveSheet.PasteSpecial
    Jérôme

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Nikel Merci, ca à l'air si simple maintenant que tu le dis.

    Je t'embête une derniere fois (j'espère)

    Mon collage est éclaté, selon les infos restées en mémoire (séparateur dans l'assistant de conversion lors d'un précédent lancement de ma macro (j'utilise la fonction TextToColumns plutard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Range("E:E").TextToColumns DataType:=xlDelimited, Other:=True, OtherChar:="ý", TrailingMinusNumbers:=True
    Comment l'initialiser à vide en début de macro.

    Merci d'avance

  6. #6
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    as tu essayé de remettre toutes les valeurs par défaut de la méthode TextToColumns ? (F1)
    Jérôme

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    En effet je le fait sur une colonne vide en début de macro.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'Remise a zéro des infos de l'assistant de conversion
        Sheets("Infos").Activate
        Columns("A:A").Select
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
            :=Array(1, 1), TrailingMinusNumbers:=True
    J'avais la réponse dans ma question, c'est frustrant !!
    Merci beaucoup jfontaine

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

Discussions similaires

  1. Récupérer un nom de fichier sans extension
    Par OxN dans le forum Général Java
    Réponses: 13
    Dernier message: 01/08/2011, 16h13
  2. Détecter le format d'un fichier sans extension
    Par Erwan31 dans le forum Imagerie
    Réponses: 3
    Dernier message: 29/06/2008, 23h21
  3. Réponses: 3
    Dernier message: 22/06/2006, 14h47
  4. Réponses: 3
    Dernier message: 30/01/2006, 16h24
  5. Réponses: 11
    Dernier message: 28/10/2005, 09h21

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