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 et fermer automatiquement un tableau Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut Ouvrir et fermer automatiquement un tableau Excel
    Bonjour,

    Je m'y connais pas beaucoup en VB et je suis en train de créer une fonction qui me permet de récupérer certaines données d'un tableau Excel pour les transférer vers un tableau récapitulatif.

    Voilà la fonction que j'ai faite. Elle récupère certaines données de la fiche X, pour les transférer dans mon tableau final en remplissant horizontalement à partir de la colonne 7. A chaque fiche, on change de ligne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub CommandButton1_Click()
     
    Dim derlig As Integer, i As Integer, mavar As String
     
    derlig = Workbooks("CoordonnéesBIPI.xls").Sheets("Antony").Range("g65536").End(xlUp).Row + 1
     
    For i = 11 To 22
    mavar = Workbooks("Fiche_PI_BI_920190001.xls").Sheets("Page 1").Cells(i, 3).Value
    Workbooks("CoordonnéesBIPI.xls").Sheets("Antony").Cells(derlig, i - 4).Value = mavar
     
    Next
     
    End Sub


    Mon problème c'est que j'ai près de 300 fiches à transférer dans ce même tableau. J'aimerai donc une fonction qui me permet d'ouvrir ma première fiche, de transférer les données sur le tableau de sortie puis de fermer la fiche.
    En recliquant sur mon bouton, la fonction ouvre la fiche suivante (les numéros de fiche se suivent), transfère les données et ferme, etc...

    J'espère que j'ai été assez clair.

    Merci d'avance

  2. #2
    Membre expérimenté
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Par défaut
    bonjour

    Est-ce que le nom de tes tableaux à récupérer ont un format normalisé ?
    Par exemple de la forme : Données0001.xls; Données0002.xls; ...

    Est-ce ces tableaux sont tous dans le même répertoire ?

    Si c'est oui dans les deux cas, il existe une solution simple.

    à plus

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut
    Bonjour,

    Alors mes tableaux sont de la forme suivante : Fiche_PI_BI_920190001.xls; Fiche_PI_BI_920190002.xls; etc...

    J'ai deux dossiers différents, avec a peu près 150 tableaux dans chaque. Seul les 5 premiers chiffres diffèrent, ils correspondent a un code postal :

    Fiche_PI_BI_916450001.xls
    Fiche_PI_BI_920190001.xls

    Voila !

  4. #4
    Membre expérimenté
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Par défaut
    bonjour

    voici un bout de code à inclure dans un module.
    lance la procédure "test" qui te demanderas de choisir un fichier Excel dans le répertoire de ton choix. Tu peux choisir n'importe quel fichier mais seuls ceux débutants par "Fiche_PI_BI_" seront ouverts et fermés sans sauvegarde l'un après l'autre
    tu devras inclure ta procédure de copie de données après "place ici ton code de traitement"
    il faudra lancer la procédure pour chaque répertoire

    à plus

    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
    Sub test()
        Application.ScreenUpdating = False
     
        Fichier_Analyse = ThisWorkbook.Name
        Call RechercheFichier(Chemin, Fichier)
        Windows(Fichier_Analyse).Activate
     
     
        Fichier_à_Analyser = Dir(Chemin & "\Fiche_PI_BI_*.xls")
        If Fichier_à_Analyser <> "" Then
            Do
                Application.StatusBar = "Traitement du fichier " & Fichier_à_Analyser
     
                Workbooks.Open Filename:= _
                    Chemin & "\" & Fichier_à_Analyser, local:=True
                Windows(Fichier_à_Analyser).Activate
     
                '-----------------
                '---place ici ton code de traitement
                '-----------------
     
     
                '-----------------
                Windows(Fichier_à_Analyser).Activate
                ActiveWindow.Close SaveChanges:=False
     
                Fichier_à_Analyser = Dir
                If Fichier_à_Analyser = "" Then Exit Do
            Loop
        End If
        Application.StatusBar = ""
        Beep
        Application.ScreenUpdating = True
     
    End Sub
     
    Sub RechercheFichier(Chemin, Fichier)
        If Chemin <> "" Then
            '--- Se place dans le répertoire de l'application ---
            Path = Chemin
            Lect = Left(Path, 1)
            ChDrive Lect
            If InStr(1, Path, "\", 1) <> 0 Then
                ChDir Path
            End If
        End If
     
        fileToOpen = Application _
            .GetOpenFilename("(*.xls),*.xls")
     
        x = 0
        Do
            x = InStr(x + 1, fileToOpen, "\")
            If x = 0 Then Exit Do
            Memox = x
        Loop Until x = 0
        Chemin = Left(fileToOpen, Memox)
        Fichier = Right(fileToOpen, Len(fileToOpen) - Memox)
     
        '--- Se place dans le répertoire de l'application ---
        Path = Chemin
        Lect = Left(Path, 1)
        ChDrive Lect
        If InStr(1, Path, "\", 1) <> 0 Then
            ChDir Path
        End If
    End Sub

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut
    Merci pour ton morceau de code. Je l'ai testé, mais j'ai un message d'erreur qui se produit "Erreur de compilation, élément nommé introuvable".

    Alors j'ai essayé par bout de code, la première partie marche, mais à partir de la partie en rouge il y a une erreur.

    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
    Sub test()
    
        Dim derlig As Integer, i As Integer, mavar As String
    
        Application.ScreenUpdating = False
    
        Fichier_Analyse = ThisWorkbook.Name
        Call RechercheFichier(Chemin, Fichier)
        Windows(Fichier_Analyse).Activate
    
    
        Fichier_à_Analyser = Dir(Chemin & "\Fiche_PI_BI_*.xls")
        If Fichier_à_Analyser <> "" Then
            Do
                Application.StatusBar = "Traitement du fichier " & Fichier_à_Analyser
    
                Workbooks.Open Filename:= _
                    Chemin & "\" & Fichier_à_Analyser, local:=True
                Windows(Fichier_à_Analyser).Activate
    
    
            derlig = Workbooks("CoordonnéesBIPI.xls").Sheets("Antony").Range("g65536").End(xlUp).Row + 1
    
        For i = 11 To 22
                mavar = Workbooks("Fiche_PI_BI_920190001.xls").Sheets("Page 1").Cells(i, 3).Value
                Workbooks("CoordonnéesBIPI.xls").Sheets("Antony").Cells(derlig, i - 4).Value = mavar
    
        Next
    
                Windows(Fichier_à_Analyser).Activate
                ActiveWindow.Close SaveChanges:=False
    
                Fichier_à_Analyser = Dir
                If Fichier_à_Analyser = "" Then Exit Do
            Loop
        End If
        Application.StatusBar = ""
        Beep
        Application.ScreenUpdating = True
    '
    End Sub
     
    Sub RechercheFichier(Chemin, Fichier)
        If Chemin <> "" Then
            '--- Se place dans le répertoire de l'application ---
            Path = Chemin
            Lect = Left(Path, 1)
            ChDrive Lect
            If InStr(1, Path, "\", 1) <> 0 Then
                ChDir Path
            End If
        End If
        
        fileToOpen = Application _
            .GetOpenFilename("(*.xls),*.xls")
        
        x = 0
        Do
            x = InStr(x + 1, fileToOpen, "\")
            If x = 0 Then Exit Do
            Memox = x
        Loop Until x = 0
        Chemin = Left(fileToOpen, Memox)
        Fichier = Right(fileToOpen, Len(fileToOpen) - Memox)
        
        '--- Se place dans le répertoire de l'application ---
        Path = Chemin
        Lect = Left(Path, 1)
        ChDrive Lect
        If InStr(1, Path, "\", 1) <> 0 Then
            ChDir Path
        End If
    End Sub
    Et ça ne t'ennuie pas, est ce que tu pourrais me détailler un peu ce que fait le code ? Que je m'y retrouve un peu

    Merci d'avance !

  6. #6
    Membre expérimenté
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Par défaut
    bonjour

    c'est curieux je n'ai pas d'erreur avec mon fichier de test :
    http://cjoint.com/?ekruIgRtCG
    essaye le et dis moi si tu as toujours l'erreur ?
    à plus

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut
    J'ai exactement la même erreur avec ton fichier de test

  8. #8
    Membre expérimenté
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Par défaut
    J'ai Excel 2002 et toi ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut
    J'ai Excel 2000 ! Visiblement y a un problème de version.

  10. #10
    Membre expérimenté
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Par défaut
    bonjour

    essaye de modifier le nom de la variable "Fichier_à_Analyser " par "FichierAnalyser " par exemple.
    Il se pourrait que le "à" pose problème

    à plus

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut
    Visiblement ça va mieux, mais il y avait un soucis aussi avec le "local:= True" qui ne passait pas non plus.

    Maintenant j'ai un message d'erreur de ce style "Erreur définie par l'application ou par l'objet" et il ne m'indique pas l'endroit ou il pourrait y avoir une erreur.

  12. #12
    Membre expérimenté
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Par défaut
    exécute le code en mode pas à pas. Tu devrais trouver le morceau qui pose problème.
    à plus

Discussions similaires

  1. [XL-2013] ouvrir et fermer powerpoint via macro excel
    Par yeti7984 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/09/2023, 11h20
  2. [Excel] Création automatique de tableau excel
    Par rockncaly dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 20/01/2012, 17h14
  3. Importation automatique de tableau Excel dans Access
    Par asengs dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/09/2010, 11h54
  4. [WD-2003] Insertion automatique de Tableau Excel
    Par jojoboloss dans le forum Word
    Réponses: 3
    Dernier message: 01/12/2009, 08h10
  5. ouvrir et fermer un classeur sous excel
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/11/2008, 17h17

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