OVH Cloud OVH Cloud

Recherche du fichier

15 réponses
Avatar
Guy85
Bonjour,
Dans l'exécution de ma macro, il ya une fenêtre qui apparaît pour que je
puisse choisir le dossier ou se trouve ce fichier.
Ce qui donne Dossier "Relevés" puis dossier "Mars" et je choisi le fichier
en question.
Y a t'il la possibilité d'aller directement dans le dossier "Mars".
Même si il faut que je change le nom du dossier dans le code au début de
chaque mois.

Sub CSV()

ChDrive (Mid(ThisWorkbook.Path, 1, 1))
ChDir (ThisWorkbook.Path)
Fichier = Application.GetOpenFilename("Fichier CSV (*.csv),*.csv")
If Fichier = False Then
Exit Sub
End If
Sheets.Add
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Fichier,
Destination:=Range("A1"))
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileSemicolonDelimiter = True
.Refresh BackgroundQuery:=False
End With
Columns(4).Replace Chr(160), ""
Columns(10).Replace Chr(160), ""
Range("A4", "J296").Replace ",", "."
Range("A4", "J296").Copy Sheets("Récap").Range("A9")
Application.DisplayAlerts = False
ActiveSheet.Delete
If Range("A9") <> "" Then
Range("K9", "K" & Range("A65535").End(xlUp).Row).Value = Range("A9", "A" &
Range("A65535").End(xlUp).Row).Value
End If

End Sub

Merci de votre aide
Cordialement
Guy

5 réponses

1 2
Avatar
Armel
Bonjour,

Une approche encore différente ...
'
------------------------------------------------------------------------------------------------------------------
' Ne pas oublier de rajouter Microsoft Office Vxx Object Library dans
les références (Outils/Références Editeur VBA)
' (utilisation de msoFileDialogFilePicker)
'
------------------------------------------------------------------------------------------------------------------
' Déclaration variables
Dim FD As FileDialog
Dim Fichier As String, DefaultPath As String

DefaultPath = "C:tototititutu"

Set FD = Application.FileDialog(msoFileDialogFilePicker)
With FD
' Multisélection de fichier désactivée
.AllowMultiSelect = False

' Chemin par défaut
.InitialFileName = DefaultPath

' Filtre de fichier à choisir
.Filters.Add "Sélection fichier", "*.xls"

' Si Bouton "OK"
If .Show = -1 Then
Fichier = .SelectedItems(1)
End If
End With
Set FD = Nothing

Dans ton cas, c'est la variable DefaultPath qui fait la différence, tu
peux très bien la construire à partir d'une récupération de valeur d'une
cellule (donc pas besoin de changer le code vba tous les mois, seulement
une cellule).

La variable Fichier contient le chemin d'accès + le nom du fichier
choisi, à toi d'adapter pour le mode d'ouverture suivant le type (ex :
si fichier excel Workbooks.Open Filename:=Fichier) en pouvant jouer sur
celui-ci (le type !) grâce au filtre de fichier défini.

Ce n'est qu'un exemple, à toi de voir (cf. les diverses propriétés de
msoFileDialogFilePicker sur le web)
Bon courage
Armel

Le 31/03/2010 16:47, michdenis a écrit :
Bonjour,

Une autre approche différente de GetOpenFilename ...
intéressante dans certaines situations.

Dans cette variable, tu peux utiliser les "WildCard"
pour n'afficher dans la fenêtre ouvrante, seulement
les classeurs débutant par exemple "Clas" ayant l'extension .xls"
Fichier = "Clas*.xls"

Cela dépend de ton application...
'--------------------------------------
Sub test()

Dim Chemin As String
Dim Fichier As String
Dim Wk As Workbook, X As Boolean

Chemin = "E:Lecture"
Fichier = "*.xls"

On Error Resume Next
If Dir(Chemin& lecture)<> "" Then
X = Application.Dialogs(xlDialogOpen) _
.Show(Chemin& Fichier)
If Format(X) = True Then
Set Wk = ActiveWorkbook
MsgBox Wk.Name
Else
MsgBox "Aucune sélection a été faite."
End If
Else
MsgBox "Chemin ou fichier inaccessible."
End If
End Sub
'--------------------------------------



"Guy85" a écrit dans le message de groupe de discussion :

Bonjour,
Dans l'exécution de ma macro, il ya une fenêtre qui apparaît pour que je
puisse choisir le dossier ou se trouve ce fichier.
Ce qui donne Dossier "Relevés" puis dossier "Mars" et je choisi le fichier
en question.
Y a t'il la possibilité d'aller directement dans le dossier "Mars".
Même si il faut que je change le nom du dossier dans le code au début de
chaque mois.

Sub CSV()

ChDrive (Mid(ThisWorkbook.Path, 1, 1))
ChDir (ThisWorkbook.Path)
Fichier = Application.GetOpenFilename("Fichier CSV (*.csv),*.csv")
If Fichier = False Then
Exit Sub
End If
Sheets.Add
With ActiveSheet.QueryTables.Add(Connection:="TEXT;"& Fichier,
Destination:=Range("A1"))
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileSemicolonDelimiter = True
.Refresh BackgroundQuery:úlse
End With
Columns(4).Replace Chr(160), ""
Columns(10).Replace Chr(160), ""
Range("A4", "J296").Replace ",", "."
Range("A4", "J296").Copy Sheets("Récap").Range("A9")
Application.DisplayAlerts = False
ActiveSheet.Delete
If Range("A9")<> "" Then
Range("K9", "K"& Range("A65535").End(xlUp).Row).Value = Range("A9", "A"&
Range("A65535").End(xlUp).Row).Value
End If

