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 :

Ouvrir des fichier avec VB sous excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 55
    Points : 35
    Points
    35
    Par défaut Ouvrir des fichier avec VB sous excel
    Bonjour,

    je souhaite ouvrir un série de fichiers, sans extension, et tous de noms differents, pour leur appliquer un traitement à chacun d'eux (l'un après l'autre).
    Quelqu'un connaît-il une commande permettant d'indiquer sous vb l'ouverture de fichiers, qque soit leur nom?

    par avance merci,
    bien à vous,

    Sébastien

  2. #2
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Bonjour,

    Citation Envoyé par sebastien06 Voir le message
    .... un série de fichiers, sans extension, ...
    ces fichiers sont sans extensiont mais au moins tu connais leur type ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 55
    Points : 35
    Points
    35
    Par défaut
    Mes fichiers son en format ascii

  4. #4
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Citation Envoyé par sebastien06 Voir le message
    Mes fichiers son en format ascii
    voir : Workbooks.OpenText

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dim wk as workbook
    dim YaFichier as string
    YaFichier = "c:\tmp\MonFichier"
     
    set wk = Workbooks.Opentext (YaFichier)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 55
    Points : 35
    Points
    35
    Par défaut
    Merci
    je vais tenter de me débrouiller et je vous recontacte

    merci bien,

    Sébastien

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 55
    Points : 35
    Points
    35
    Par défaut
    Re-bonjour,

    petite question je suis en train de tenter de faire mon code.

    L'exécution de mon code s'effectue par l'intermédiaire d'un classeur excel qui servira d'interface utilisateur.

    Quand je lance ma macro, un des fichiers est importé dans un nouveau classeur. Problème: lorsque je veux modifier ce nouveau classeur, je ne parviens pas à l'activer, c'est en fait qui l'autre classeur (interface utilisateur) qui subit les modifs.. Puis-je activer ce nouveau classeur nouvellement crée?

    Merci,

    sébastien

  7. #7
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    re, ...
    tu pourrai montrer le code utiliser ... si tu t'est inpirer de ce que j'ai écris plus haut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    set wk = Workbooks.Opentext (YaFichier)
    ....
     
    wk.sheets("Feuil1").range("A1") = "La j'écris dans cellule A1 de feuil1"
    msgBox  " A1 : " & wk.sheets("Feuil1").range("A1")

  8. #8
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Tu as déjà une variable qui représente ton classeur : wk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    set wk = Workbooks.Opentext (YaFichier)
    ' Activer le classeur
    wk.Activate
    ....
     
    wk.sheets("Feuil1").range("A1") = "La j'écris dans cellule A1 de feuil1"
    msgBox  " A1 : " & wk.sheets("Feuil1").range("A1")

  9. #9
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Citation Envoyé par zazaraignée Voir le message
    Tu as déjà une variable qui représente ton classeur : wk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    set wk = Workbooks.Opentext (YaFichier)
    ' Activer le classeur
    wk.Activate
    ....
     
    wk.sheets("Feuil1").range("A1") = "La j'écris dans cellule A1 de feuil1"
    msgBox  " A1 : " & wk.sheets("Feuil1").range("A1")
    pourquoi activer le classeur c'est inutile

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 55
    Points : 35
    Points
    35
    Par défaut
    Voici mon code
    un peu long désolé, j'espère que la balise fonctionne

    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
    Option Explicit
     
    Dim wk As Excel.Workbooks
    Dim YaFichier As String
     
    Private Sub Exécution_Click()
     
    YaFichier = "C:\Documents and Settings\sgallo\Desktop\Elodie_fichier\algeria"
     
     
    Set wk = Workbooks.OpenText(YaFichier)Origin:= _
          '  437, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), _
          '  Array(8, 1), Array(16, 1), Array(25, 1), Array(27, 1), Array(29, 1), Array(30, 1), Array(38 _
          '  , 1), Array(40, 1), Array(42, 1), Array(44, 1), Array(52, 1), Array(61, 1), Array(67, 1), _
         '   Array(73, 1), Array(76, 1), Array(79, 1), Array(85, 1), Array(87, 1), Array(91, 1), Array( _
          '  93, 1), Array(99, 1), Array(105, 1), Array(108, 1), Array(111, 1), Array(112, 1), Array(113 _
          '  , 1), Array(120, 1), Array(126, 1)), TrailingMinusNumbers:=True
     
     
    Rows("1:1").Select
        Selection.Insert Shift:=xlDown
        Range("A1").Select
        ActiveCell.FormulaR1C1 = "BGI N°"
        Range("B1").Select
        ActiveCell.FormulaR1C1 = "Latitude"
        Range("C1").Select
        ActiveCell.FormulaR1C1 = "Longitude"
        Range("D1").Select
        ActiveCell.FormulaR1C1 = "Accuracy postion"
     
    End Sub

  11. #11
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Evite d'utiliser les select et activate :

    à mettre aprés ton set :
    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
     
    Option Explicit
     
    Dim wk As Excel.Workbooks
    Dim YaFichier As String
     
    Private Sub Exécution_Click()
     
    YaFichier = "C:\Documents and Settings\sgallo\Desktop\Elodie_fichier\algeria"
     
     
    Set wk = Workbooks.OpenText(YaFichier)
      'Origin:= _
          '  437, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), _
          '  Array(8, 1), Array(16, 1), Array(25, 1), Array(27, 1), Array(29, 1), Array(30, 1), Array(38 _
          '  , 1), Array(40, 1), Array(42, 1), Array(44, 1), Array(52, 1), Array(61, 1), Array(67, 1), _
         '   Array(73, 1), Array(76, 1), Array(79, 1), Array(85, 1), Array(87, 1), Array(91, 1), Array( _
          '  93, 1), Array(99, 1), Array(105, 1), Array(108, 1), Array(111, 1), Array(112, 1), Array(113 _
          '  , 1), Array(120, 1), Array(126, 1)), TrailingMinusNumbers:=True
     
    With wk.Sheets(1)
         .Rows("1:1").Insert Shift:=xlDown
         .Range("A1").FormulaR1C1 = "BGI N°"
         .Range("B1").FormulaR1C1 = "Latitude"
         .Range("C1").FormulaR1C1 = "Longitude"
         .Range("D1").FormulaR1C1 = "Accuracy postion"
    End With
    End Sub

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 55
    Points : 35
    Points
    35
    Par défaut
    Hélas le Open.text(YaFichier) me renvoie un message d'erreur comme quoi il attent une fonction.. je continiue à chercher

  13. #13
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    oui j'ai gafffé c'est un des rares cas ou l'on doit utiliser un active.. quelque chose..remplace la ligne par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    Workbooks.OpenText YaFichier
    Set wk = ActiveWorkBook
    ..

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 55
    Points : 35
    Points
    35
    Par défaut
    Ok ça fonctionne.. maintenant le problème c'est que je veux faire la même chose pour 100 fichiers qui ont tous des noms différents.. Celui de l'exemple c'était "algeria" ici.

    C'est là que je ne sais pas si je peux lui demander d'ouvrir tous les fichiers 1 par 1 sans lui indiquer le nom de chacun.

    Là je crains demander l'impossible..

  15. #15
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    non c'est pas impossible, va falloir juste nous dire le liens entre tes fichiers

    par exemple, ils sont tous sur le même répertoire ? où bien ils ont une particularité commune dans la construction de leur nom ? ou bien tu as liste des nom de fichiers à traiter ...

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 55
    Points : 35
    Points
    35
    Par défaut
    Voilà pour vous éclairer un peu.. Ce sont 100 fichier représentant chacun 1 pays, chacun regroupe des données géophysiques de chaque pays. Du coup, oui ils sont tous dans le même répertoire mais hélas aucun lien entre leur nom.. Exemple "algeria", "angola" "pakistan"..

    Merci encore pour votre disponibilité

  17. #17
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    Il t'est toujours possible dans ce cas (même répertoire) de construire la liste de tes fichiers (ceux qui sont dans ce répertoire) à l'aide de la fonction Dir (tu en as un exemple dans ton aide en ligne, sur ta machine).

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 55
    Points : 35
    Points
    35
    Par défaut
    ok je vais regarder sur la toile car évidemment excel m'annonce que l'aide n'est pas installée et ne veut pas le faire....

  19. #19
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    pour mieux structure ton code tu doit créer une procédure prenant en paramétre un nom de fichier et le traitant ..

    que doit faire ta procédure ? , j'ai vu dans ton code précédent que tu rajouté une entête, mais ensuite tu en fait quoi de ton fichier ?

    bon je suppose que tu sauve ton classeur excel sur le même répertoire


    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
     
    Sub YaLance
    Const Rep = "C:\YAREP\" ' le répertoire contenant mes fichiers..
    Dim UnFichier as string
     
    UnFichier = dir (Rep & "*." ) 'Listing des fichier sans extensions..
    While UnFiChier <> ""
       JeTraite Rep & UnFichier 'Traitement du fichier 
      UnFichier = Dir 'Fichier suivant 
    Wend
    end Sub
     
    'Procedure de traitement du fichier 
    Sub JetRaite (YaFichier as string )
      Dim wk as workbook
      Workbooks.OpenText YaFichier
      Set wk = ActiveWorkBook
      '.... A completer
      wk.save
      wk.close true 'ferme et enregistre fichier
    End Sub

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 55
    Points : 35
    Points
    35
    Par défaut
    Merci, ma procédure est relativement simple, elle doit importer le fichier sous excel et le classer en colonnes et ajouter des titres. j'arrive d'ailleur à le faire pour un fichier.
    Là je vais donc tenter de tous les traiter d'un seul coup

    Si je comprends bien:
    le traitement va se faire en 2 étapes:
    -en premier un listing des noms de fichiers
    -puis la procédure de mise en forme.

    En revanche que représente la fonction JeTraite? Je dois l'annoncer je suppose

    Voici l'intégralité de mon code ça vous évitera de regarder les messages précédents,
    merci
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    Option Explicit
     
     
    Dim UnFichier As String
    Dim YaFichier As String
    Const Rep = "C:\Documents and Settings\sgallo\Desktop\Elodie_fichier\" ' le répertoire contenant mes fichiers..
     
     
     
     
     
    Private Sub CommandButton1_Click()
     
     
    YaFichier = "C:\Documents and Settings\sgallo\Desktop\Elodie_fichier\Algeria"
     
    Workbooks.OpenText YaFichier, Origin:= _
          437, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), _
          Array(8, 1), Array(16, 1), Array(25, 1), Array(27, 1), Array(29, 1), Array(30, 1), Array(38 _
          , 1), Array(40, 1), Array(42, 1), Array(44, 1), Array(52, 1), Array(61, 1), Array(67, 1), _
          Array(73, 1), Array(76, 1), Array(79, 1), Array(85, 1), Array(87, 1), Array(91, 1), Array( _
           93, 1), Array(99, 1), Array(105, 1), Array(108, 1), Array(111, 1), Array(112, 1), Array(113 _
           , 1), Array(120, 1), Array(126, 1)), TrailingMinusNumbers:=True
     
     
    Sheets("algeria").Select
    Sheets("algeria").Rows("1:1").Select
        Selection.Insert Shift:=xlDown
        Sheets("algeria").Range("A1").Select
        ActiveCell.FormulaR1C1 = "BGI Source N°"
        Sheets("algeria").Range("B1").Select
        ActiveCell.FormulaR1C1 = "Latitude"
        Sheets("algeria").Range("C1").Select
        ActiveCell.FormulaR1C1 = "Longitude"
        Sheets("algeria").Range("D1").Select
        ActiveCell.FormulaR1C1 = "Accuracy position"
        Sheets("algeria").Range("E1").Select
        ActiveCell.FormulaR1C1 = "Syst. Position"
        Sheets("algeria").Range("F1").Select
        ActiveCell.FormulaR1C1 = "Type observation"
        Sheets("algeria").Range("G1").Select
        ActiveCell.FormulaR1C1 = "Station elevation"
        Sheets("algeria").Range("H1").Select
        ActiveCell.FormulaR1C1 = "Elevation type"
        Sheets("algeria").Range("I1").Select
        ActiveCell.FormulaR1C1 = "Accuracy elevation"
        Sheets("algeria").Range("J1").Select
        ActiveCell.FormulaR1C1 = "Determination elevation"
        Sheets("algeria").Range("K1").Select
        ActiveCell.FormulaR1C1 = "Sup elevation"
        Sheets("algeria").Range("L1").Select
        ActiveCell.FormulaR1C1 = "Observed gravity"
        Sheets("algeria").Range("M1").Select
        ActiveCell.FormulaR1C1 = "Free air"
        Sheets("algeria").Range("N1").Select
        ActiveCell.FormulaR1C1 = "Bouguer"
        Sheets("algeria").Range("O1").Select
        ActiveCell.FormulaR1C1 = "Dev free air"
        Sheets("algeria").Range("P1").Select
        ActiveCell.FormulaR1C1 = "Dev Bouguer"
        Sheets("algeria").Range("Q1").Select
        ActiveCell.FormulaR1C1 = "CT"
        Sheets("algeria").Range("R1").Select
        ActiveCell.FormulaR1C1 = "Info terrain"
        Sheets("algeria").Range("S1").Select
        ActiveCell.FormulaR1C1 = "CT density"
        Sheets("algeria").Range("T1").Select
        ActiveCell.FormulaR1C1 = "Accuracy gravity"
        Sheets("algeria").Range("U1").Select
        ActiveCell.FormulaR1C1 = "Correction gravity"
        Sheets("algeria").Range("V1").Select
        ActiveCell.FormulaR1C1 = "Ref station"
        Sheets("algeria").Range("W1").Select
        ActiveCell.FormulaR1C1 = "Apparetus"
        Sheets("algeria").Range("X1").Select
        ActiveCell.FormulaR1C1 = "Country"
        Sheets("algeria").Range("Y1").Select
        ActiveCell.FormulaR1C1 = "Confidentiality"
        Sheets("algeria").Range("Z1").Select
        ActiveCell.FormulaR1C1 = "Validity"
        Sheets("algeria").Range("AA1").Select
        ActiveCell.FormulaR1C1 = "N° station"
        Sheets("algeria").Range("AB1").Select
        ActiveCell.FormulaR1C1 = "Sequence N°"
        Sheets("algeria").Range("A1:AB10396").Select
        Sheets("algeria").Range("B8").Activate
        Sheets("algeria").Columns("C:C").EntireColumn.AutoFit
        ChDir "C:\Documents and Settings\sgallo\Desktop\Elodie_fichier"
        ActiveWorkbook.SaveAs Filename:= _
            "C:\Documents and Settings\sgallo\Desktop\Elodie_fichier\Book1.xls", _
            FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
        ActiveWindow.Close
     
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. importation des fichiers avec play sous forme excel
    Par missplay dans le forum Play!
    Réponses: 0
    Dernier message: 03/03/2014, 09h57
  2. Impossibilité d'ouvrir des fichiers avec Access
    Par kmarcel dans le forum Access
    Réponses: 2
    Dernier message: 26/05/2008, 17h07
  3. Ouvrir des fichiers avec leur logiciel par défaut
    Par SyLvErStOrM dans le forum Langage
    Réponses: 3
    Dernier message: 24/04/2008, 17h56
  4. Enregistrer des fichier en DBF sous Excel 2003
    Par dadymars dans le forum Excel
    Réponses: 1
    Dernier message: 23/09/2007, 18h00
  5. Enregistrer des fichier en DBF sous Excel 2007
    Par filigane dans le forum Excel
    Réponses: 1
    Dernier message: 20/09/2007, 11h56

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