Ouvrir un Fichier Excel Choisi manuellement par l'utilisateur

Hola les amigos !

Malheuresement je pense que ce que je veux faire est.. impossible en VBA

Mais je préfère en avoir le coeur net en vous demandant,

Je veux ouvrir un Fichier Excel par VBA sans connaitre ni le nom ni le chemin de ce dernier, donc j'aimerais qu'il y ait la petite fenêtre qui permette a l'utilisateur d'aller chercher le fichier, pi une fois qu'il fait ouvrir le code continue de s'éxécuter et fait tout son schmilblick ...

A+ dans le bus

Bonjour Gabin, bonjour le forum,

Peut-être comme ça :

Sub Macro1()
Dim CL As Workbook

With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = False
    .Show
    If .SelectedItems.Count = 0 Then Exit Sub
    Application.Workbooks.Open .SelectedItems(1)
End With
Set CL = ActiveWorkbook
End Sub

Oui Oui oui Oui Oui !!!!!!!!!!!!

Merci ThauThème je pensais pas qu'on pouvais faire ca ! je suis trop content je vais pouvoir faire une superbe application pour le taf !

Ciao

J'ai des petites questions pour adapter le code a mon projet, j'aimerais pouvoir ouvrires plusieurs fichiers

Je voudrais pouvoir faire une sorte de Boucle, pour chaque SelectedItems

Private Sub Workbook_Open()

With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = True
    .Show
    If .SelectedItems.Count = 0 Then Exit Sub
    For Each Workbook In .SelectedItems
    Application.Workbooks.Open Book
    Call DFQ_Check(Workbook)
    Next Workbook
End With

End Sub

J'ai testé ca mais marche po.. :-(

Re,

Essaie comme ça :

Private Sub Workbook_Open()
Dim I As Byte

With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = True
    .Show
    If .SelectedItems.Count = 0 Then Exit Sub
    For I = 1 To .SelectedItems.Count
        Application.Workbooks.Open .SelectedItems(I)
    Next I
End With
End Sub

Merci de ton aide,

Si je fais ca c'est bon ? parce que du coup je voudrais éxécuter une macro pour chaques classeur que je vais ouvrir

Private Sub RechercheDFQ_Click()

Dim I As Byte
With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = True
    .Title = "Sélectionner les Fichier .dfq à vérifier"
    .Show
    If .SelectedItems.Count = 0 Then
        MsgBox ("Une Erreur est survenue, l'application va se fermer.")
        ThisWorkbook.Close savechanges = False
    End If
    For I = 1 To .SelectedItems.Count
        Application.Workbooks.Open .SelectedItems(I)
        Call DFQ_Check(.SelectedItems(I))
        Application.Workbooks.Close .SelectedItems(I)
    Next Book
End With

End Sub

sachant que Call DFQ_Check(variable as Workbook)

Parce que faut que je récupère la variable pour pouvoir traiter le classuer que je viens d'ouvrir

Je pensai pas que ca allait etre si compliqué à adapter...

J'en suit la: mes précédents posts ne sont plus d'actualités:

Dim I As Byte                           'Ouverture des DFQ et on éxécute la macro DFQ_Check pour chacun
Dim Book As Workbook
With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = True
    .Title = "Sélectionner les Fichier .dfq à vérifier"
    .Show
    If .SelectedItems.Count = 0 Then
        MsgBox ("Une Erreur est survenue, l'application va se fermer.")
        ThisWorkbook.Close savechanges = False
    End If
    For I = 1 To .SelectedItems.Count
        Application.Workbooks.Open .SelectedItems(I)(Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _
        Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), _
        Array(2, 1)), TrailingMinusNumbers:=True)
        Book = ActiveWorkbook
        Call DFQ_Check(Book)
    Next I
End With

Avec ce message d'erreur:

Incompatibilité de type

sur cette ligne:

Application.Workbooks.Open .SelectedItems(I)(Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _

Re,

Private Sub RechercheDFQ_Click()
Dim CO As Workbook
Dim I As Byte

With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = True
    .Title = "Sélectionner les Fichier .dfq à vérifier"
    .Show
    If .SelectedItems.Count = 0 Then
        MsgBox ("Une Erreur est survenue, l'application va se fermer.")
        ThisWorkbook.Close savechanges = False
    End If
    For I = 1 To .SelectedItems.Count
        Application.Workbooks.Open .SelectedItems(I)
        Set CO = ActiveWorkbook
        Call DFQ_Check(CO)
        CO.Close
    Next I
End With
End Sub

Salut Gabin, Salut Thauthème,

Désolé, je m'incruste un peu par curiosité mais j'ai une petite variante à proposer :

Private Sub RechercheDFQ_Click()

Dim wb as workbook

With Application.FileDialog(msoFileDialogOpen)
    .AllowMultiSelect = True
    .Title = "Sélectionner les Fichier .dfq à vérifier"
    .Show
    .execute
end with

For each wb in workbooks
    if wb.name like "*.dfq" then
        Call DFQ_Check(wb)
    end if
Next wb

End Sub

sachant que la macro DFQ_Check peut peut-être intégrer la méthode .texttocolumns qui permet de diviser le contenu d'une colonne en plusieurs...

Cdlt,

Bonjour messieurs, avec toutes vos réponses j'ai réussis a faire fonctionner ma macro merci.

Si j'ai d'autres soucis je ferais un autre post.

Je ne trouve pas sur le net à quoi sert .execute ?

Salut !

EDIT: execute me fait planter le code donc je l'ai enlevé ! tout marche normalement

Bonjour à tous,

Avec la boite de dialogue d'ouverture de fichiers (msofiledialogopen), .execute permet d'exécuter ce que l'utilisateur a choisi de faire. C'est-à-dire qu'au lieu d'utiliser .selecteditems et de les ouvrir en boucle. On peut multi-sélectionner, cliquer sur ouvrir (ou peut-être appuyer sur entrée !) et la méthode exécute ce qui a été demandé (en principe).

Donc ensuite, on peut boucler sur la collection de classeurs directement.

Je vais essayer quand même car ce n'est pas testé mais je pense que ça marche.

Edit : Ca marche bien de mon côté, simplement avec ouvrir ou avec entrée !

Rechercher des sujets similaires à "ouvrir fichier choisi manuellement utilisateur"