End Sub

Merci de votre aide
Cordialement
Guy

Avatar
Guy85
J'ai aucune solution qui fonctionne.
Finalement, je vais changer mon fichier "Météo" et le mettre dans le
répertoire ou, il ya les fichiers à récupérer.
Merci quand même de votre aide.
Cordialement
Guy

"Guy85" a écrit dans le message de news:
%
Bonjour FFO,
Ça ne fonctionne pas plus.

"FFO" a écrit dans le message de news:

Salut à toi
Si ces dossiers sont dans le répertoire de ton document modifies cette
ligne
ainsi :

ChDir (ThisWorkbook.Path & "Mars")

Celà devrait te convenir

Dis moi !!!!!





Avatar
michdenis
| J'ai aucune solution qui fonctionne.

Tu as différentes solutions qui sont toutes adaptables à ta situation.

La seule chose qui semble problématique est la détermination du
chemin où sont tes fichiers. Il n'y a pas une solution miracle à rechercher !
Tu es sûrement capable de faire ça tout seul... avec les exemples des autres
fils ou les explications suivantes :

Le résultat s'obtient pas la concaténation entre 3 choses :

A ) Le lecteur - La lettre de la partition qui doit recevoir ton fichier.
Exemple : Lecteur = "c"

B ) La partie fixe de l'arborescence des répertoires
Par défaut (windows7) habituellement les fichiers sont enregistrés :
"UsersNomDuProfilDocuments"
Tu peux décider d'utiliser le chemin que tu désires.

C ) Tu ajoutes au chemin par défaut, le ou les sous-répertoires que tu désires

LE RÉSULTAT est obtenu par la concaténation des 3 parties

MonChemin = Lecteur & ":" & "UsersNomDuProfilDocuments" & _
"sous_Répertoire1" & "" & "sous_Répertoire2" & ""
Si "sous_"Répertoire1" et "sous_Répertoire2" sont des variables, tu ne dois
pas utiliser les guillemets autour d'eux.

ChDrive Lecteur 'Tu t'assures que tu es sur le bon lecteur au cas où l'enregistrement
'se fait sur un lecteur autre que le lecteur courant

'Test pour déterminer si le chemin du répertoire existe
'Au cas où une erreur se serait introduite...
If Dir(monchemin, vbDirectory) = "" Then
MsgBox "Chemin introuvable."
Exit Sub
Else
'si c'est bon, le chemin indiqué devient le répertoire courant,
' ou si tu préfères le répertoire par défaut
ChDir monchemin
End If

La suite de la procédure par l'appel :

LeFichier = Application.GetOpenFileName _
(" Tous les fichiers(*.*), *.*", , _
, MultiSelect:=True)
Avatar
michdenis
Désolé, il s'est glissé une erreur dans mon explication :

'Pour sélectionner le lecteur
Lecteur = "C" ' important tu choisis le lecteur où sont les répertoires
CurDir Lecteur ' Change de lecteur si besoin...

Ce n'est pas "CurDir" qu'il faut utiliser, mais ChDrive()
La ligne de code devrait se lire :
ChDrive Lecteur
Avatar
Guy85
Bonjour Daniel,
Finalement ta solution est bonne.
Mais il fallait que je mette : ChDir (ThisWorkbook.Path) & "RelevésMars
csv"
Merci encore pour votre aide
Cordialement
Guy

"Daniel.C" a écrit dans le message de news:

Bonjour Guy.
Remplace :
ChDir (ThisWorkbook.Path)
par :
ChDir (ThisWorkbook.Path) & "Mars"
Cordialement.
Daniel

Bonjour,
Dans l'exécution de ma macro, il ya une fenêtre qui apparaît pour que je
puisse choisir le dossier ou se trouve ce fichier.
Ce qui donne Dossier "Relevés" puis dossier "Mars" et je choisi le
fichier en question.
Y a t'il la possibilité d'aller directement dans le dossier "Mars".
Même si il faut que je change le nom du dossier dans le code au début de
chaque mois.

Sub CSV()

ChDrive (Mid(ThisWorkbook.Path, 1, 1))
ChDir (ThisWorkbook.Path)
Fichier = Application.GetOpenFilename("Fichier CSV (*.csv),*.csv")
If Fichier = False Then
Exit Sub
End If
Sheets.Add
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Fichier,
Destination:=Range("A1"))
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileSemicolonDelimiter = True
.Refresh BackgroundQuery:úlse
End With
Columns(4).Replace Chr(160), ""
Columns(10).Replace Chr(160), ""
Range("A4", "J296").Replace ",", "."
Range("A4", "J296").Copy Sheets("Récap").Range("A9")
Application.DisplayAlerts = False
ActiveSheet.Delete
If Range("A9") <> "" Then
Range("K9", "K" & Range("A65535").End(xlUp).Row).Value = Range("A9", "A"
& Range("A65535").End(xlUp).Row).Value
End If

End Sub

Merci de votre aide
Cordialement
Guy




1 2