bouton parcourir+selection de fichier+execution macro

barry white

XLDnaute Junior
helllo a tous!

Je veux peaufiner l'utilisation de mes macros concernant un projet.

Je veux creer un classeur excel qui regroupera un ensemble bouton VBA. Dont un qui aura pour fonction en clicant dessus :

- d'afficher la boite de dialogue "Ouvrir" ou "pacrourir"
- qu'en selectionant le fichier (toujours XLS) qu il excute une macro.
- suite a l execution de la macro qui me ferme le fichier resultant de la macro.

J'ai mis ce code la :

Code:
Private Sub CommandButton1_Click()
  With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False
        .Show
        UserForm1.TextBox1.Text = .SelectedItems(1)
    End With
End Sub

J'arrive pas a ouvrir le fichier, et surtout je n'arrive pas selectioner la macro que je voudrai qu il execute.

Merci de votre aide!
 

job75

XLDnaute Barbatruc
Re : bouton parcourir+selection de fichier+execution macro

Bonsoir barry white,

Personnellement pour ouvrir un fichier par la boite de dialogue Ouvrir j'utiliserais plutôt le code suivant :

Code:
Private Sub CommandButton1_Click()
Dim Fichier, NomFichier$
Fichier = Application.GetOpenFilename("Fichiers Microsoft Office Excel, *.xls")
If Fichier = False Then Exit Sub
If Fichier Like "*\" & ThisWorkbook.Name Then MsgBox "Ouverture non autorisée.": Exit Sub
On Error Resume Next
Workbooks.Open Fichier
On Error GoTo 0
NomFichier = Dir(Fichier)
Workbooks(NomFichier).Activate
'-------------- [I]suite du code[/I]
End Sub

Pour la suite du code, je ne peux vous aider car je ne sais pas ce que vous voulez faire exactement. Mais vous avez ce qu'il faut pour continuer (nom du fichier).

Edit : j'ai supprimé le 1er signe $ pour que Fichier soit déclaré Variant

A+
 
Dernière édition:

alex67800

XLDnaute Impliqué
Re : bouton parcourir+selection de fichier+execution macro

Code:
Private Sub CommandButton1_Click()
  With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False
        .Show
        UserForm1.TextBox1.Text = .SelectedItems(1)
    End With
End Sub



Bonsoir barry white,
tu ne fais référence à aucun fichier cible dans ta macro. Cela doit-il être toujours le même fichier?

Un exemple srait le bienvenue.

A te lire!
 

barry white

XLDnaute Junior
Re : bouton parcourir+selection de fichier+execution macro

Bonsoir barry white,

Personnellement pour ouvrir un fichier par la boite de dialogue Ouvrir j'utiliserais plutôt le code suivant :

Code:
Private Sub CommandButton1_Click()
Dim Fichier$, NomFichier$
Fichier = Application.GetOpenFilename("Fichiers Microsoft Office Excel, *.xls")
If Fichier = False Then Exit Sub
If Fichier Like "*\" & ThisWorkbook.Name Then MsgBox "Ouverture non autorisée.": Exit Sub
On Error Resume Next
Workbooks.Open Fichier
On Error GoTo 0
NomFichier = Dir(Fichier)
Workbooks(NomFichier).Activate
'-------------- [I]suite du code[/I]
End Sub

Pour la suite du code, je ne peux vous aider car je ne sais pas ce que vous voulez faire exactement. Mais vous avez ce qu'il faut pour continuer (nom du fichier).

A+

marche pas ;)

En gros, suite a la selection du fichier, je voudrai qu il excute une macro (macro qui se trouve dans mon fichier perso.xls) sur le fichier selectioner.

