Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

10 réponses

1 2
Avatar
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
Avatar
Guy85
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" 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




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




Avatar
Guy85
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
Guy85
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" a écrit dans le message de news:

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
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" a écrit dans le message de news:
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" 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










Avatar
michdenis
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à.
**************************************************
Avatar
Daniel.C
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" a écrit dans le message de news:
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" 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