Fichier exemple bien reçu
Bon, j'en connais un qui va s'arracher les cheveux
Mais avant de te dire le problème (je sens le stress qui monte...), je
suppose que la macro qu'il y a sur le fichier 2004-01-14....xls n'est pas
pour moi ?
En fait, ton exemple a bien marcher....(il y a un "mais" qui arrive)
Mais (j'avais raison!!!!) tu as pris comme variable le chiffre 14 présent
dans le fichier 2004-01-14...., j'ai donc voulu essayé avec un autre
fichier
sans le nombre 14 mais 2004-07-13.....
==> il me sors le nombre qui est en A1 de TON fichier càd 2004-01-14...
En fait, ca a très bien marché dès lors que j'ai vu qu'il fallait aussi
changé le 2ème "14" qui était passé inaperçu
En conclusion de ce premier problème, le fait de changer "Jour" par le
nombre recherché, a très bien fonctionné.
En revanche, le "loop" n'a pas fonctionné càd qu'il ne me marque qu'une
valeur en B1 et rien d'autre (pas les valeurs de A1 se situant dans les
autres fichiers contenant le nombre "13") ; je pense que ça vient du X+1
William
PS: pour ceux qui suivent la discussion, voici donc le code de michdenis
qui
a marché
'-------------------------------------------
Sub TrouverMaValeur()
Dim Path As String, file As String
Dim Feuille As String, Ref As String
Dim Jour As Integer, X As Integer
'*******Variables à déterminer********
Jour = 13 ' à déterminer
Path = "P:test" ' à déterminer
Feuille = "Fiche de travail RTB"
Ref = Range("A1").Address
'*******Variables à déterminer********
'merci à michdenis
file = Dir(Path & "*.xls")
Do While file <> ""
If Len(file) - Len(Application.Substitute(file, "-", "")) = 2 Then
If Val(Split(file, "-")(2)) = 13 Then
X = X + 1
'Où la copie aura lieu ... à déterminer
ThisWorkbook.Worksheets("Feuil1").Range("C" & X) = _
GetValue(Path, file, Feuille, Ref)
End If
End If
file = Dir()
Loop
End Sub
'-------------------------------------------------
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal Ref)
As
Variant
' Macro XL4 Merci à John Walkenbach
' ============================= > ' Retrieves a value from a closed workbook
Dim Arg As String
' Make sure the file exists
If Right(Path, 1) <> "" Then Path = Path & ""
If Dir(Path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
Arg = "'" & Path & "[" & file & "]" & sheet & "'!" & _
Range(Ref).Range("A1").Address(, , xlR1C1)
'Execute an XLM macro
GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents
End Function
'-------------------------------------------
"michdenis" a écrit dans le message de news:
Fichier exemple envoyé.
Salutations!
"William" a écrit dans le message de
news:Bonjour Michel,
je serais bien tenté par ta proposition de m'envoyer un exemple.
Je comprends pas ce qui cloche :
Je colle bien ton Sub et ta Public fonction, je renseigne les variables
entre les 2 lignes de ******* et j'exécute la macro TrouverMaValeur(),
maisil ne marque rien!!! même pas un petit message d'erreur (qui sont
d'habitude si crispant)
Ne devrais-je pas changer les "sheet" de la Public Fonction ??
Est-ce que j'exécute mal le module ??
En espérant ne pas t'exaspérer...
William
"michdenis" a écrit dans le message de news:Bonjour William,
Essaie ceci, j'ai seulement modifier un truc pour tenir compte de ta
chaîne de caractères des noms de fichiers.
Sur demande, je t'envoie un exemple...
'-------------------------------------------
Sub TrouverMaValeur()
Dim Path As String, file As String
Dim Feuille As String, Ref As String
Dim Jour As Integer, X As Integer
'*******Variables à déterminer********
Jour = 14 ' à déterminer
Path = "C:Excel" ' à déterminer
Feuille = "Fiche de travail RTB"
Ref = Range("A1").Address
'*******Variables à déterminer********
file = Dir(Path & "*.xls")
Do While file <> ""
If Len(file) - Len(Application.Substitute(file, "-", "")) = 2 Then
If Val(Split(file, "-")(2)) = 14 Then
X = X + 1
'Où la copie aura lieu ... à déterminer
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
End If
End If
file = Dir()
Loop
End Sub
'-------------------------------------------------
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)As Variant
' Macro XL4 Merci à John Walkenbach
' ============================= > > > ' Retrieves a value from a closed workbook
Dim Arg As String
' Make sure the file exists
If Right(Path, 1) <> "" Then Path = Path & ""
If Dir(Path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
Arg = "'" & Path & "[" & file & "]" & sheet & "'!" & _
Range(Ref).Range("A1").Address(, , xlR1C1)
'Execute an XLM macro
GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents
End Function
'-------------------------------------------
Salutations!
"William" a écrit dans le message de
news:La procédure que tu m'as donné devrait, en effet, marcher. J'arrive à
la
suivre, à la comprendre mais je dois me rater qque part.à cette fonction, j'ai ajouté la variable JOUR et cela était pour
extraireseulement certains fichiers qui avaient dansleur nom (format date) un jour (dd) particulier sans tenir compte du
moisou de l'année.
Exactement ce que je voulais.
Il me semble que c'est un problème de syntaxe des éléments que j'ai à
définir.
Concernant la cellule A1, 3 possibilités : groupe 3000, groupe 5000 et
groupe 7000 (donc toujours le mot "groupe")
Concernant l'apparence des noms des feuilles voici un exemple : "Fiche
detravail RTB" les autres noms étant de cet accabit ; auccun mot
réccurentmais les noms sont tous connues et c'est un des éléments qui me
permettraune ségrégation des infos.
Et voici des noms de fichiers :
2004-07-09_17h01m45sGroupe 5000Fiche de travail RTB.xls
2004-07-09_16h56m32sGroupe 3000Fiche de travail RTB.xls
2004-07-09_16h41m04sGroupe 5000Fiche de travail RTB.xls
A noter que j'avais bien remplit les variables à déterminer, comme
ceci
:Jour = 09 ' à déterminer
Path = "P:CONTROLESPRODUCTION"
Feuille = "Fiche de travail RTB"
Ref = Range("A1").Address ==> et pas "groupe 5000" comme dans
mon
postprécédent où il y a eu un mauvais couper-coller
Oublierais-je des choses à faire dans le reste de la formule?
j'espère que je n'oublie rien
William
"michdenis" a écrit dans le message de news:Bonjour William,
Ceci détermine le nom de ton classeur :
nom = Format(Now, "yyyy-MM-dd_hh""h""mm""m""ss""s") & _
ActiveSheet.Range("A1").Text & ActiveSheet.Name & ".xls"
Si tu me donnais en clair à quoi ressemble la chaîne de caractères
représentant le nom de 2 ou 3 classeurs, celafaciliterait la tâche pour savoir comment extraire le nom de la
feuilledel'ensemble de la chaîne. Que contient lacellule A1 et quelle apprence ont le noms de tes feuilles ?
En principe c'est "facile" la procédure "TrouverMaValeur" extrait la
valeur d'un fichier à partir des paramêtres decette fonction : GetValue(Path, file, Feuille, Ref) , il s'agit
donc
quetu renseignes (définissent) chaque élément decette fonctiion avant de l'appeler.
PATH = Chemin et répertoire où se trouve tes fichiers
File = Nom du fichier
Feuille = Nom de la feuille
Ref = référence à une adresse particulière d'une cellule.
à cette fonction, j'ai ajouté la variable JOUR et cela était pour
extraireseulement certains fichiers qui avaient dansleur nom (format date) un jour (dd) particulier sans tenir compte du
moisou de l'année.
'-------------------------------------------------
Sub TrouverMaValeur()
Dim Path As String, file As String
Dim Feuille As String, Ref As String
Dim Jour As Integer, X As Integer
'*******Variables à déterminer********
Jour = 25 ' à déterminer
Path = "C:Excel"
Feuille = "Feuil1"
Ref = Range("A1").Address
'*******Variables à déterminer********
file = Dir(Path & "*.xls")
Do While file <> ""
If Len(file) - Len(Application.Substitute(file, "-", "")) = Jour
ThenIf Val(Split(file, "-")(2)) = Jour Then
X = X + 1
'Où la copie aura lieu ... à déterminer
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
End If
End If
file = Dir()
Loop
End Sub
'-------------------------------------------------
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)As Variant
' Macro XL4 Merci à John Walkenbach
' ============================= > > > > ' Retrieves a value from a closed workbook
Dim Arg As String
' Make sure the file exists
If Right(Path, 1) <> "" Then Path = Path & ""
If Dir(Path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
Arg = "'" & Path & "[" & file & "]" & sheet & "'!" & _
Range(Ref).Range("A1").Address(, , xlR1C1)
'Execute an XLM macro
GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents
End Function
'-------------------------------------------------
Salutations!
Fichier exemple bien reçu
Bon, j'en connais un qui va s'arracher les cheveux
Mais avant de te dire le problème (je sens le stress qui monte...), je
suppose que la macro qu'il y a sur le fichier 2004-01-14....xls n'est pas
pour moi ?
En fait, ton exemple a bien marcher....(il y a un "mais" qui arrive)
Mais (j'avais raison!!!!) tu as pris comme variable le chiffre 14 présent
dans le fichier 2004-01-14...., j'ai donc voulu essayé avec un autre
fichier
sans le nombre 14 mais 2004-07-13.....
==> il me sors le nombre qui est en A1 de TON fichier càd 2004-01-14...
En fait, ca a très bien marché dès lors que j'ai vu qu'il fallait aussi
changé le 2ème "14" qui était passé inaperçu
En conclusion de ce premier problème, le fait de changer "Jour" par le
nombre recherché, a très bien fonctionné.
En revanche, le "loop" n'a pas fonctionné càd qu'il ne me marque qu'une
valeur en B1 et rien d'autre (pas les valeurs de A1 se situant dans les
autres fichiers contenant le nombre "13") ; je pense que ça vient du X+1
William
PS: pour ceux qui suivent la discussion, voici donc le code de michdenis
qui
a marché
'-------------------------------------------
Sub TrouverMaValeur()
Dim Path As String, file As String
Dim Feuille As String, Ref As String
Dim Jour As Integer, X As Integer
'*******Variables à déterminer********
Jour = 13 ' à déterminer
Path = "P:test" ' à déterminer
Feuille = "Fiche de travail RTB"
Ref = Range("A1").Address
'*******Variables à déterminer********
'merci à michdenis
file = Dir(Path & "*.xls")
Do While file <> ""
If Len(file) - Len(Application.Substitute(file, "-", "")) = 2 Then
If Val(Split(file, "-")(2)) = 13 Then
X = X + 1
'Où la copie aura lieu ... à déterminer
ThisWorkbook.Worksheets("Feuil1").Range("C" & X) = _
GetValue(Path, file, Feuille, Ref)
End If
End If
file = Dir()
Loop
End Sub
'-------------------------------------------------
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal Ref)
As
Variant
' Macro XL4 Merci à John Walkenbach
' ============================= > ' Retrieves a value from a closed workbook
Dim Arg As String
' Make sure the file exists
If Right(Path, 1) <> "" Then Path = Path & ""
If Dir(Path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
Arg = "'" & Path & "[" & file & "]" & sheet & "'!" & _
Range(Ref).Range("A1").Address(, , xlR1C1)
'Execute an XLM macro
GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents
End Function
'-------------------------------------------
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
e0fwUWOaEHA.556@tk2msftngp13.phx.gbl...
Fichier exemple envoyé.
Salutations!
"William" <brun_rhodanienne@hotmail.com> a écrit dans le message de
news:OHDZKQOaEHA.4068@TK2MSFTNGP10.phx.gbl...
Bonjour Michel,
je serais bien tenté par ta proposition de m'envoyer un exemple.
Je comprends pas ce qui cloche :
Je colle bien ton Sub et ta Public fonction, je renseigne les variables
entre les 2 lignes de ******* et j'exécute la macro TrouverMaValeur(),
mais
il ne marque rien!!! même pas un petit message d'erreur (qui sont
d'habitude si crispant)
Ne devrais-je pas changer les "sheet" de la Public Fonction ??
Est-ce que j'exécute mal le module ??
En espérant ne pas t'exaspérer...
William
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
esH715NaEHA.4092@TK2MSFTNGP11.phx.gbl...
Bonjour William,
Essaie ceci, j'ai seulement modifier un truc pour tenir compte de ta
chaîne de caractères des noms de fichiers.
Sur demande, je t'envoie un exemple...
'-------------------------------------------
Sub TrouverMaValeur()
Dim Path As String, file As String
Dim Feuille As String, Ref As String
Dim Jour As Integer, X As Integer
'*******Variables à déterminer********
Jour = 14 ' à déterminer
Path = "C:Excel" ' à déterminer
Feuille = "Fiche de travail RTB"
Ref = Range("A1").Address
'*******Variables à déterminer********
file = Dir(Path & "*.xls")
Do While file <> ""
If Len(file) - Len(Application.Substitute(file, "-", "")) = 2 Then
If Val(Split(file, "-")(2)) = 14 Then
X = X + 1
'Où la copie aura lieu ... à déterminer
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
End If
End If
file = Dir()
Loop
End Sub
'-------------------------------------------------
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)
As Variant
' Macro XL4 Merci à John Walkenbach
' ============================= > > > ' Retrieves a value from a closed workbook
Dim Arg As String
' Make sure the file exists
If Right(Path, 1) <> "" Then Path = Path & ""
If Dir(Path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
Arg = "'" & Path & "[" & file & "]" & sheet & "'!" & _
Range(Ref).Range("A1").Address(, , xlR1C1)
'Execute an XLM macro
GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents
End Function
'-------------------------------------------
Salutations!
"William" <brun_rhodanienne@hotmail.com> a écrit dans le message de
news:OQFcQaNaEHA.2056@TK2MSFTNGP12.phx.gbl...
La procédure que tu m'as donné devrait, en effet, marcher. J'arrive à
la
suivre, à la comprendre mais je dois me rater qque part.
à cette fonction, j'ai ajouté la variable JOUR et cela était pour
extraire
seulement certains fichiers qui avaient dans
leur nom (format date) un jour (dd) particulier sans tenir compte du
mois
ou de l'année.
Exactement ce que je voulais.
Il me semble que c'est un problème de syntaxe des éléments que j'ai à
définir.
Concernant la cellule A1, 3 possibilités : groupe 3000, groupe 5000 et
groupe 7000 (donc toujours le mot "groupe")
Concernant l'apparence des noms des feuilles voici un exemple : "Fiche
de
travail RTB" les autres noms étant de cet accabit ; auccun mot
réccurent
mais les noms sont tous connues et c'est un des éléments qui me
permettra
une ségrégation des infos.
Et voici des noms de fichiers :
2004-07-09_17h01m45sGroupe 5000Fiche de travail RTB.xls
2004-07-09_16h56m32sGroupe 3000Fiche de travail RTB.xls
2004-07-09_16h41m04sGroupe 5000Fiche de travail RTB.xls
A noter que j'avais bien remplit les variables à déterminer, comme
ceci
:
Jour = 09 ' à déterminer
Path = "P:CONTROLESPRODUCTION"
Feuille = "Fiche de travail RTB"
Ref = Range("A1").Address ==> et pas "groupe 5000" comme dans
mon
post
précédent où il y a eu un mauvais couper-coller
Oublierais-je des choses à faire dans le reste de la formule?
j'espère que je n'oublie rien
William
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
ue7MYMNaEHA.712@TK2MSFTNGP11.phx.gbl...
Bonjour William,
Ceci détermine le nom de ton classeur :
nom = Format(Now, "yyyy-MM-dd_hh""h""mm""m""ss""s") & _
ActiveSheet.Range("A1").Text & ActiveSheet.Name & ".xls"
Si tu me donnais en clair à quoi ressemble la chaîne de caractères
représentant le nom de 2 ou 3 classeurs, cela
faciliterait la tâche pour savoir comment extraire le nom de la
feuille
de
l'ensemble de la chaîne. Que contient la
cellule A1 et quelle apprence ont le noms de tes feuilles ?
En principe c'est "facile" la procédure "TrouverMaValeur" extrait la
valeur d'un fichier à partir des paramêtres de
cette fonction : GetValue(Path, file, Feuille, Ref) , il s'agit
donc
que
tu renseignes (définissent) chaque élément de
cette fonctiion avant de l'appeler.
PATH = Chemin et répertoire où se trouve tes fichiers
File = Nom du fichier
Feuille = Nom de la feuille
Ref = référence à une adresse particulière d'une cellule.
à cette fonction, j'ai ajouté la variable JOUR et cela était pour
extraire
seulement certains fichiers qui avaient dans
leur nom (format date) un jour (dd) particulier sans tenir compte du
mois
ou de l'année.
'-------------------------------------------------
Sub TrouverMaValeur()
Dim Path As String, file As String
Dim Feuille As String, Ref As String
Dim Jour As Integer, X As Integer
'*******Variables à déterminer********
Jour = 25 ' à déterminer
Path = "C:Excel"
Feuille = "Feuil1"
Ref = Range("A1").Address
'*******Variables à déterminer********
file = Dir(Path & "*.xls")
Do While file <> ""
If Len(file) - Len(Application.Substitute(file, "-", "")) = Jour
Then
If Val(Split(file, "-")(2)) = Jour Then
X = X + 1
'Où la copie aura lieu ... à déterminer
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
End If
End If
file = Dir()
Loop
End Sub
'-------------------------------------------------
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)
As Variant
' Macro XL4 Merci à John Walkenbach
' ============================= > > > > ' Retrieves a value from a closed workbook
Dim Arg As String
' Make sure the file exists
If Right(Path, 1) <> "" Then Path = Path & ""
If Dir(Path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
Arg = "'" & Path & "[" & file & "]" & sheet & "'!" & _
Range(Ref).Range("A1").Address(, , xlR1C1)
'Execute an XLM macro
GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents
End Function
'-------------------------------------------------
Salutations!
Fichier exemple bien reçu
Bon, j'en connais un qui va s'arracher les cheveux
Mais avant de te dire le problème (je sens le stress qui monte...), je
suppose que la macro qu'il y a sur le fichier 2004-01-14....xls n'est pas
pour moi ?
En fait, ton exemple a bien marcher....(il y a un "mais" qui arrive)
Mais (j'avais raison!!!!) tu as pris comme variable le chiffre 14 présent
dans le fichier 2004-01-14...., j'ai donc voulu essayé avec un autre
fichier
sans le nombre 14 mais 2004-07-13.....
==> il me sors le nombre qui est en A1 de TON fichier càd 2004-01-14...
En fait, ca a très bien marché dès lors que j'ai vu qu'il fallait aussi
changé le 2ème "14" qui était passé inaperçu
En conclusion de ce premier problème, le fait de changer "Jour" par le
nombre recherché, a très bien fonctionné.
En revanche, le "loop" n'a pas fonctionné càd qu'il ne me marque qu'une
valeur en B1 et rien d'autre (pas les valeurs de A1 se situant dans les
autres fichiers contenant le nombre "13") ; je pense que ça vient du X+1
William
PS: pour ceux qui suivent la discussion, voici donc le code de michdenis
qui
a marché
'-------------------------------------------
Sub TrouverMaValeur()
Dim Path As String, file As String
Dim Feuille As String, Ref As String
Dim Jour As Integer, X As Integer
'*******Variables à déterminer********
Jour = 13 ' à déterminer
Path = "P:test" ' à déterminer
Feuille = "Fiche de travail RTB"
Ref = Range("A1").Address
'*******Variables à déterminer********
'merci à michdenis
file = Dir(Path & "*.xls")
Do While file <> ""
If Len(file) - Len(Application.Substitute(file, "-", "")) = 2 Then
If Val(Split(file, "-")(2)) = 13 Then
X = X + 1
'Où la copie aura lieu ... à déterminer
ThisWorkbook.Worksheets("Feuil1").Range("C" & X) = _
GetValue(Path, file, Feuille, Ref)
End If
End If
file = Dir()
Loop
End Sub
'-------------------------------------------------
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal Ref)
As
Variant
' Macro XL4 Merci à John Walkenbach
' ============================= > ' Retrieves a value from a closed workbook
Dim Arg As String
' Make sure the file exists
If Right(Path, 1) <> "" Then Path = Path & ""
If Dir(Path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
Arg = "'" & Path & "[" & file & "]" & sheet & "'!" & _
Range(Ref).Range("A1").Address(, , xlR1C1)
'Execute an XLM macro
GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents
End Function
'-------------------------------------------
"michdenis" a écrit dans le message de news:
Fichier exemple envoyé.
Salutations!
"William" a écrit dans le message de
news:Bonjour Michel,
je serais bien tenté par ta proposition de m'envoyer un exemple.
Je comprends pas ce qui cloche :
Je colle bien ton Sub et ta Public fonction, je renseigne les variables
entre les 2 lignes de ******* et j'exécute la macro TrouverMaValeur(),
maisil ne marque rien!!! même pas un petit message d'erreur (qui sont
d'habitude si crispant)
Ne devrais-je pas changer les "sheet" de la Public Fonction ??
Est-ce que j'exécute mal le module ??
En espérant ne pas t'exaspérer...
William
"michdenis" a écrit dans le message de news:Bonjour William,
Essaie ceci, j'ai seulement modifier un truc pour tenir compte de ta
chaîne de caractères des noms de fichiers.
Sur demande, je t'envoie un exemple...
'-------------------------------------------
Sub TrouverMaValeur()
Dim Path As String, file As String
Dim Feuille As String, Ref As String
Dim Jour As Integer, X As Integer
'*******Variables à déterminer********
Jour = 14 ' à déterminer
Path = "C:Excel" ' à déterminer
Feuille = "Fiche de travail RTB"
Ref = Range("A1").Address
'*******Variables à déterminer********
file = Dir(Path & "*.xls")
Do While file <> ""
If Len(file) - Len(Application.Substitute(file, "-", "")) = 2 Then
If Val(Split(file, "-")(2)) = 14 Then
X = X + 1
'Où la copie aura lieu ... à déterminer
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
End If
End If
file = Dir()
Loop
End Sub
'-------------------------------------------------
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)As Variant
' Macro XL4 Merci à John Walkenbach
' ============================= > > > ' Retrieves a value from a closed workbook
Dim Arg As String
' Make sure the file exists
If Right(Path, 1) <> "" Then Path = Path & ""
If Dir(Path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
Arg = "'" & Path & "[" & file & "]" & sheet & "'!" & _
Range(Ref).Range("A1").Address(, , xlR1C1)
'Execute an XLM macro
GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents
End Function
'-------------------------------------------
Salutations!
"William" a écrit dans le message de
news:La procédure que tu m'as donné devrait, en effet, marcher. J'arrive à
la
suivre, à la comprendre mais je dois me rater qque part.à cette fonction, j'ai ajouté la variable JOUR et cela était pour
extraireseulement certains fichiers qui avaient dansleur nom (format date) un jour (dd) particulier sans tenir compte du
moisou de l'année.
Exactement ce que je voulais.
Il me semble que c'est un problème de syntaxe des éléments que j'ai à
définir.
Concernant la cellule A1, 3 possibilités : groupe 3000, groupe 5000 et
groupe 7000 (donc toujours le mot "groupe")
Concernant l'apparence des noms des feuilles voici un exemple : "Fiche
detravail RTB" les autres noms étant de cet accabit ; auccun mot
réccurentmais les noms sont tous connues et c'est un des éléments qui me
permettraune ségrégation des infos.
Et voici des noms de fichiers :
2004-07-09_17h01m45sGroupe 5000Fiche de travail RTB.xls
2004-07-09_16h56m32sGroupe 3000Fiche de travail RTB.xls
2004-07-09_16h41m04sGroupe 5000Fiche de travail RTB.xls
A noter que j'avais bien remplit les variables à déterminer, comme
ceci
:Jour = 09 ' à déterminer
Path = "P:CONTROLESPRODUCTION"
Feuille = "Fiche de travail RTB"
Ref = Range("A1").Address ==> et pas "groupe 5000" comme dans
mon
postprécédent où il y a eu un mauvais couper-coller
Oublierais-je des choses à faire dans le reste de la formule?
j'espère que je n'oublie rien
William
"michdenis" a écrit dans le message de news:Bonjour William,
Ceci détermine le nom de ton classeur :
nom = Format(Now, "yyyy-MM-dd_hh""h""mm""m""ss""s") & _
ActiveSheet.Range("A1").Text & ActiveSheet.Name & ".xls"
Si tu me donnais en clair à quoi ressemble la chaîne de caractères
représentant le nom de 2 ou 3 classeurs, celafaciliterait la tâche pour savoir comment extraire le nom de la
feuilledel'ensemble de la chaîne. Que contient lacellule A1 et quelle apprence ont le noms de tes feuilles ?
En principe c'est "facile" la procédure "TrouverMaValeur" extrait la
valeur d'un fichier à partir des paramêtres decette fonction : GetValue(Path, file, Feuille, Ref) , il s'agit
donc
quetu renseignes (définissent) chaque élément decette fonctiion avant de l'appeler.
PATH = Chemin et répertoire où se trouve tes fichiers
File = Nom du fichier
Feuille = Nom de la feuille
Ref = référence à une adresse particulière d'une cellule.
à cette fonction, j'ai ajouté la variable JOUR et cela était pour
extraireseulement certains fichiers qui avaient dansleur nom (format date) un jour (dd) particulier sans tenir compte du
moisou de l'année.
'-------------------------------------------------
Sub TrouverMaValeur()
Dim Path As String, file As String
Dim Feuille As String, Ref As String
Dim Jour As Integer, X As Integer
'*******Variables à déterminer********
Jour = 25 ' à déterminer
Path = "C:Excel"
Feuille = "Feuil1"
Ref = Range("A1").Address
'*******Variables à déterminer********
file = Dir(Path & "*.xls")
Do While file <> ""
If Len(file) - Len(Application.Substitute(file, "-", "")) = Jour
ThenIf Val(Split(file, "-")(2)) = Jour Then
X = X + 1
'Où la copie aura lieu ... à déterminer
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
End If
End If
file = Dir()
Loop
End Sub
'-------------------------------------------------
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)As Variant
' Macro XL4 Merci à John Walkenbach
' ============================= > > > > ' Retrieves a value from a closed workbook
Dim Arg As String
' Make sure the file exists
If Right(Path, 1) <> "" Then Path = Path & ""
If Dir(Path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
Arg = "'" & Path & "[" & file & "]" & sheet & "'!" & _
Range(Ref).Range("A1").Address(, , xlR1C1)
'Execute an XLM macro
GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents
End Function
'-------------------------------------------------
Salutations!
Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la boucle fait appel à une fonction extérieure pour
traitement, et bien au retour du traitement, la fonction Dir() et vide ... et la boucle s'arrête. Le fait d'utiliser une
fonction externe à la procédure fait perdre le "fil" au contenu renvoyer par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a une explication ?
Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la boucle fait appel à une fonction extérieure pour
traitement, et bien au retour du traitement, la fonction Dir() et vide ... et la boucle s'arrête. Le fait d'utiliser une
fonction externe à la procédure fait perdre le "fil" au contenu renvoyer par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a une explication ?
Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la boucle fait appel à une fonction extérieure pour
traitement, et bien au retour du traitement, la fonction Dir() et vide ... et la boucle s'arrête. Le fait d'utiliser une
fonction externe à la procédure fait perdre le "fil" au contenu renvoyer par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a une explication ?
Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la boucle fait appel à une fonction extérieure pour
traitement, et bien au retour du traitement, la fonction Dir() et vide ... et la boucle s'arrête. Le fait d'utiliser
une
fonction externe à la procédure fait perdre le "fil" au contenu renvoyer par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a une explication ?
Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la boucle fait appel à une fonction extérieure pour
traitement, et bien au retour du traitement, la fonction Dir() et vide ... et la boucle s'arrête. Le fait d'utiliser
une
fonction externe à la procédure fait perdre le "fil" au contenu renvoyer par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a une explication ?
Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la boucle fait appel à une fonction extérieure pour
traitement, et bien au retour du traitement, la fonction Dir() et vide ... et la boucle s'arrête. Le fait d'utiliser
une
fonction externe à la procédure fait perdre le "fil" au contenu renvoyer par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a une explication ?
Bonjour Alain,
Merci de pour ton intervention. Tu as parfaitement raison.
C'est ce qui arrive lorsque l'on se contente de copier une fonction
benoîtement !!!
;-))
Salutations!
"Alain CROS" a écrit dans le message de
news:
Bonjour.
Le problème vient du fait que tu utilise 2 fois la fonction Dir.
Sub TrouverMaValeur()
...
file = Dir(Path & "*.xls")
Do While file <> ""
...
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
...
file = Dir()
Loop
End Sub
puis
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal Ref)
As Variant
...
If Dir(Path & file) = "" Then
...
End Function
Dans la fonction Getvalue, le Dir est réinitialisé.
Alain CROS
"michdenis" a écrit dans le message de news:
e$
Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la boucle
fait appel à une fonction extérieure pour
traitement, et bien au retour du traitement, la fonction Dir() et vide
... et la boucle s'arrête. Le fait d'utiliser
unefonction externe à la procédure fait perdre le "fil" au contenu renvoyer
par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a une
explication ?
Bonjour Alain,
Merci de pour ton intervention. Tu as parfaitement raison.
C'est ce qui arrive lorsque l'on se contente de copier une fonction
benoîtement !!!
;-))
Salutations!
"Alain CROS" <Personne@ICI> a écrit dans le message de
news:OiTVmKRaEHA.3476@tk2msftngp13.phx.gbl...
Bonjour.
Le problème vient du fait que tu utilise 2 fois la fonction Dir.
Sub TrouverMaValeur()
...
file = Dir(Path & "*.xls")
Do While file <> ""
...
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
...
file = Dir()
Loop
End Sub
puis
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal Ref)
As Variant
...
If Dir(Path & file) = "" Then
...
End Function
Dans la fonction Getvalue, le Dir est réinitialisé.
Alain CROS
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
e$6cnnQaEHA.2816@TK2MSFTNGP11.phx.gbl...
Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la boucle
fait appel à une fonction extérieure pour
traitement, et bien au retour du traitement, la fonction Dir() et vide
... et la boucle s'arrête. Le fait d'utiliser
une
fonction externe à la procédure fait perdre le "fil" au contenu renvoyer
par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a une
explication ?
Bonjour Alain,
Merci de pour ton intervention. Tu as parfaitement raison.
C'est ce qui arrive lorsque l'on se contente de copier une fonction
benoîtement !!!
;-))
Salutations!
"Alain CROS" a écrit dans le message de
news:
Bonjour.
Le problème vient du fait que tu utilise 2 fois la fonction Dir.
Sub TrouverMaValeur()
...
file = Dir(Path & "*.xls")
Do While file <> ""
...
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
...
file = Dir()
Loop
End Sub
puis
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal Ref)
As Variant
...
If Dir(Path & file) = "" Then
...
End Function
Dans la fonction Getvalue, le Dir est réinitialisé.
Alain CROS
"michdenis" a écrit dans le message de news:
e$
Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la boucle
fait appel à une fonction extérieure pour
traitement, et bien au retour du traitement, la fonction Dir() et vide
... et la boucle s'arrête. Le fait d'utiliser
unefonction externe à la procédure fait perdre le "fil" au contenu renvoyer
par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a une
explication ?
Merci michel
ca marche très bien
je te remercie du mal que tu t'es donné
William
PS: je n'ai pas répondu avant car j'ai fait le pont
"michdenis" a écrit dans le message de news:Bonjour Alain,
Merci de pour ton intervention. Tu as parfaitement raison.
C'est ce qui arrive lorsque l'on se contente de copier une fonction
benoîtement !!!
;-))
Salutations!
"Alain CROS" a écrit dans le message de
news:Bonjour.
Le problème vient du fait que tu utilise 2 fois la fonction Dir.
Sub TrouverMaValeur()
...
file = Dir(Path & "*.xls")
Do While file <> ""
...
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
...
file = Dir()
Loop
End Sub
puis
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)
As Variant...
If Dir(Path & file) = "" Then
...
End Function
Dans la fonction Getvalue, le Dir est réinitialisé.
Alain CROS
"michdenis" a écrit dans le message de news:
e$Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la boucle
fait appel à une fonction extérieure pourtraitement, et bien au retour du traitement, la fonction Dir() et vide
... et la boucle s'arrête. Le fait d'utiliserunefonction externe à la procédure fait perdre le "fil" au contenu
renvoyer
par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a
une
explication ?
Merci michel
ca marche très bien
je te remercie du mal que tu t'es donné
William
PS: je n'ai pas répondu avant car j'ai fait le pont
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
uj87uRRaEHA.4048@TK2MSFTNGP10.phx.gbl...
Bonjour Alain,
Merci de pour ton intervention. Tu as parfaitement raison.
C'est ce qui arrive lorsque l'on se contente de copier une fonction
benoîtement !!!
;-))
Salutations!
"Alain CROS" <Personne@ICI> a écrit dans le message de
news:OiTVmKRaEHA.3476@tk2msftngp13.phx.gbl...
Bonjour.
Le problème vient du fait que tu utilise 2 fois la fonction Dir.
Sub TrouverMaValeur()
...
file = Dir(Path & "*.xls")
Do While file <> ""
...
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
...
file = Dir()
Loop
End Sub
puis
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)
As Variant
...
If Dir(Path & file) = "" Then
...
End Function
Dans la fonction Getvalue, le Dir est réinitialisé.
Alain CROS
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
e$6cnnQaEHA.2816@TK2MSFTNGP11.phx.gbl...
Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la boucle
fait appel à une fonction extérieure pour
traitement, et bien au retour du traitement, la fonction Dir() et vide
... et la boucle s'arrête. Le fait d'utiliser
une
fonction externe à la procédure fait perdre le "fil" au contenu
renvoyer
par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a
une
explication ?
Merci michel
ca marche très bien
je te remercie du mal que tu t'es donné
William
PS: je n'ai pas répondu avant car j'ai fait le pont
"michdenis" a écrit dans le message de news:Bonjour Alain,
Merci de pour ton intervention. Tu as parfaitement raison.
C'est ce qui arrive lorsque l'on se contente de copier une fonction
benoîtement !!!
;-))
Salutations!
"Alain CROS" a écrit dans le message de
news:Bonjour.
Le problème vient du fait que tu utilise 2 fois la fonction Dir.
Sub TrouverMaValeur()
...
file = Dir(Path & "*.xls")
Do While file <> ""
...
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
...
file = Dir()
Loop
End Sub
puis
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)
As Variant...
If Dir(Path & file) = "" Then
...
End Function
Dans la fonction Getvalue, le Dir est réinitialisé.
Alain CROS
"michdenis" a écrit dans le message de news:
e$Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la boucle
fait appel à une fonction extérieure pourtraitement, et bien au retour du traitement, la fonction Dir() et vide
... et la boucle s'arrête. Le fait d'utiliserunefonction externe à la procédure fait perdre le "fil" au contenu
renvoyer
par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a
une
explication ?
Merci michel
ca marche très bien
je te remercie du mal que tu t'es donné
William
PS: je n'ai pas répondu avant car j'ai fait le pont
"michdenis" a écrit dans le message de news:Bonjour Alain,
Merci de pour ton intervention. Tu as parfaitement raison.
C'est ce qui arrive lorsque l'on se contente de copier une fonction
benoîtement !!!
;-))
Salutations!
"Alain CROS" a écrit dans le message de
news:Bonjour.
Le problème vient du fait que tu utilise 2 fois la fonction Dir.
Sub TrouverMaValeur()
...
file = Dir(Path & "*.xls")
Do While file <> ""
...
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
...
file = Dir()
Loop
End Sub
puis
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)
As Variant...
If Dir(Path & file) = "" Then
...
End Function
Dans la fonction Getvalue, le Dir est réinitialisé.
Alain CROS
"michdenis" a écrit dans le message de news:
e$Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la boucle
fait appel à une fonction extérieure pourtraitement, et bien au retour du traitement, la fonction Dir() et vide
... et la boucle s'arrête. Le fait d'utiliserunefonction externe à la procédure fait perdre le "fil" au contenu
renvoyer
par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a
une
explication ?
Merci michel
ca marche très bien
je te remercie du mal que tu t'es donné
William
PS: je n'ai pas répondu avant car j'ai fait le pont
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
uj87uRRaEHA.4048@TK2MSFTNGP10.phx.gbl...
Bonjour Alain,
Merci de pour ton intervention. Tu as parfaitement raison.
C'est ce qui arrive lorsque l'on se contente de copier une fonction
benoîtement !!!
;-))
Salutations!
"Alain CROS" <Personne@ICI> a écrit dans le message de
news:OiTVmKRaEHA.3476@tk2msftngp13.phx.gbl...
Bonjour.
Le problème vient du fait que tu utilise 2 fois la fonction Dir.
Sub TrouverMaValeur()
...
file = Dir(Path & "*.xls")
Do While file <> ""
...
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
...
file = Dir()
Loop
End Sub
puis
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)
As Variant
...
If Dir(Path & file) = "" Then
...
End Function
Dans la fonction Getvalue, le Dir est réinitialisé.
Alain CROS
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
e$6cnnQaEHA.2816@TK2MSFTNGP11.phx.gbl...
Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la boucle
fait appel à une fonction extérieure pour
traitement, et bien au retour du traitement, la fonction Dir() et vide
... et la boucle s'arrête. Le fait d'utiliser
une
fonction externe à la procédure fait perdre le "fil" au contenu
renvoyer
par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a
une
explication ?
Merci michel
ca marche très bien
je te remercie du mal que tu t'es donné
William
PS: je n'ai pas répondu avant car j'ai fait le pont
"michdenis" a écrit dans le message de news:Bonjour Alain,
Merci de pour ton intervention. Tu as parfaitement raison.
C'est ce qui arrive lorsque l'on se contente de copier une fonction
benoîtement !!!
;-))
Salutations!
"Alain CROS" a écrit dans le message de
news:Bonjour.
Le problème vient du fait que tu utilise 2 fois la fonction Dir.
Sub TrouverMaValeur()
...
file = Dir(Path & "*.xls")
Do While file <> ""
...
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
...
file = Dir()
Loop
End Sub
puis
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)
As Variant...
If Dir(Path & file) = "" Then
...
End Function
Dans la fonction Getvalue, le Dir est réinitialisé.
Alain CROS
"michdenis" a écrit dans le message de news:
e$Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la boucle
fait appel à une fonction extérieure pourtraitement, et bien au retour du traitement, la fonction Dir() et vide
... et la boucle s'arrête. Le fait d'utiliserunefonction externe à la procédure fait perdre le "fil" au contenu
renvoyer
par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a
une
explication ?
Bonjour William,
Si le nombre de fichier trouvé >0
If .Execute(msoSortByFileName) > 0 Then
'Affecte nb du nombre de fichiers trouvés
Nb = .FoundFiles.Count
'Début de boucle pour tous les fichiers trouvés
For A = 1 To Nb
'Extrait le nom du fichier de la chaîne de caractères
représentant
'Chemin du fichier et nom du fichier
'la fonction Split : Scinde la chaîne de caractère selon le
symbole "" retenu
'Chaque section de la chaîne scindée est mise dans un tableau
File = Split(.FoundFiles(A), "")(UBound(Split(.FoundFiles(A),
"")))
Une autre façon d'écrire la ligne précédente :
G contient un tableau de la chaîne chemin et fichier
G = Split(.FoundFiles(A), "")
for A = 0 to Ubound(G)
Msgbox G(a)
next
File = Split(.FoundFiles(A), "")(UBound(Split(.FoundFiles(A),
"")))
'OU c'est la même chose
File = G(UBound(G))
'La ligne suivante c'est seulement le critère que j'ai retenu
pour être
"certain" que tu avais une date (présence de 2 "-" dans le nom
du fichier
If Len(File) - Len(Application.Substitute(File, "-", "")) = 2
Then
'Même chose que précédemment dans l'usage de la
fonction split
'La présence de la fonction "Val" permet de retenir
que le chiffre
'
'Split(File, "-")(2) Extrait cette chaîne
"09_17h01m45sGroupe 5000Fiche de travail RTB.xls"
Val(Split(File, "-")(2))
'En ajoutant la fonction "Val", on obtient 9,
'9 représente le jour.
'si tu veux extraire le mois, tu modifies le 2 pour 1
'Si tu veux extraire l'année, tu modifies le 2 pour 0
'Supplément d'info. de la fonction Val dans l'aide
If Val(Split(File, "-")(2)) = Jour Then
X = X + 1
'Où la copie aura lieu ... à déterminer
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, File, Feuille, Ref)
End If
End If
Next
End If
Salutations!
"William" a écrit dans le message de
news:
Bonjour,
A quel niveau dois-je changer la macro si, à la place du jour, je souhaite
trouver l'année ou le mois ou une autre chaîne de caractères (càd
année+mois
ou mois+jour...) ?
Autre chose (mais juste par curiosité afin que je cerne mieux VB) :
Je comprens le début de la macro jusqu'à Nb = .FoundFiles.count
mais après je ne comprend pas les lignes qui suivent jusqu'à X = X+1 (que
je
comprend).
Dans file = Split(.FoundFiles(A), "")(UBound(Split(.FoundFiles(A), "")))
que doit renvoyer le ?
Dans Len(file) - Len(Application.Substitute(file, "-", ""))
Que doit renvoyer (file, "-", "") ?
Pourquoi Len(file) - Len(Application.Substitute(file, "-", "")) doit être
égal à 2 ?
Encore une fois, ce n'est que de la curiosité....si ca doit demander 3
heures pour répondre, je me contenteraie de la macro : je peux m'arranger
pour trouver les données qu'il me faut en classant les fichiers par ordre
chrono.
William
"William" a écrit dans le message de news:Merci michel
ca marche très bien
je te remercie du mal que tu t'es donné
William
PS: je n'ai pas répondu avant car j'ai fait le pont
"michdenis" a écrit dans le message de news:Bonjour Alain,
Merci de pour ton intervention. Tu as parfaitement raison.
C'est ce qui arrive lorsque l'on se contente de copier une fonction
benoîtement !!!
;-))
Salutations!
"Alain CROS" a écrit dans le message de
news:Bonjour.
Le problème vient du fait que tu utilise 2 fois la fonction Dir.
Sub TrouverMaValeur()
...
file = Dir(Path & "*.xls")
Do While file <> ""
...
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
...
file = Dir()
Loop
End Sub
puis
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)As Variant...
If Dir(Path & file) = "" Then
...
End Function
Dans la fonction Getvalue, le Dir est réinitialisé.
Alain CROS
"michdenis" a écrit dans le message de news:
e$Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la
boucle
fait appel à une fonction extérieure pourtraitement, et bien au retour du traitement, la fonction Dir() et
vide
... et la boucle s'arrête. Le fait d'utiliserunefonction externe à la procédure fait perdre le "fil" au contenu
renvoyerpar la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a
uneexplication ?
Bonjour William,
Si le nombre de fichier trouvé >0
If .Execute(msoSortByFileName) > 0 Then
'Affecte nb du nombre de fichiers trouvés
Nb = .FoundFiles.Count
'Début de boucle pour tous les fichiers trouvés
For A = 1 To Nb
'Extrait le nom du fichier de la chaîne de caractères
représentant
'Chemin du fichier et nom du fichier
'la fonction Split : Scinde la chaîne de caractère selon le
symbole "" retenu
'Chaque section de la chaîne scindée est mise dans un tableau
File = Split(.FoundFiles(A), "")(UBound(Split(.FoundFiles(A),
"")))
Une autre façon d'écrire la ligne précédente :
G contient un tableau de la chaîne chemin et fichier
G = Split(.FoundFiles(A), "")
for A = 0 to Ubound(G)
Msgbox G(a)
next
File = Split(.FoundFiles(A), "")(UBound(Split(.FoundFiles(A),
"")))
'OU c'est la même chose
File = G(UBound(G))
'La ligne suivante c'est seulement le critère que j'ai retenu
pour être
"certain" que tu avais une date (présence de 2 "-" dans le nom
du fichier
If Len(File) - Len(Application.Substitute(File, "-", "")) = 2
Then
'Même chose que précédemment dans l'usage de la
fonction split
'La présence de la fonction "Val" permet de retenir
que le chiffre
'
'Split(File, "-")(2) Extrait cette chaîne
"09_17h01m45sGroupe 5000Fiche de travail RTB.xls"
Val(Split(File, "-")(2))
'En ajoutant la fonction "Val", on obtient 9,
'9 représente le jour.
'si tu veux extraire le mois, tu modifies le 2 pour 1
'Si tu veux extraire l'année, tu modifies le 2 pour 0
'Supplément d'info. de la fonction Val dans l'aide
If Val(Split(File, "-")(2)) = Jour Then
X = X + 1
'Où la copie aura lieu ... à déterminer
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, File, Feuille, Ref)
End If
End If
Next
End If
Salutations!
"William" <brun_rhodanienne@hotmail.com> a écrit dans le message de
news:uevemoXbEHA.3016@tk2msftngp13.phx.gbl...
Bonjour,
A quel niveau dois-je changer la macro si, à la place du jour, je souhaite
trouver l'année ou le mois ou une autre chaîne de caractères (càd
année+mois
ou mois+jour...) ?
Autre chose (mais juste par curiosité afin que je cerne mieux VB) :
Je comprens le début de la macro jusqu'à Nb = .FoundFiles.count
mais après je ne comprend pas les lignes qui suivent jusqu'à X = X+1 (que
je
comprend).
Dans file = Split(.FoundFiles(A), "")(UBound(Split(.FoundFiles(A), "")))
que doit renvoyer le ?
Dans Len(file) - Len(Application.Substitute(file, "-", ""))
Que doit renvoyer (file, "-", "") ?
Pourquoi Len(file) - Len(Application.Substitute(file, "-", "")) doit être
égal à 2 ?
Encore une fois, ce n'est que de la curiosité....si ca doit demander 3
heures pour répondre, je me contenteraie de la macro : je peux m'arranger
pour trouver les données qu'il me faut en classant les fichiers par ordre
chrono.
William
"William" <brun_rhodanienne@hotmail.com> a écrit dans le message de news:
u80snLWbEHA.2760@TK2MSFTNGP09.phx.gbl...
Merci michel
ca marche très bien
je te remercie du mal que tu t'es donné
William
PS: je n'ai pas répondu avant car j'ai fait le pont
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
uj87uRRaEHA.4048@TK2MSFTNGP10.phx.gbl...
Bonjour Alain,
Merci de pour ton intervention. Tu as parfaitement raison.
C'est ce qui arrive lorsque l'on se contente de copier une fonction
benoîtement !!!
;-))
Salutations!
"Alain CROS" <Personne@ICI> a écrit dans le message de
news:OiTVmKRaEHA.3476@tk2msftngp13.phx.gbl...
Bonjour.
Le problème vient du fait que tu utilise 2 fois la fonction Dir.
Sub TrouverMaValeur()
...
file = Dir(Path & "*.xls")
Do While file <> ""
...
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
...
file = Dir()
Loop
End Sub
puis
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)
As Variant
...
If Dir(Path & file) = "" Then
...
End Function
Dans la fonction Getvalue, le Dir est réinitialisé.
Alain CROS
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
e$6cnnQaEHA.2816@TK2MSFTNGP11.phx.gbl...
Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la
boucle
fait appel à une fonction extérieure pour
traitement, et bien au retour du traitement, la fonction Dir() et
vide
... et la boucle s'arrête. Le fait d'utiliser
une
fonction externe à la procédure fait perdre le "fil" au contenu
renvoyer
par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a
une
explication ?
Bonjour William,
Si le nombre de fichier trouvé >0
If .Execute(msoSortByFileName) > 0 Then
'Affecte nb du nombre de fichiers trouvés
Nb = .FoundFiles.Count
'Début de boucle pour tous les fichiers trouvés
For A = 1 To Nb
'Extrait le nom du fichier de la chaîne de caractères
représentant
'Chemin du fichier et nom du fichier
'la fonction Split : Scinde la chaîne de caractère selon le
symbole "" retenu
'Chaque section de la chaîne scindée est mise dans un tableau
File = Split(.FoundFiles(A), "")(UBound(Split(.FoundFiles(A),
"")))
Une autre façon d'écrire la ligne précédente :
G contient un tableau de la chaîne chemin et fichier
G = Split(.FoundFiles(A), "")
for A = 0 to Ubound(G)
Msgbox G(a)
next
File = Split(.FoundFiles(A), "")(UBound(Split(.FoundFiles(A),
"")))
'OU c'est la même chose
File = G(UBound(G))
'La ligne suivante c'est seulement le critère que j'ai retenu
pour être
"certain" que tu avais une date (présence de 2 "-" dans le nom
du fichier
If Len(File) - Len(Application.Substitute(File, "-", "")) = 2
Then
'Même chose que précédemment dans l'usage de la
fonction split
'La présence de la fonction "Val" permet de retenir
que le chiffre
'
'Split(File, "-")(2) Extrait cette chaîne
"09_17h01m45sGroupe 5000Fiche de travail RTB.xls"
Val(Split(File, "-")(2))
'En ajoutant la fonction "Val", on obtient 9,
'9 représente le jour.
'si tu veux extraire le mois, tu modifies le 2 pour 1
'Si tu veux extraire l'année, tu modifies le 2 pour 0
'Supplément d'info. de la fonction Val dans l'aide
If Val(Split(File, "-")(2)) = Jour Then
X = X + 1
'Où la copie aura lieu ... à déterminer
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, File, Feuille, Ref)
End If
End If
Next
End If
Salutations!
"William" a écrit dans le message de
news:
Bonjour,
A quel niveau dois-je changer la macro si, à la place du jour, je souhaite
trouver l'année ou le mois ou une autre chaîne de caractères (càd
année+mois
ou mois+jour...) ?
Autre chose (mais juste par curiosité afin que je cerne mieux VB) :
Je comprens le début de la macro jusqu'à Nb = .FoundFiles.count
mais après je ne comprend pas les lignes qui suivent jusqu'à X = X+1 (que
je
comprend).
Dans file = Split(.FoundFiles(A), "")(UBound(Split(.FoundFiles(A), "")))
que doit renvoyer le ?
Dans Len(file) - Len(Application.Substitute(file, "-", ""))
Que doit renvoyer (file, "-", "") ?
Pourquoi Len(file) - Len(Application.Substitute(file, "-", "")) doit être
égal à 2 ?
Encore une fois, ce n'est que de la curiosité....si ca doit demander 3
heures pour répondre, je me contenteraie de la macro : je peux m'arranger
pour trouver les données qu'il me faut en classant les fichiers par ordre
chrono.
William
"William" a écrit dans le message de news:Merci michel
ca marche très bien
je te remercie du mal que tu t'es donné
William
PS: je n'ai pas répondu avant car j'ai fait le pont
"michdenis" a écrit dans le message de news:Bonjour Alain,
Merci de pour ton intervention. Tu as parfaitement raison.
C'est ce qui arrive lorsque l'on se contente de copier une fonction
benoîtement !!!
;-))
Salutations!
"Alain CROS" a écrit dans le message de
news:Bonjour.
Le problème vient du fait que tu utilise 2 fois la fonction Dir.
Sub TrouverMaValeur()
...
file = Dir(Path & "*.xls")
Do While file <> ""
...
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
...
file = Dir()
Loop
End Sub
puis
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)As Variant...
If Dir(Path & file) = "" Then
...
End Function
Dans la fonction Getvalue, le Dir est réinitialisé.
Alain CROS
"michdenis" a écrit dans le message de news:
e$Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la
boucle
fait appel à une fonction extérieure pourtraitement, et bien au retour du traitement, la fonction Dir() et
vide
... et la boucle s'arrête. Le fait d'utiliserunefonction externe à la procédure fait perdre le "fil" au contenu
renvoyerpar la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un a
uneexplication ?
bonjour,
merci michel
William
"michdenis" a écrit dans le message de news:Bonjour William,
Si le nombre de fichier trouvé >0
If .Execute(msoSortByFileName) > 0 Then
'Affecte nb du nombre de fichiers trouvés
Nb = .FoundFiles.Count
'Début de boucle pour tous les fichiers trouvés
For A = 1 To Nb
'Extrait le nom du fichier de la chaîne de caractères
représentant'Chemin du fichier et nom du fichier
'la fonction Split : Scinde la chaîne de caractère selon le
symbole "" retenu'Chaque section de la chaîne scindée est mise dans un
tableau
File = Split(.FoundFiles(A),
"")(UBound(Split(.FoundFiles(A),
"")))
Une autre façon d'écrire la ligne précédente :
G contient un tableau de la chaîne chemin et fichier
G = Split(.FoundFiles(A), "")
for A = 0 to Ubound(G)
Msgbox G(a)
next
File = Split(.FoundFiles(A), "")(UBound(Split(.FoundFiles(A),
"")))'OU c'est la même chose
File = G(UBound(G))
'La ligne suivante c'est seulement le critère que j'ai
retenu
pour être"certain" que tu avais une date (présence de 2 "-" dans le
nom
du fichierIf Len(File) - Len(Application.Substitute(File, "-", "")) 2
Then
'Même chose que précédemment dans l'usage de la
fonction split'La présence de la fonction "Val" permet de retenir
que le chiffre'
'Split(File, "-")(2) Extrait cette chaîne
"09_17h01m45sGroupe 5000Fiche de travail RTB.xls"
Val(Split(File, "-")(2))
'En ajoutant la fonction "Val", on obtient 9,
'9 représente le jour.
'si tu veux extraire le mois, tu modifies le 2 pour
1
'Si tu veux extraire l'année, tu modifies le 2 pour 0
'Supplément d'info. de la fonction Val dans l'aide
If Val(Split(File, "-")(2)) = Jour Then
X = X + 1
'Où la copie aura lieu ... à déterminer
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, File, Feuille, Ref)
End If
End If
Next
End If
Salutations!
"William" a écrit dans le message de
news:Bonjour,
A quel niveau dois-je changer la macro si, à la place du jour, je
souhaite
trouver l'année ou le mois ou une autre chaîne de caractères (càd
année+moisou mois+jour...) ?
Autre chose (mais juste par curiosité afin que je cerne mieux VB) :
Je comprens le début de la macro jusqu'à Nb = .FoundFiles.count
mais après je ne comprend pas les lignes qui suivent jusqu'à X = X+1
(que
jecomprend).
Dans file = Split(.FoundFiles(A), "")(UBound(Split(.FoundFiles(A),
"")))
que doit renvoyer le ?
Dans Len(file) - Len(Application.Substitute(file, "-", ""))
Que doit renvoyer (file, "-", "") ?
Pourquoi Len(file) - Len(Application.Substitute(file, "-", "")) doit
être
égal à 2 ?
Encore une fois, ce n'est que de la curiosité....si ca doit demander 3
heures pour répondre, je me contenteraie de la macro : je peux
m'arranger
pour trouver les données qu'il me faut en classant les fichiers par
ordre
chrono.
William
"William" a écrit dans le message de
news:
Merci michel
ca marche très bien
je te remercie du mal que tu t'es donné
William
PS: je n'ai pas répondu avant car j'ai fait le pont
"michdenis" a écrit dans le message de news:Bonjour Alain,
Merci de pour ton intervention. Tu as parfaitement raison.
C'est ce qui arrive lorsque l'on se contente de copier une fonction
benoîtement !!!
;-))
Salutations!
"Alain CROS" a écrit dans le message de
news:Bonjour.
Le problème vient du fait que tu utilise 2 fois la fonction Dir.
Sub TrouverMaValeur()
...
file = Dir(Path & "*.xls")
Do While file <> ""
...
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
...
file = Dir()
Loop
End Sub
puis
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)As Variant...
If Dir(Path & file) = "" Then
...
End Function
Dans la fonction Getvalue, le Dir est réinitialisé.
Alain CROS
"michdenis" a écrit dans le message de news:
e$Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la
bouclefait appel à une fonction extérieure pourtraitement, et bien au retour du traitement, la fonction Dir() et
vide... et la boucle s'arrête. Le fait d'utiliserunefonction externe à la procédure fait perdre le "fil" au contenu
renvoyerpar la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un
a
uneexplication ?
bonjour,
merci michel
William
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
OFQSy5YbEHA.3012@tk2msftngp13.phx.gbl...
Bonjour William,
Si le nombre de fichier trouvé >0
If .Execute(msoSortByFileName) > 0 Then
'Affecte nb du nombre de fichiers trouvés
Nb = .FoundFiles.Count
'Début de boucle pour tous les fichiers trouvés
For A = 1 To Nb
'Extrait le nom du fichier de la chaîne de caractères
représentant
'Chemin du fichier et nom du fichier
'la fonction Split : Scinde la chaîne de caractère selon le
symbole "" retenu
'Chaque section de la chaîne scindée est mise dans un
tableau
File = Split(.FoundFiles(A),
"")(UBound(Split(.FoundFiles(A),
"")))
Une autre façon d'écrire la ligne précédente :
G contient un tableau de la chaîne chemin et fichier
G = Split(.FoundFiles(A), "")
for A = 0 to Ubound(G)
Msgbox G(a)
next
File = Split(.FoundFiles(A), "")(UBound(Split(.FoundFiles(A),
"")))
'OU c'est la même chose
File = G(UBound(G))
'La ligne suivante c'est seulement le critère que j'ai
retenu
pour être
"certain" que tu avais une date (présence de 2 "-" dans le
nom
du fichier
If Len(File) - Len(Application.Substitute(File, "-", "")) 2
Then
'Même chose que précédemment dans l'usage de la
fonction split
'La présence de la fonction "Val" permet de retenir
que le chiffre
'
'Split(File, "-")(2) Extrait cette chaîne
"09_17h01m45sGroupe 5000Fiche de travail RTB.xls"
Val(Split(File, "-")(2))
'En ajoutant la fonction "Val", on obtient 9,
'9 représente le jour.
'si tu veux extraire le mois, tu modifies le 2 pour
1
'Si tu veux extraire l'année, tu modifies le 2 pour 0
'Supplément d'info. de la fonction Val dans l'aide
If Val(Split(File, "-")(2)) = Jour Then
X = X + 1
'Où la copie aura lieu ... à déterminer
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, File, Feuille, Ref)
End If
End If
Next
End If
Salutations!
"William" <brun_rhodanienne@hotmail.com> a écrit dans le message de
news:uevemoXbEHA.3016@tk2msftngp13.phx.gbl...
Bonjour,
A quel niveau dois-je changer la macro si, à la place du jour, je
souhaite
trouver l'année ou le mois ou une autre chaîne de caractères (càd
année+mois
ou mois+jour...) ?
Autre chose (mais juste par curiosité afin que je cerne mieux VB) :
Je comprens le début de la macro jusqu'à Nb = .FoundFiles.count
mais après je ne comprend pas les lignes qui suivent jusqu'à X = X+1
(que
je
comprend).
Dans file = Split(.FoundFiles(A), "")(UBound(Split(.FoundFiles(A),
"")))
que doit renvoyer le ?
Dans Len(file) - Len(Application.Substitute(file, "-", ""))
Que doit renvoyer (file, "-", "") ?
Pourquoi Len(file) - Len(Application.Substitute(file, "-", "")) doit
être
égal à 2 ?
Encore une fois, ce n'est que de la curiosité....si ca doit demander 3
heures pour répondre, je me contenteraie de la macro : je peux
m'arranger
pour trouver les données qu'il me faut en classant les fichiers par
ordre
chrono.
William
"William" <brun_rhodanienne@hotmail.com> a écrit dans le message de
news:
u80snLWbEHA.2760@TK2MSFTNGP09.phx.gbl...
Merci michel
ca marche très bien
je te remercie du mal que tu t'es donné
William
PS: je n'ai pas répondu avant car j'ai fait le pont
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
uj87uRRaEHA.4048@TK2MSFTNGP10.phx.gbl...
Bonjour Alain,
Merci de pour ton intervention. Tu as parfaitement raison.
C'est ce qui arrive lorsque l'on se contente de copier une fonction
benoîtement !!!
;-))
Salutations!
"Alain CROS" <Personne@ICI> a écrit dans le message de
news:OiTVmKRaEHA.3476@tk2msftngp13.phx.gbl...
Bonjour.
Le problème vient du fait que tu utilise 2 fois la fonction Dir.
Sub TrouverMaValeur()
...
file = Dir(Path & "*.xls")
Do While file <> ""
...
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
...
file = Dir()
Loop
End Sub
puis
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)
As Variant
...
If Dir(Path & file) = "" Then
...
End Function
Dans la fonction Getvalue, le Dir est réinitialisé.
Alain CROS
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
e$6cnnQaEHA.2816@TK2MSFTNGP11.phx.gbl...
Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la
boucle
fait appel à une fonction extérieure pour
traitement, et bien au retour du traitement, la fonction Dir() et
vide
... et la boucle s'arrête. Le fait d'utiliser
une
fonction externe à la procédure fait perdre le "fil" au contenu
renvoyer
par la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un
a
une
explication ?
bonjour,
merci michel
William
"michdenis" a écrit dans le message de news:Bonjour William,
Si le nombre de fichier trouvé >0
If .Execute(msoSortByFileName) > 0 Then
'Affecte nb du nombre de fichiers trouvés
Nb = .FoundFiles.Count
'Début de boucle pour tous les fichiers trouvés
For A = 1 To Nb
'Extrait le nom du fichier de la chaîne de caractères
représentant'Chemin du fichier et nom du fichier
'la fonction Split : Scinde la chaîne de caractère selon le
symbole "" retenu'Chaque section de la chaîne scindée est mise dans un
tableau
File = Split(.FoundFiles(A),
"")(UBound(Split(.FoundFiles(A),
"")))
Une autre façon d'écrire la ligne précédente :
G contient un tableau de la chaîne chemin et fichier
G = Split(.FoundFiles(A), "")
for A = 0 to Ubound(G)
Msgbox G(a)
next
File = Split(.FoundFiles(A), "")(UBound(Split(.FoundFiles(A),
"")))'OU c'est la même chose
File = G(UBound(G))
'La ligne suivante c'est seulement le critère que j'ai
retenu
pour être"certain" que tu avais une date (présence de 2 "-" dans le
nom
du fichierIf Len(File) - Len(Application.Substitute(File, "-", "")) 2
Then
'Même chose que précédemment dans l'usage de la
fonction split'La présence de la fonction "Val" permet de retenir
que le chiffre'
'Split(File, "-")(2) Extrait cette chaîne
"09_17h01m45sGroupe 5000Fiche de travail RTB.xls"
Val(Split(File, "-")(2))
'En ajoutant la fonction "Val", on obtient 9,
'9 représente le jour.
'si tu veux extraire le mois, tu modifies le 2 pour
1
'Si tu veux extraire l'année, tu modifies le 2 pour 0
'Supplément d'info. de la fonction Val dans l'aide
If Val(Split(File, "-")(2)) = Jour Then
X = X + 1
'Où la copie aura lieu ... à déterminer
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, File, Feuille, Ref)
End If
End If
Next
End If
Salutations!
"William" a écrit dans le message de
news:Bonjour,
A quel niveau dois-je changer la macro si, à la place du jour, je
souhaite
trouver l'année ou le mois ou une autre chaîne de caractères (càd
année+moisou mois+jour...) ?
Autre chose (mais juste par curiosité afin que je cerne mieux VB) :
Je comprens le début de la macro jusqu'à Nb = .FoundFiles.count
mais après je ne comprend pas les lignes qui suivent jusqu'à X = X+1
(que
jecomprend).
Dans file = Split(.FoundFiles(A), "")(UBound(Split(.FoundFiles(A),
"")))
que doit renvoyer le ?
Dans Len(file) - Len(Application.Substitute(file, "-", ""))
Que doit renvoyer (file, "-", "") ?
Pourquoi Len(file) - Len(Application.Substitute(file, "-", "")) doit
être
égal à 2 ?
Encore une fois, ce n'est que de la curiosité....si ca doit demander 3
heures pour répondre, je me contenteraie de la macro : je peux
m'arranger
pour trouver les données qu'il me faut en classant les fichiers par
ordre
chrono.
William
"William" a écrit dans le message de
news:
Merci michel
ca marche très bien
je te remercie du mal que tu t'es donné
William
PS: je n'ai pas répondu avant car j'ai fait le pont
"michdenis" a écrit dans le message de news:Bonjour Alain,
Merci de pour ton intervention. Tu as parfaitement raison.
C'est ce qui arrive lorsque l'on se contente de copier une fonction
benoîtement !!!
;-))
Salutations!
"Alain CROS" a écrit dans le message de
news:Bonjour.
Le problème vient du fait que tu utilise 2 fois la fonction Dir.
Sub TrouverMaValeur()
...
file = Dir(Path & "*.xls")
Do While file <> ""
...
ThisWorkbook.Worksheets("Feuil1").Range("B" & X) = _
GetValue(Path, file, Feuille, Ref)
...
file = Dir()
Loop
End Sub
puis
Public Function GetValue(ByVal Path, ByVal file, ByVal sheet, ByVal
Ref)As Variant...
If Dir(Path & file) = "" Then
...
End Function
Dans la fonction Getvalue, le Dir est réinitialisé.
Alain CROS
"michdenis" a écrit dans le message de news:
e$Dernier exemplaire du fichier envoyé avec correction.
Un appel lancé à tous : Est-ce que vous saviez que :
Si on utilise DIR() une boucle sur un répertoire donné, si la
bouclefait appel à une fonction extérieure pourtraitement, et bien au retour du traitement, la fonction Dir() et
vide... et la boucle s'arrête. Le fait d'utiliserunefonction externe à la procédure fait perdre le "fil" au contenu
renvoyerpar la fonction dir()
C'est quand même singulier comme phénomène ! Est-ce que quelqu'un
a
uneexplication ?
Histoire de montrer mes progrès en VBA, voici le code avec comme
modification, la possibilité de choisir un jour ET un mois.
En effet, le 1er juillet, alors que je n'y connaissais rien de rien en
VBA,
j'ai demandé de butte-en-blanc....(NDLR : tu habites montmartre, william
ou bien?)
20 jours plus tard, mon formulaire est créé
Histoire de montrer mes progrès en VBA, voici le code avec comme
modification, la possibilité de choisir un jour ET un mois.
En effet, le 1er juillet, alors que je n'y connaissais rien de rien en
VBA,
j'ai demandé de butte-en-blanc....(NDLR : tu habites montmartre, william
ou bien?)
20 jours plus tard, mon formulaire est créé
Histoire de montrer mes progrès en VBA, voici le code avec comme
modification, la possibilité de choisir un jour ET un mois.
En effet, le 1er juillet, alors que je n'y connaissais rien de rien en
VBA,
j'ai demandé de butte-en-blanc....(NDLR : tu habites montmartre, william
ou bien?)
20 jours plus tard, mon formulaire est créé