Selection fichier

ricoco

XLDnaute Junior
Hello

je souhaite savoir comment faire lorsque je clic sur bouton qui se trouve sur page excel celui ci ouvre l'explorateur pour sélectionner un fichier une fois sélectionner ce fichier le chemin du fichier s'inscrit dans une case.
j'ai déjà trouver ca mais c un début

Sub Chemin()
'***Ouvre la boite de dialogue
dlgAnswer = Application.Dialogs(xlDialogOpen).Show
End Sub

merci
 

Staple1600

XLDnaute Barbatruc
Re : Selection fichier

Re

Sans utiliser Outlook
Voir CDO
Voici un exemple de code de Ron de Bruin
(glané dans un "vieux fil du forum" et il y en a plein d'autres qui parlent de CDO)
Code:
Option Explicit
'This procedure will send the ActiveSheet in a new workbook
'For more sheets use : Sourcewb.Sheets(Array("Sheet1", "Sheet3")).Copy
Sub CDO_Mail_ActiveSheet_Or_Sheets()
 'Working in 97-2007
Dim FileExtStr$, FileFormatNum&
Dim Sourcewb As Workbook
Dim Destwb As Workbook
Dim TempFilePath$, TempFileName$
Dim iMsg As Object, iConf As Object, Flds As Variant


    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With
    Set Sourcewb = ActiveWorkbook
     'Copy the ActiveSheet to a new workbook
    ActiveSheet.Copy
    'Or if you want to copy more than one sheet use:
    'Sourcewb.Sheets(Array("Sheet1", "Sheet3")).Copy
    Set Destwb = ActiveWorkbook
    'Determine the Excel version and file extension/format
    With Destwb
        If Val(Application.Version) < 12 Then
             'You use Excel 97-2003
            FileExtStr = ".xls": FileFormatNum = -4143
        Else
            'You use Excel 2007
            'We exit the sub when your answer is NO in the security dialog that you only
            'see  when you copy a sheet from a xlsm file with macro's disabled.
            If Sourcewb.Name = .Name Then
                With Application
                    .ScreenUpdating = True
                    .EnableEvents = True
                End With
                MsgBox "Your answer is NO in the security dialog"
                Exit Sub
            Else
                Select Case Sourcewb.FileFormat
                Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
                Case 52:
                    If .HasVBProject Then
                        FileExtStr = ".xlsm": FileFormatNum = 52
                    Else
                        FileExtStr = ".xlsx": FileFormatNum = 51
                    End If
                Case 56: FileExtStr = ".xls": FileFormatNum = 56
                Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
                End Select
            End If
        End If
    End With
    'Save the new workbook/Mail it/Delete it
    TempFilePath = Environ$("temp") & "\"
    TempFileName = "Extrait de" & Sourcewb.Name & " " & Format(Now, "dd-mmm-yy h-mm-ss")
    With Destwb
        .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
        .Close savechanges:=False
    End With
    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")
iConf.Load -1    ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.tonserveursmtp.fr"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Update
End With
    With iMsg
        Set .Configuration = iConf
        .To = "toto@machin.fr" 'adresse du destinataire
        .CC = ""
        .BCC = ""
        .From = """bocaramel""<bocaramel@truc.fr >" 'ton adresse
        .Subject = "Essai d’envoi feuille XL"
        .TextBody = "Quoi de neuf, docteur?"
        .AddAttachment TempFilePath & TempFileName & FileExtStr
        .Send
    End With
    'Delete the file you have send
    Kill TempFilePath & TempFileName & FileExtStr


    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Selection fichier

Re

Relire mon message précédent ( j'ai ajouté un exemple)

Rassures-toi ce que tu sembles vouloir faire est possible.
Ce qui est plus ardu c'est le code VBA en lui-même et si tu ne maîtrises pas trop le VBA alors il te faudra un peu de patience.
 

ricoco

XLDnaute Junior
Re : Selection fichier

voici le code que je test

Sub wcf2()
Dim arrFichiers As Variant
arrFichiers = Application.GetOpenFilename(MultiSelect:=True)
If IsArray(arrFichiers) Then
[A1].Resize(, UBound(arrFichiers)) = arrFichiers
Else
MsgBox "Aucun(s) fichier(s) sélectionné(s)."
End If
End Sub


si je sélectionne 2 fichiers il me les met dans A1 et A2......
si je sélectionne 3 fichiers il me les met dans A1, A2 et A3 ......

Comme je les dit précedament ma macro d'envoie de mail vas cherche en A1 le fichier a envoyer
voila ma macro

Sub MAIL_2()
Sheets("BASE").Select
Dim d As String
Dim CC As String
Dim E As String
Dim S As String
Dim t As String
Dim pj As String
d = Range("C7").Value
CC = Range("C7").Value
E = Range("C9").Value
S = Range("C11").Value
t = Range("C13").Value
pj = Range("A1").Value
Dim Cdo_Message As New CDO.Message
Set Cdo_Message.Configuration = GetSMTPServerConfig2()
With Cdo_Message
.To = d
.CC = CC
.From = E
.Subject = S
.TextBody = t
If Not IsMissing(pj) Then
.AddAttachment pj
End If
.Send
End With
success = MsgBox(nbmessages & "BRAVO !!!! VOTRE MAIL A BIEN ETE ENVOYE AVEC SUCCES A SON DESTINATAIRE - CLIQUER SUR OK POUR CONTINUER !", vbInformation)
End Sub
Function GetSMTPServerConfig2() As Object
Dim Cdo_Config As New CDO.Configuration
Dim Cdo_Fields As Object
Set Cdo_Fields = Cdo_Config.Fields
With Cdo_Fields
.Item(cdoSendUsingMethod) = cdoSendUsingPort
.Item(cdoSMTPServer) = "smtp.gmail.com"
.Item(cdoSMTPServerPort) = 465
.Item(cdoSendUserName) = "xxxx@gmail.com"
.Item(cdoSendPassword) = "xxxx"
.Item(cdoSMTPAuthenticate) = cdoBasic
.Item(cdoSMTPUseSSL) = True
.Update
End With
Set GetSMTPServerConfig2 = Cdo_Config
Set Cdo_Config = Nothing
Set Cdo_Fields = Nothing
End Function
 

Staple1600

XLDnaute Barbatruc
Re : Selection fichier

Re

Essaie déjà de savoir si CDO fonctionne sur ton PC avec ce petit exemple.
ATTENTION: Ne pas oublier de faire les changemnts nécéssaire
Mets ton adresse email gmail valide pour tester.

NB: Je viens de tester sur mon PC et cela marche parfaitement.
Code:
Sub TestCDO_OK()
Dim oCDO
Set oCDO = CreateObject("CDO.Message")
With oCDO
   With .Configuration.Fields
     .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = "465"
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = "true"
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = "1"
     .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "emailvalide@gmail.com" 'CHANGER ICI
     .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "MOTDEPASSE" ' ICI METTRE TON VRAI MOT DE PASSE
     .Update
    End With
.From = "emailvalide@gmail.com" '-< EMAIL DE L'EMETTEUR (DONC TOI) (mettre ton email gmail)
.to = "emailvalide@gmail.com" ' -< EMAIL DESTINATAIRE (Pour le test remettre ton email
.Subject = "Test Envoi EMAIL"
.TextBody = "Message pour test ENVOI EMAIL par CDO via VBA"
.Send
End With
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Selection fichier

Bonsoir à tous

ricoco
Si cela fonctionne parfaitement!
Mais tu n'arrives pas à le faire fonctionner chez toi, nuance ;)

Quel ton FAI?
Quel est ton OS?
Quelle est ta version d'Excel?
Quel serveur SMTP as-tu utilisé?
As-tu une adresse Gmail.com?
Si tu as une adresse Gmail, as-tu modifié le code VBA en conséquence? (nom adresse email et mot de passe)
 

Staple1600

XLDnaute Barbatruc
Re : Selection fichier

Bonsoir à tous

ricoco
Décidément il te faut tout cuit dans le bec ;)
(NB: J'ai testé et cela fonctionne donc inutile de me dire dans ton prochain message que cela ne fonctionne pas. :rolleyes:)
Code VBA:
Sub TestCDOMAIL_PLUS_PJ_OK()
'Ici exemple configuré pour envoyer un seul fichier joint
'Je te laisse essayer de faire les modifications pour envoyer plusieurs pièces jointes
'c-a-d effectuer les recherches nécessaires sur le net pour trouver quelles sont ces modifications.
Dim oCDO, PJ$
Set oCDO = CreateObject("CDO.Message")
'Choix de la PJ
SelectionPJ
PJ = Range("A1").Text
If Len(PJ) > 0 Then
With oCDO
With .Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = "465"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = "true"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = "1"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxxxx@gmail.com" 'CHANGER ICI
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "MOTDEPASSE" ' ICI METTRE TON VRAI MOT DE PASSE
.Update
End With
.From = "xxxxx@gmail.com" '-< EMAIL DE L'EMETTEUR (DONC TOI) (mettre ton email gmail)
.to = "xxxxx@gmail.com" ' -< EMAIL DESTINATAIRE (Pour le test remettre ton email
.Subject = "Test Envoi EMAIL"
.TextBody = "Message pour test ENVOI EMAIL + une pièce jointe par CDO via VBA"
.AddAttachment PJ
.Send
End With
End If
End Sub

Code VBA:
Sub SelectionPJ()
Dim arrFichiers As Variant
arrFichiers = Application.GetOpenFilename(MultiSelect:=True)
If IsArray(arrFichiers) Then
[A1].Resize(, UBound(arrFichiers)) = arrFichiers
Else
MsgBox "Aucun(s) fichier(s) sélectionné(s)."
End If
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Selection fichier

Bonsoir tout d'abord, non ;)

Cherches encore...
Rien ne presse.
Et le web est grand, et les infos qu'il te faut s'y trouve forcément.
Moi je vais me coucher (ou pas)

PS: On est bien d'accord que si tu sélectionnes un seul fichier , le code du précédent message fonctionne, non ?
 

Discussions similaires

Réponses
2
Affichages
138

Statistiques des forums

Discussions
312 472
Messages
2 088 713
Membres
103 932
dernier inscrit
clotilde26