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 :

sélection partie 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 averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Par défaut sélection partie de nom de fichier
    Bonjour à tous et toutes,

    je souhaite automatiser la mise en forme de fichiers que je reçois chaque mois. Je copie/colle des parties de ces fichiers "bruts" vers des fichiers "mis en forme". Comme je suis ultra débutant j'ai enregistré une macro que je vous copie ci-dessous:

    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
    Sub test()
    '
    ' test Macro
    '
     
    '
        Windows("acc juin 2011.xls").Activate
        Range("A1:H13").Select
        Selection.Copy
        Application.WindowState = xlMinimized
        Windows("TRANSIT EN FORME.xls").Activate
        Sheets("acc").Select
        Range("A1").Select
        ActiveSheet.Paste
        Windows("achats juin 2011.xls").Activate
        Range("A1:G11").Select
        Application.CutCopyMode = False
        Selection.Copy
        Application.WindowState = xlMinimized
        Windows("TRANSIT EN FORME.xls").Activate
        Sheets("achats").Select
        Range("A1").Select
        ActiveSheet.Paste
    End Sub
    comme chaque mois le nom des fichiers source gangent, comment puis je faire pour que la macro ignore une partie du nom du fichier. Dans le cas ci-dessus ignorer "juin 2011" ou autre possibilité ne prendre que les 5 premières lettres du nom du fichier.

    Pouvez vous m'aider? D'avance grand merci.
    Djepi

    Edité 25/09/11 à 23h36 Désolé pour le non emploi de la balise code.

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2011
    Messages : 34
    Par défaut
    Je pense qu'un "like" avant la partie de nom du fichier qui t’intéresse peut être une solution.

    Pour plus d'infos l'aide VBA est assez bien faite:

    tape like sur n'importe quelle ligne de vba, surligne avec la souris et appuie sur F1

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Essaie comme ceci (je n'ai pas retouché autrement ton code qui pourrait être simplifié) :

    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
    Sub test()
    '
    ' test Macro
    '
     
    '
    Dim w As Window, i As Integer
    For i = 1 To Windows.Count
        If Left(Windows(i).Caption, 4) = "acct" Then
            Set w = Windows(i)
        End If
    Next i
    w.Activate
    Range("A1:H13").Select
    Selection.Copy
    Application.WindowState = xlMinimized
    Windows("TRANSIT EN FORME.xls").Activate
    Sheets("acc").Select
    Range("A1").Select
    ActiveSheet.Paste
    w.Activate
    Range("A1:G11").Select
    Application.CutCopyMode = False
    Selection.Copy
    Application.WindowState = xlMinimized
    Windows("TRANSIT EN FORME.xls").Activate
    Sheets("achats").Select
    Range("A1").Select
    ActiveSheet.Paste
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Teste ce qui suit mais attention, les 2 feuilles du classeur copié doivent se nommer "acc" et "achats", adapte si ce n'est pas le cas car dans ta macro les feuilles copiées ne sont pas précisées :
    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
     
    Sub test()
     
        Dim Cl As Workbook
        Dim ClForme As Workbook
     
        Set ClForme = Workbooks("TRANSIT EN FORME.xls")
     
        'attention, pour le classeur copié, les feuilles se nomment "acc" et "achats"
        'à adapter
        For Each Cl In Workbooks
     
            If InStr(Cl.Name, "acc") <> 0 Then
     
                Cl.Worksheets("acc").Range("A1:H13").Copy ClForme.Worksheets("acc").Range("A1")
     
            End If
     
            If InStr(Cl.Name, "achats") <> 0 Then
     
                Cl.Worksheets("achats").Range("A1:G11").Copy ClForme.Worksheets("achats").Range("A1")
     
            End If
     
        Next cel
     
    End Sub
    Hervé.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Par défaut sélection partie de nom de fichier
    merci Polyamide,Daniel et Theze pour vos réponses.

    Polyamide, je suis encore trop débutant et je n'ai pas encore eu le temps nécessaire mais je n'ai pas su mettre la solution "like" en route.

    Daniel j'ai essayé de faire fonctionner ta macro mais j'ai un message :erreur
    d'exécution '13' incompatibilité de type et c'est la ligne set w=windows(i) qui est surlignée.

    Thèse j'ai modifié le nom des feuilles comme tu le demandais et tout marche très bien. Grand merci. Si je peux encore poser une question j'aimerais que tu m'indiques comment il faut modifier ta macro si le fichier excel 'Transit en forme.xls' se trouve à l'adresse C:\mes documents\DEVOK alors que tous les autres fichiers excel (acc, achats, etc...) se trouvent à l'adresse C:\mes documents\DEVBRUT .
    D'avance merci pour l'aide précieuse.
    Djepi

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Donc, si j'ai bien compris, tu souhaiterais ouvrir les classeurs automatiquement ?
    Indique nous avec assez de précisions la marche à suivre afin de ne pas te donner des réponses erronées qui finiront par semer la pagaille.

    Hervé.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 01/12/2011, 17h52
  2. Réponses: 10
    Dernier message: 17/11/2011, 16h37
  3. Renommage d'une partie de nom de fichiers en masse et aussi à l'intérieur
    Par sclinard dans le forum Shell et commandes POSIX
    Réponses: 2
    Dernier message: 17/09/2010, 15h02
  4. Réponses: 4
    Dernier message: 27/09/2007, 15h05
  5. Réponses: 2
    Dernier message: 18/01/2007, 21h05

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