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 :

Fichier vierge qui execute la meme macro peu importe le fichier selectionne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Liban

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 22
    Par défaut Fichier vierge qui execute la meme macro peu importe le fichier selectionne
    Bonjour,

    J'ai fait un fichier vierge sur Excel qui recupère certaines données d'un fichier A situé dans un dossier G par macro.
    Ceci fonctionne parfaitement quand il s'agit de recupérer les infos du fichier A situé dans le dossier G.
    Maintenant, ce que je souhaiterai faire, c'est que quand l'utilisateur ouvre le fichier vierge, il clique sur un bouton qui lui permet de selectionner le fichier dans le dossier G et là, la meme macro de base (celle qui récupère les données) s'exécute mais récupère les données du fichier sélectionné par l'utilisateur.

    J'ai deja fait la macro qui lit les données d'un fichier. J'ai également fait celle qui permet d'ouvrir le dossier G et de sélectionner le fichier que l'on veut mais seulement j'arrive pas à faire le lien entre les 2 macros : la sélection puis la lecture de la sélection.

    Merci d'avance.

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Tu peux les rabouter dans la même macro par copier-coller, en enlevant les lignes de trop. Ou bien tu peux essayer un assemblage de ce genre-là:

    Appeler la macroB à la fin de la macroA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sub macroA
         etc.
         macroB
    End sub
    Ou bien pour "faire plus beau":

    Utiliser une troisième macro pour appeler les deux autres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub macroC
         macroA
         MacroB
    End sub

  3. #3
    Membre averti
    Femme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Liban

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 22
    Par défaut Imbrication de macros
    Je te remercie beaucoup pour ta réponse rapide et claire. Mais je pense qu'en fait le problème vient de mon code dans la macro B pour appeler le fichier selectionne en macro A.


    Macro A : elle ouvre une boite de dialogue pour selectionner le fichier que je veux

    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
    Public Sub openAnalyse()
     
        Dim fd As FileDialog
     
        Set fd = Application.FileDialog(msoFileDialogFilePicker)
     
        Dim vrtSelectedItem As Variant  
        With fd
     
            .InitialFileName = "G:\Plans\Formulaires"
     
                If .Show = -1 Then
     
                    For Each vrtSelectedItem In .SelectedItems
     
                    MsgBox "Vous avez sélectionné : " & vrtSelectedItem
                    File_Select = vrtSelectedItem
     
                Next vrtSelectedItem
     
            'Au cas ou l'utilisateur appuie sur Cancel...
            Else
                'Dans ce cas je sors.
                Exit Sub
            End If
        End With
    End Sub

    Macro B : elle récupère les données que je souhaite d'un fichier particulier Formulaire_1.xlsx


    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
    Const rep_data = "G:\Plans\Formulaires"
    Const sh_data = "ABCL"
     
    Public Sub Recup_data()
     
    Dim strPath As String
    Dim strFile As String
    Dim wrk As Workbook
    Dim cel As String
    Dim i As Integer
     
    strFile = Dir(rep_data & "\" & "Formulaire_1.xlsx")
     
    i = 0
    Do While strFile <> ""
        Set wrk = Workbooks.Open(rep_data & "\" & strFile)
     
             i = i + 1
     
     
            cel = wrk.Sheets(sh_data).Cells(1, 10).Value
            tableau = Split(cel, ":")
            dat = Trim(tableau(1))
            ThisWorkbook.Sheets("Bilan").Cells(6, 2).Value = dat
     
      wrk.Close True
        strFile = Dir
    Loop
     
    End Sub
    Voilà les codes et je souhaiterai que la macro B ne récupère pas Formulaire_1 mais au contraire, le fichier sélectionné dans la macro A.

    Merci.

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,



    Citation Envoyé par yaya.gaga Voir le message
    Je te remercie beaucoup pour ta réponse rapide et claire. Mais je pense qu'en fait le problème vient de mon code dans la macro B pour appeler le fichier selectionne en macro A.


    Macro A : elle ouvre une boite de dialogue pour selectionner le fichier que je veux
    Macro B : elle récupère les données que je souhaite d'un fichier particulier Formulaire_1.xlsx


    Voilà les codes et je souhaiterai que la macro B ne récupère pas Formulaire_1 mais au contraire, le fichier sélectionné dans la macro A.

    Merci.
    Ah ! OK. Dans ce cas, tu peux passer un (des) paramètres d'une macro à une autre:

    Note que je ne peux pas tester pour l'instant, mais, à première vue, cela devrait au moins ressembler à ceci.

    Tu adaptes ta première macro comme suit:


    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
     Public Sub openAnalyse()
        Dim fd As FileDialog
         Set fd = Application.FileDialog(msoFileDialogFilePicker)
         Dim vrtSelectedItem As Variant  
        With fd
             .InitialFileName = "G:\Plans\Formulaires"
     
               If .Show = -1 Then
     
                    For Each vrtSelectedItem In .SelectedItems
     
                    MsgBox "Vous avez sélectionné : " & vrtSelectedItem
                    File_Select = vrtSelectedItem
     
                Next vrtSelectedItem
            'Appeler l'autre macro en lui transmettant la valeur choisie
             Recup_data(vrtSelectedItem)
            'Au cas ou l'utilisateur appuie sur Cancel...
            Else
                'Dans ce cas je sors.
                Exit Sub
                      End If
        End With
    End Sub
    et ta seconde comme ceci:

    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
    Public Sub Recup_data(fichier as string)
     
    Dim wrk As Workbook
    Dim cel As String
    Dim i As Integer
      'Ton paramètre "fichier" est traité comme une variable
        Set wrk = Workbooks.Open(fichier)
     
            cel = wrk.Sheets(sh_data).Cells(1, 10).Value
            tableau = Split(cel, ":")
            dat = Trim(tableau(1))
            ThisWorkbook.Sheets("Bilan").Cells(6, 2).Value = dat
     
      wrk.Close True
     
    End Sub
    P.S. Pour mettre les balises de code, c'est le dièse (#)

Discussions similaires

  1. [XL-97] Execution de la macro à la création du fichier
    Par Kartoon67 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 27/05/2009, 10h01
  2. Fichier VBS qui execute une Procedure dans Access
    Par djodu69 dans le forum VBScript
    Réponses: 4
    Dernier message: 16/10/2008, 13h57
  3. ouvrir plusieurs fichiers et appliquer à chacun une meme macro
    Par sebhm dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/06/2008, 11h16
  4. Execution d'une macro sans ouverture du fichier
    Par mhamedbj dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 21/12/2007, 11h02
  5. [VBA] Menu qui pointe sur une macro contenue dans un fichier xla protégé
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/08/2007, 14h34

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