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 :

[VBA-Excel] Macro de mise à jour de Report


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Par défaut [VBA-Excel] Macro de mise à jour de Report
    Bonjour à tous,
    En fait j'essaye de faire une macro Excel et comme j'ai un peu de mal je me suis dit que peut être quelqu'un pourrait me venir en aide.

    J'explique la problématique :

    J'ai 50 fichiers Excel mis à jours tous les trimestres.
    Sur chaque fichier Excel j'ai un rapport de 1 à 50 lignes sur 20 colonnes
    Je voudrais copier tous ces rapports sur un fichier récapitulatif.

    En fait ce que je ne veux pas, c'est avoir les noms des fichiers dans la macro mais que la macro cherche tout seul dans le dossier, les fichiers Excel présent et les ouvrir et faire le copier coller sur le récapitulatif.

    J’ai déjà réalisé la macro qui copie colle sur le fichier récapitulatif (mais que d'un seul fichier et j'ai pas envi de répéter la même macro 50 fois, car le jour ou un nouveau fichier apparaîtra il faudra retourner dans la macro)

    Voici le code pour le "copié collé" :

    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 Recup_Auto_contenu()
     
    Workbooks.Open Filename:= _
    "C:\Documents and Settings\bidule\Bureau\Classeur2.xls" 
     
     
    Sheets("Export").Select
                  Range("A1").Select
                  Selection.CurrentRegion.Select
                  Selection.Copy
     
                  Windows("salut.xls").Activate
     
               Dim i As Integer
               For i = 2 To 200
     
     
                If Range("A" & i).Value = Range("A65000").Value Then Range("A" & i).Select: ActiveSheet.Paste: Exit For
               Next i
     
    End Sub
    A la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks.Open Filename:= _
    "C:\Documents and Settings\bidule\Bureau\Classeur2.xls"
    J’aimerais bien lancer une autre macro qui ouvre un autre fichier une sorte de boucle qui ferais tour à tour tous les fichiers du dossier


    Enfin une dernière question :
    Est il possible de faire dans la boucle, de rajouter une fonction qui permettrais de copier le nom du fichier ?
    En fait chaque fichier est nommé d’une façon précise.
    Style: 3premiere lettre du nom puis un code de 3 chiffres.

    Si vous voulez savoir dans quel cadre je m’occupe de ceci, c’est dans le cadre d’un petit stage.
    Dans mon école on n’a pas suivi de cours de VBA donc j’essaye de faire ce que je peux.

    Merci D’avance de vôtre aide.
    Bonne journée

  2. #2
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut
    voilà un début de réponse peut-être : en utilisant un object FileSystemObject, tu peux lister le contenu d'un dossier et effectuer des traitement sur chacun des fichiers du dossier.

    Exemple :

    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
    Sub mOpenFiles()
     
        Dim oFSO As Object
        Dim oFiles As Object
        Dim oFolders As Object
        Dim sFolder As String
     
        sFolder = "C:\chemin_du_repertoire"
        Set oFSO = CreateObject("Scripting.FileSystemObject")
        Set oFolders = oFSO.GetFolder(sFolder)
        Set oFiles = oFolders.Files
        For Each fichier In oFiles
            'tes manipulations sur les fichiers
        Next
        Set oFiles = Nothing
        Set oFolders = Nothing
        Set oFSO = Nothing
     
    End Sub
    Bon dev...
    laloune

  3. #3
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Par défaut
    Super efficace et rapide.
    Je vais commencer par regarder ça tout de suite.
    Si d'autres personnes ont des idées je suis preneur

  4. #4
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut
    Citation Envoyé par strifer
    Enfin une dernière question :
    Est il possible de faire dans la boucle, de rajouter une fonction qui permettrais de copier le nom du fichier ?
    En fait chaque fichier est nommé d’une façon précise.
    Style: 3premiere lettre du nom puis un code de 3 chiffres.
    je ne comprends pas le "rajouter une fonction qui permettrait de copier le nom du fichier". Le copier d'où ? et le coller où (si je présume bien)

    laloune

  5. #5
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Par défaut
    En fait, copier le nom du fichier vers un tableau excel grâce à une fonction qui pourrais faire la manip du click droit renomer (sous windows) puis copier et hop direction tableau excel et hop collé.
    Mon maitre de stage veut que la macro reconnaisse tout seul le nom de l'entreprise et le marché vu que ces informations sont présentes sur le nom.
    Mais bon ça c'est un reve de maitre de stage.
    Pour le moment je vais me charger de l'exploration des dossiers.

    Merci beaucoup.

  6. #6
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut
    Citation Envoyé par strifer
    En fait, copier le nom du fichier vers un tableau excel grâce à une fonction qui pourrais faire la manip du click droit renomer (sous windows) puis copier et hop direction tableau excel et hop collé.
    ca doit être mon manque de sommeil, mais je ne vois pas le rapport entre copier le nom du fichier et le click droit > renommer...

    voilà le process tel que je le comprends :

    - tu copies le nom du fichier excel source et tu le colles dans un autre fichier excel
    - tu renommes ton fichier excel source
    - tu ouvres ton fichier excel source
    - tu copies les cellules de ton fichier excel source pour les coller dans un autre fichier excel

    ca doit pas être ca (ca ne me parait pas très logique
    laloune

  7. #7
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Par défaut
    En gros :
    J'ai 50 fichiers Excel de petit rapport et disons que j'ai un fichier qui s'appelle "tru002.xls"
    Je récupère ce nom et je le copie dans une cellule d'un fichier excel.
    Et je fais la même chose pour tous les fichiers présents dans le dossier.
    Puis je traite le fichier Excel contenant tous les nom, de façon à séparer le tru du 002. (Dans deux cellules différentes)
    Puis faire comprendre que tru c'est l'entreprise "truc" et que le 002 veut dire qu’ils sont dans le marché "machin chose"
    Tu vois un peu mieux ?

    Au passage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For j = 2 To 20000
                  Sheets("Récap").Select
                  Range("A1").Select
                  If Range("B" & j).Value = Range("X65000").Value Then Range("A2:I" & j).Select: Selection.Copy: Exit For
                  Windows("salut.xls").Activate
               Next j
    J’aimerais bien savoir si :
    Est correct.
    Je voulais simplement faire une sélection : de A2 à Ij (j étant normalement, la cellule ou il n'y a plus rien)

    EDIT :
    Et autre chose :

    Dans le oFiles, il y a 30 item et dans chaque item le nom est disponible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each fichier In oFiles
    Il faudrait mettre quoi pour qu'il fasse ouvrir le fichier du premier item puis la macro de copie-colle
    puis ouvrir le fichier du deuxieme item etc ....

    merci encore

  8. #8
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut
    Citation Envoyé par strifer
    Est correct.
    ma foi oui

    Citation Envoyé par strifer
    Dans le oFiles, il y a 30 item et dans chaque item le nom est disponible

    Il faudrait mettre quoi pour qu'il fasse ouvrir le fichier du premier item puis la macro de copie-colle
    puis ouvrir le fichier du deuxieme item etc ....
    dynamise simplement la chaine chemin & nom du fichier à ouvrir, du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For each fichier in oFiles
    Workbooks.Open Filename:= fichier.Path
    'après tu peux faire tes manips sur les fichiers
    Next
    au passage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A2:I" & j).Select
    Selection.Copy
    est pareil que :

    sauf que l'un prend 2 lignes et l'autre 1 seule

    Bon dev...
    laloune

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

Discussions similaires

  1. Mise à jour Crystal Report
    Par cgo dans le forum Bases de données
    Réponses: 3
    Dernier message: 31/10/2018, 16h18
  2. Réponses: 4
    Dernier message: 05/05/2015, 16h22
  3. Macro de mise à jours d'un fichier excel
    Par jumpers70 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/02/2012, 14h41
  4. [VBA-EXcel] Timer pour mise jour automatique
    Par Dos dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/09/2006, 20h36
  5. [VBA Excel]. Pb de mise à jour de UserForm (checkBox)
    Par ExecelMans dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/08/2006, 11h06

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