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 :

Travailler sur plusieurs classeur ouverts dont on ne connait pas le nom complet.


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Travailler sur plusieurs classeur ouverts dont on ne connait pas le nom complet.
    Salut,
    je vous explique mon problème, je dois ouvrir tout les fichiers qui se trouvent dans un dossier(ça c'est bon) et récupérer des données pour les coller dans un autre classeur.
    Le hic c'est que mes fichiers ont un nom qui change tout les mois ex: "mineur02simu_histo.txt" le 02 représentant février et de plus certains fichiers n'ont pas d'extension du tout ex: "majeur02simu".

    Il me faudrait une commande de ce style: mineur??simu_histo.txt

    existe-t-elle?
    Merci d'avance

  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 543
    Points
    15 543
    Par défaut
    Déjà, tu as la liste de tes fichiers qui semblent être tous des fichiers texte. Qu'ils aient ou non une extension, tu peux les ouvrir en tant que tels (OpenText)
    Pour les fichiers comportant le N° du mois, une question se pose : Souhaites-tu identifier le mois ?
    Pour les traiter et les identifier, tu peux créer une liste de leurs noms et lancer la macro de traitement correspondant à chacun d'eux sur sélection dans cette liste (???) Tu peux également utiliser un "Select case..."
    Plus de précision, nous permettrait de t'en dire plus...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je n'ai pas besoin d'identifier le mois, ce sera une application qui sera lancée une fois par mois.
    C'est pour ça qu'une commande me permettant de laisser 2 caractère non fixe serai parfaite pour moi.

  4. #4
    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 535
    Points
    5 535
    Par défaut
    Bonsour,

    Je rappelle que la fonction Dir permet :
    - de passer en revue tous les fichiers d'un répertoire
    - l'utilisation de jokers... pour le nom des fichiers à recenser (en ignorant les autres)...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos réponses.

    Comment utiliser cette fonction Dir avec ce type de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim wb As Workbook
     
    wb = Dir(real??simu_histo.txt) 'cette commande ne marche pas
     
    ThisWorkbook.Worksheets("Feuil2").Range("A1").Value = wb.Worksheets("Feuil2").Range("A1").Value

  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 543
    Points
    15 543
    Par défaut
    Tu n'as pas l'aide en ligne ? A Dir, il y a une page d'explications qu'il serait inutile de transcrire ici...
    Tu as même des exemples et des explications sur l'utilisation des jokers.
    Tu regardes et si tu as encore des difficutés... on bouge pas

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    J'ai lu l'aide mais mon problème c'est que je n'ai pas le chemin d'accès du fichier, J'utilise ThisWorkbook.Path pour recuperer le chemin de mon classeur donc il me faudrait quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dir("ThisWorkbook.Path\real(??)simu_histo.txt")
    mais je ne trouve pas la syntaxe.

    Désolé si mes questions sont un peu bêtes mais je ne suis pas expert, et cela fait un moment que je n'avais plus codé. merci pour vos réponses

  8. #8
    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 543
    Points
    15 543
    Par défaut
    Regarde ici, ce code permet de retrouver un fichier où qu'il soit dans les répertoires et sous-répertoires d'un volume.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je ne comprend pas du tout ta réponse(désolé)
    Mais apparemment c'est pour rechercher un fichier, moi mon fichier est ouvert, et il se trouve dans le même répertoire que le classeur contenant la macro donc je voudrais juste pouvoir l'appeler sans connaitre les caractères correspondants au mois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Worksheets("Feuil2").Range("A1").Value = Workbook("real??simu_histo.txt").Worksheets("Feuil2").Range("A1").Value
    en gros la syntaxe juste du code en rouge.

  10. #10
    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 543
    Points
    15 543
    Par défaut
    Et si tu essayais ThisWorkbook.path ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Worksheets("Feuil2").Range("A1").Value = ThisWorkbook.path

  11. #11
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par doodoms Voir le message
    moi mon fichier est ouvert
    Dommage qu'il faille attendre le neuvième message pour avoir cette information!

    Donc, le chemin n'est d'aucune utilité.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Désolé je croyait que vous l'aviez compris:
    je dois ouvrir tout les fichiers qui se trouvent dans un dossier(ça c'est bon)
    mais c'est vrai que c'est pas très clair encore désolé.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    J'ai trouvé une solution utilisant une inputbox pour demander à l'utilisateur à quel mois appartiennent les fichiers sources et ainsi remplir le "blanc" dans le nom du fichier.
    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
    Sub Ouvre_Fichier2()
     
    Dim Wk As Object
    Dim rep As Object
    Dim Chemin As String
    Dim startrow As Integer
    'Définit une variable qui va représenter un classeur
    Dim wb As Workbook
    'Définit une variable qui va représenter une feuille de calcul
    Dim Ws As Worksheet
    'Définit une variable qui va représenter une cellule
    Dim cell As Range
    'définit une variable définissant le mois des fichiers sources
    Dim mois As String
     
    Dim i As Integer
    Dim j As Integer
     
     
    mois = InputBox("Indicateurs de quel mois: jan = 01; fev = 02 etc.")
     
    j = 1
     
     
     
    Chemin = ThisWorkbook.Path 'chemin de ce classeur
    Set rep = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
     
    For Each Wk In rep.Files 'pour tout les fichier du répertoire courant ouvrir le fichier
        If Wk.Name <> ActiveWorkbook.Name Then
        Workbooks.Open Filename:=Wk, Format:=4 'format:=4 ";" format:=2 ","
     
            If ActiveWorkbook.Name = "majeur" & mois & "simu_histo.txt" Then
     
                For Each Ws In ActiveWorkbook.Worksheets
                i = 0
                    'Boucle sur chaque cellule de la plage A1:A10
                    For Each cell In Ws.Range("A1:A1000")
                        'Si la cellule contient la valeur "objet", on colore en vert
                        If cell.Value = "objet" Then cell.Interior.ColorIndex = 4
                        i = i + 1
                        'Si la cellule contient la valeur "objet", on copie la collone B dans ce classeur
                        If cell.Value = "objet" Then
                        ThisWorkbook.Worksheets("Feuil2").Range("A" & j).Value = Ws.Range("B" & i).Value
                        j = j + 1
                        End If
                    Next cell
                Next Ws
     
                Else
            End If
     
        End If
     
    Next
     
         MsgBox "Fini!"
    End Sub
    Merci à tous pour votre aide!

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

Discussions similaires

  1. Copier une feuille d'un classeur dont on ne connait pas le nom
    Par macromagnon dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/04/2014, 22h11
  2. [XPATH] Selectionner des noeuds dont on ne connait pas le nom
    Par Lolo19 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/09/2009, 15h38
  3. Réponses: 6
    Dernier message: 20/12/2007, 15h04
  4. Réponses: 9
    Dernier message: 27/07/2007, 08h49
  5. travail sur plusieur classeur
    Par calimero91 dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 12/01/2006, 15h37

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