sinon sa peux aider voici mon code (faut pas se moquer, c'est ma premiere fois :D):

Code:
Sub A_MIS_EXTRACT_CHRONO_DEBUT_DPL()
'
' A_MIS_EXTRACT_CHRONO_DEBUT_DPL Macro


'
MsgBox ("Merci de vérifier la bonne saisie des intervenants dans la table des ressources (Pas de caractère spéciaux)")
    
    
'integration des variables
  
    Dim foft, reP, Nom, Nom1, init, Extension, CurrFile, NomModele_Outlook, VT, testpath, MyPath, SaisiE As String
    Dim ti, mail, n As Variant
    Dim i, nbf As Integer
    Dim ol As New Outlook.Application
    Dim olmail As MailItem


Sheets("Table_Taches_chronogramme").Select


'Variable de nb Boucle
    
    nbf = Sheets("Table_Ressources_chronogramme").Range("A65536").End(xlUp).Row

'initialisation variable modele mail

    SaisiE = InputBox("Merci de Saisir l'objet du mail")
    
 
'initialisation des variables pour verifidation du repertoire "_A_TRANSMETTRE"

    VT = "_A_TRANSMETTRE"
    repertoire = ActiveWorkbook.path & "\"
    MyPath = repertoire & VT

'teste existance du repertoire "_A_TRANSMETTRE"

    If (testpath = Dir(MyPath, vbDirectory)) = vbEmpty Then
    
    Else
    
'creation du repertoire "_A_TRANSMETRE" si non existance de celui ci
        
    MkDir repertoire & VT
    
    End If
   
'Initialisation de la boucle

    For i = 2 To nbf
        
'Variable nom
    n = Sheets("Table_Ressources_chronogramme").Range("C" & i).Value
 
'Variable initiale
    ti = Sheets("Table_Ressources_chronogramme").Range("f" & i).Value
    
'Variable mail
    
    mail = Sheets("Table_Ressources_chronogramme").Range("D" & i).Value
    
'Selection table_taches_chronogramme
    
    Sheets("Table_Taches_chronogramme").Select
    
    
'Variable enregistrement du nom de fichier
    
    repertoire = ActiveWorkbook.path & "\_A_TRANSMETTRE\"
    Nom = "MIS_CHRONO_"
    Nom1 = Left(Mid(ActiveWorkbook.name, 22), Len(Mid(ActiveWorkbook.name, 29)) - 4)
    init = (ti)
    date_jour = Format(Date + 1, "MM/DD/yyyy")
    Extension = ".xls"
        
'Filtre sur le Nom de la ressource, a la date du jour +1 et tache d'avancement inferieur a 100%
    
    Range("E1").Select
    SELECTION.AutoFilter
    SELECTION.AutoFilter Field:=4, Criteria1:=(n)
    SELECTION.AutoFilter Field:=7, Criteria1:="<100%", Operator:=xlAnd
    Range("A1:I492").Select
    Range("E1").Activate
    SELECTION.Copy
    
'Ouverture nouveau fichier XLS + copy
    
    Workbooks.Add
    ActiveSheet.Paste
    Application.CutCopyMode = False
    
'Application mise en forme du chrono

    Application.Run "PERSO.XLS!Mettre_en_forme_chrono"
    Rows("4:4").EntireRow.AutoFit
    
'Application macro fixation feuille
    
    Application.Run "PERSO.XLS!Proteger_saisie_figer_feuille_filtrer"
    Range("C2").Select
    
'Enregistrement du fichier
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:= _
    repertoire & Nom & Nom1 & "_" & init & Extension _
    , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
    ReadOnlyRecommended:=False, CreateBackup:=False
    Application.DisplayAlerts = True

'Fermeture fenetre active
    ActiveWindow.Close
    Range("G40").Select
    SELECTION.AutoFilter
    
'déclaration modele outlook

    foft = "\Modele_MISTRAL.oft"
    NomModele_Outlook = ActiveWorkbook.path & foft
        
'Creation de l'objet e-mail
    
    Set AppOut = CreateObject("Outlook.Application")
    Set oMailItem = CreateItemFromTemplate(NomModele_Outlook)
    
'Caractéristiques de l'e-mail
    With oMailItem
    .To = (mail)
   
'Affiche le nom comme objet du message
    .Subject = (SaisiE)
    '.Body = "bonjour Project Mistral"

'Pièces jointes si il y a lieu
'attention le chemin est à changer pour ton besoin

    repertoire = ActiveWorkbook.path & "\_A_TRANSMETTRE\"
    Nom = "MIS_CHRONO_"
    Nom1 = Left(Mid(ActiveWorkbook.name, 22), Len(Mid(ActiveWorkbook.name, 29)) - 4)
    init = (ti)
    Extension = ".xls"
    .Attachments.Add _
    repertoire & Nom & Nom1 & "_" & init & Extension _

'Remplacez .Display par .send pour envoyer directement l'e-mail sans l'afficher dans Outlook
.Display

End With

Next i

End Sub
 
Dernière édition:

barry white

XLDnaute Junior
Re : bouton parcourir+selection de fichier+execution macro

Code:
Private Sub CommandButton1_Click()
  With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False
        .Show
        UserForm1.TextBox1.Text = .SelectedItems(1)
    End With
End Sub



Bonsoir barry white,
tu ne fais référence à aucun fichier cible dans ta macro. Cela doit-il être toujours le même fichier?

Un exemple srait le bienvenue.

A te lire!

J'avais recuperer ce code qq part. sa ressembler a ce que je veux mais c'est pas ca.
 

job75

XLDnaute Barbatruc
Re : bouton parcourir+selection de fichier+execution macro

Re, salut alex,

Dans mon code supprimez le signe $ (qui veut dire As String) après Fichier, en écrivant :

Code:
Dim Fichier, NomFichier$

Par ailleurs, si le bouton est dans l'UserForm, la boîte de de dialogue ne s'ouvre pas. Il faut d'abord fermer l'UserForm. Edition : non, normalement cela ne pose pas de problème, j'avais mal testé.
A+
 
Dernière édition:

barry white

XLDnaute Junior
Re : bouton parcourir+selection de fichier+execution macro

oki.

a cause du code ci dessous il me dit "type défini par l'utilisateur non défini"


Code:
 Dim ol As New Outlook.Application
    Dim olmail As MailItem


J'ai pas ce message quand j'execute la macro seul.

merci encore.
 

Discussions similaires

Réponses
1
Affichages
296
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 198
Messages
2 086 145
Membres
103 130
dernier inscrit
FRCRUNGR