Recherche du fichier

Le
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:ú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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #21472661
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
Guy85
Le #21472781
Bonjour Daniel,
Ça ne fonctionne pas.
Je ne sais pas si cela à une importance ?
Actuellement la fenêtre de choix s'ouvre sur le dossier "Météo" (que je n'ai
pas noté dans le message précédent).
Puis je choisi le dossier "Relevés".
Puis le dossier "Mars".
Cordialement
Guy

"Daniel.C"
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




michdenis
Le #21472951
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"
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
FFO
Le #21472941
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 !!!!!
Daniel.C
Le #21472931
J'ai sans doute mal compris. Le classeur est bien dans le dossier
Relevés ? Et Mars est bien un sous-dossier de Relevés ?
Daniel

Bonjour Daniel,
Ça ne fonctionne pas.
Je ne sais pas si cela à une importance ?
Actuellement la fenêtre de choix s'ouvre sur le dossier "Météo" (que je n'ai
pas noté dans le message précédent).
Puis je choisi le dossier "Relevés".
Puis le dossier "Mars".
Cordialement
Guy

"Daniel.C"
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




Guy85
Le #21473031
Bonjour FFO,
Ça ne fonctionne pas plus.

"FFO"
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 !!!!!

Guy85
Le #21473011
Bonjour,
Là ,je suis un peu embêté car je suis en EXCEL 2010
Je n'arrive pas à trouver comment exécuter une macro (manuellement ou avec
un bouton)
Les boutons que j'ai existaient déjà avant

"michdenis"
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" 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

Guy85
Le #21473111
Non le dossier "Météo 2010" (avec le code) se trouve dans le dossier
"Météo".
Après il y a un sous-dossier "Relevés" avec les dossiers
"Janvier"......"Février".........."Mars".etc
Et le dossier "Mars" comprend 30 fichiers de 01-Mars 2010 à 30-Mars 2010.


"Daniel.C" OTe9%
J'ai sans doute mal compris. Le classeur est bien dans le dossier Relevés
? Et Mars est bien un sous-dossier de Relevés ?
Daniel

Bonjour Daniel,
Ça ne fonctionne pas.
Je ne sais pas si cela à une importance ?
Actuellement la fenêtre de choix s'ouvre sur le dossier "Météo" (que je
n'ai pas noté dans le message précédent).
Puis je choisi le dossier "Relevés".
Puis le dossier "Mars".
Cordialement
Guy

"Daniel.C"
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










michdenis
Le #21473101
Pour indiquer le chemin à "GetOpenFileName", tu crées toi-même le chemin

'Déclaration des variable
Dim Chemin As String, Lecteur As String

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

'Supposons que ton répertoire de départ est : "tototiti"
'Et que tu veuilles ajouter le résultat de ta sélection, tu le
'fais par concaténation comme ceci :
Répertoire = "tototiti" & NomDeTaSélection & ""

' Chemin -> rassemble dans une variable le chemin final de tes fichiers
Chemin = Lecteur & ":" & Répertoire

'Un petit test pour savoir si le chemin indiqué existe vraiment
If Dir(Chemin, vbDirectory) = "" Then
'Si le chemin n'existe pas...
MsgBox "Chemin introuvable"
Exit Sub
Else
'Si le chemin existe, on s'assure qu'il devient le répertoire courant.
ChDir Chemin
End If

Le reste de ta procédure.


Pour répondre à ta questions sur les boutons :
**************************************************
Tu dois d'abord ajouter un élément dans la ligne de menu : "Développeur"

Pour ce faire,
un clic sur le gros bouton "office" dans le coin supérieur gauche de l'application.
Dans le bas de la page, un clic sur le bouton "Options Excel"
Dans la section de gauche, choisis le premier item du haut de la fenêtre
Dans la section de droite, tu coches l'option "Afficher l'item développeur"

Tu fermes les fenêtres par "OK"

Dans la barre du menu, tu remarqueras l'ajout "Développeur"
un clic dessous et sous le regroupement "Contrôle", la commande
"insertion". Les boutons de la barre "formulaire" et "contrôle"
sont là.
**************************************************
Daniel.C
Le #21473211
ChDir ThisWorkbook.Path & "RelevésMars"
Daniel

Non le dossier "Météo 2010" (avec le code) se trouve dans le dossier
"Météo".
Après il y a un sous-dossier "Relevés" avec les dossiers
"Janvier"......"Février".........."Mars".etc
Et le dossier "Mars" comprend 30 fichiers de 01-Mars 2010 à 30-Mars 2010.


"Daniel.C" OTe9%
J'ai sans doute mal compris. Le classeur est bien dans le dossier Relevés ?
Et Mars est bien un sous-dossier de Relevés ?
Daniel

Bonjour Daniel,
Ça ne fonctionne pas.
Je ne sais pas si cela à une importance ?
Actuellement la fenêtre de choix s'ouvre sur le dossier "Météo" (que je
n'ai pas noté dans le message précédent).
Puis je choisi le dossier "Relevés".
Puis le dossier "Mars".
Cordialement
Guy

"Daniel.C"
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










Publicité
Poster une réponse
Anonyme