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 :

récupération de nom de fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Par défaut récupération de nom de fichier
    Bonjour à tous le monde

    Un tout petit problème vient se poser à moi aujourd'hui.
    Comment faire pour récupérer le nom de fichier à partir de cette procédure ?

    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
    Sub Récup_données()
    'Declaration des variables
    Dim strCsv As String, strTemp() As String
    Dim wb As Workbook, wbTemp As Workbook, shG As Worksheet, shR As Worksheet, shTemp As Worksheet
    Dim I As Integer
    On Error Resume Next
    'Désactivation du rafraichissement d'écran
    Application.ScreenUpdating = False
    'Attribution des object feuilles "GOOD" et "REJECT" ainsi que du classeur
    Set wb = ThisWorkbook
    Set shG = wb.Sheets("GOOD")
    Set shR = wb.Sheets("REJECT")
    MsgBox "Selection du fichier GOOD"
    'sélection du fichier "GOOD"
    strCsv = Application.GetOpenFilename("All Files ,*.*", , "Sélectionner le fichier des pièces GOOD à ouvrir")
    'Sortir de la procédure si "Annuler"
    If strCsv = "False" Then Exit Sub
    'Vider les feuilles "GOOD" et "REJECT"
    shG.Cells.Delete
    shR.Cells.Delete
    'Ouvrir fichier "GOOD"
    Workbooks.OpenText strCsv, xlWindows, 1, xlDelimited, , , True, , , , , , , , "."
    'Copier contenu dans feuille "GOOD"
    ActiveSheet.Cells.Copy shG.Cells(1, 1)
    'Fermeture du fichier
    ActiveWorkbook.Close False
    'Calculer le nom du fichier "REJECT"
    'On admet qu'il se trouve sous le même répertoire
    strTemp = Split(strCsv, "\")
    I = UBound(strTemp)
    strTemp(I) = "R" & Right(strTemp(I), Len(strTemp(I)) - 1)
     
    strCsv = strTemp(0)
    For j = 1 To I
        strCsv = strCsv & "\" & strTemp(j)
    Next j
     
    'Ouvrir et copier fichier "REJECT"
    Workbooks.OpenText strCsv, xlWindows, 1, xlDelimited, , , True, , , , , , , , "."
    ActiveSheet.Cells.Copy shR.Cells(1, 1)
    ActiveWorkbook.Close False
     
    Application.ScreenUpdating = True
    Range("C5").Select
        Selection.FormulaArray = "=COUNT(GOOD!C[-2])"
        Range("C6").Select
        Selection.FormulaArray = "=COUNT(REJECT!C[-2])"
    On Error GoTo 0
    End Sub
    Une petite explication suplémentaire, je voudrais en fait pouvoir récupéré le nom du fichier que j'ouvre avec cette procédure pour le copier dans une base de donnée.
    Par exemple, avec cette procédure j'ouvre le fichier "G20080514", et par la suite je voudrais pouvoir le récupéré et le copier dans ma base de donnée.

    Voila en espérant avoir été le plus clair possible
    Merci d'avance pour votre aide

  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
    Pour enregistrer le fichier contenant les macros, tu mets
    Quant à placer le nom du fichier ouvert, je ne comprends pas ta question. Son nom est contenu dans ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strTemp = Split(strCsv, "\")
    NomFich = strTemp(UBound(strTemp))
    Tu dois le récupérer avant de modifier la valeur de strTemp(I)

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Par défaut
    La procédure que j'utilise copie un fichier comme par exemple "G20080514", et la procédure ouvre un autre fichier en concordance avec la premier et qui commence par un "R" mais qui a la même suite.
    Mais je n'arrive pas à comprendre comment faire, même avec ce que tu me dit ouskel'n'or ...

    Les fichiers que j'ouvre ( ils y en a deux ) sont des données que je copies sur une feuille pour chaque fichier dans mon classeur.
    Les fichiers originaux ne sont pas toucher, il sont ouvert et refermer une fois la copie faite.
    Par la suite j'ai deux autres feuilles qui me permettent de faire des calculs grâce à des macros.
    Une fois la dernière macro fini, tout les calculs que j'ai effectuer se retrouvent eux par la suite copier dans un autre classeur qui me sert de base de donné, et pour plus de facilité de compréhension de cette base de donnée ( enfin c'est mon boss qui veut sa ) je voudrais y inclure le nom du premier fichier que j'ouvre.

  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
    Pourtant, si tu mets simplement le code que je t'ai mis, tu as le nom du fichier ouvert
    Tu veux faire quoi avec ce nom ? Le placer où ? C'est tout ce qui manque à mon code parce que tu ne donnes aucune indication.
    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
    'Vider les feuilles "GOOD" et "REJECT"
    shG.Cells.ClearContents 'remplace Delete par ClearContents 
    shR.Cells.ClearContents 'remplace Delete par ClearContents 
    'Ouvrir fichier "GOOD"
    Workbooks.OpenText strCsv, xlWindows, 1, xlDelimited, , , True, , , , , , , , "."
    'Copier contenu dans feuille "GOOD"
    ActiveSheet.Cells.Copy shG.Cells(1, 1)
    'Fermeture du fichier
    ActiveWorkbook.Close False
    'Calculer le nom du fichier "REJECT"
    'On admet qu'il se trouve sous le même répertoire
    
    'ICI, strCsv est le nom complet de ton fichier, avec son chemin
    strTemp = Split(strCsv, "\")
    'là tu récupères le nom du fichier
    NomFich = strTemp(UBound(strTemp))

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Par défaut
    Le nom du fichier, je voudrais le placer dans un autre classeur qui a pour nom 'Base_de_Donnée', dans la feuille qui a pour nom 'BDD'.
    Le nom sera placé à partir de la case B5.
    A chaque fois que je referais des calculs dans le classeur initial, les informations qui seront copier par la suite dans la base de donnée seront écrites sur la ligne en dessous des précédentes.

  6. #6
    Membre éclairé Avatar de ancel17
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2007
    Messages : 312
    Par défaut
    Bonjour !

    Voilà ce que je propose :

    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
    'On vérifie si ton fichier Base_de_donnée est ouvert, si ce n'est pas le cas on l'ouvre
    For Each Wb In Workbooks
        If Wb.Name = "Base_de_donnée.xls" Then
            Set Wd = Wb
        End If
    Next Wb
     
    If Not Wd.Name = "Base_de_donnée.xls" Then
        Set Wd = Workbooks.Open("Base_de_donnée.xls")
    End If
     
    'On copie le nom du fichier dans la première cellule disponible sous B5
    With Wd.Worksheets("BDD")
        If .Range("B5").Value = "" Then
            .Range("B5").value = NomFich
        Else
            .Range("B5").End(xlDown).Offset(1,0).value = NomFich
        End If
    End With
    Pense à déclarer tes variables Wb et Wd

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

Discussions similaires

  1. Récupération des noms de fichiers d'un même dossier
    Par Contractofoued dans le forum MATLAB
    Réponses: 5
    Dernier message: 16/11/2007, 11h45
  2. récupération des noms de fichiers existant dans un répertoire
    Par tangjuncn dans le forum Général VBA
    Réponses: 1
    Dernier message: 06/11/2007, 20h12
  3. openFileDialog récupération du nom de fichier ouvert
    Par abbd dans le forum Visual C++
    Réponses: 2
    Dernier message: 19/06/2007, 22h48
  4. Réponses: 5
    Dernier message: 03/05/2007, 13h44
  5. [XSLT] Récupération du nom du fichier XML analysé
    Par Patkaza dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 26/01/2005, 11h28

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