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

macro excel

10 réponses
Avatar
celine
Bonjour,

Est-il possible de réduire cette macro afin de ne pas fermer et ouvrir tout
le temps le fichier dans lequel je recupere des donnees ?

Macro:

Application.ScreenUpdating = False
Set FichierTravail = ActiveWorkbook

Dim Fich As String, Ligne As Long
Const Chemin = "direction:\"

Ligne = 6

'jours

Fich = Dir("direction:\fichier.xl*")
Do While Fich <> ""
Workbooks.Open Filename:=Chemin & Fich
Sheets("onglet 1").Select
Sheets("onglet 1").Range("C5:J24").Copy
ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Ligne = Ligne + 20
Application.CutCopyMode = False
Workbooks(Fich).Close False
Fich = Dir
Loop

Fich = Dir("direction:\fichier.xl*")
Do While Fich <> ""
Workbooks.Open Filename:=Chemin & Fich
Sheets("onglet 1").Select
Sheets("onglet 1").Range("R5:Y24").Copy
ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Ligne = Ligne + 20
Application.CutCopyMode = False
Workbooks(Fich).Close False
Fich = Dir
Loop

Merci d'avance pour votre aide

Céline

10 réponses

Avatar
lSteph
Bonjour,
A quoi te sert de boucler sur 1 fichier.
Ce genre de code vise une boucle sur tous les fichiers d'un répertoire
le principe étant
f=dir("*.xls") et non fichier.xls ou pire fichier.xl* ce qui sous
entendrait de boucler sur les fichiers nommés fichier et d'extension
pouvant être xl..s ou autre , c'est étrange!

Plus clairement dis-nous à quoi doit servir la macro et là on va
effectivement simplifier, mais en connaissance de ce que ce code
voudrait faire.

--
lSteph

On 25 sep, 09:24, celine wrote:
Bonjour,

Est-il possible de réduire cette macro afin de ne pas fermer et ouvrir tout
le temps le fichier dans lequel je recupere des donnees ?

Macro:

Application.ScreenUpdating = False
Set FichierTravail = ActiveWorkbook

Dim Fich As String, Ligne As Long
Const Chemin = "direction:"

Ligne = 6

'jours

Fich = Dir("direction:fichier.xl*")
Do While Fich <> ""
Workbooks.Open Filename:=Chemin & Fich
Sheets("onglet 1").Select
Sheets("onglet 1").Range("C5:J24").Copy
ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues ,
Operation:=xlNone, SkipBlanks:= _
    False, Transpose:úlse
Ligne = Ligne + 20
Application.CutCopyMode = False
Workbooks(Fich).Close False
Fich = Dir
Loop

Fich = Dir("direction:fichier.xl*")
Do While Fich <> ""
Workbooks.Open Filename:=Chemin & Fich
Sheets("onglet 1").Select
Sheets("onglet 1").Range("R5:Y24").Copy
ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues ,
Operation:=xlNone, SkipBlanks:= _
    False, Transpose:úlse
Ligne = Ligne + 20
Application.CutCopyMode = False
Workbooks(Fich).Close False
Fich = Dir
Loop

Merci d'avance pour votre aide

Céline


Avatar
celine
Bonjour,

je voudrais recupérer dans un fichier des données provenant d'un autre
fichier.

Par exemple, je recupère dans un fichier les données dans les cellules C5 à
J24 et R5 à Y24, pour certains onglets. je recupère les donnes en faisant des
"copier coller"

je ne suis pas une experte en macro et j'avais trouvé cette macro sur le web
que j'avais adapté à mon besoin.

Merci d'avance

Céline

"lSteph" a écrit :

Bonjour,
A quoi te sert de boucler sur 1 fichier.
Ce genre de code vise une boucle sur tous les fichiers d'un répertoire
le principe étant
f=dir("*.xls") et non fichier.xls ou pire fichier.xl* ce qui sous
entendrait de boucler sur les fichiers nommés fichier et d'extension
pouvant être xl..s ou autre , c'est étrange!

Plus clairement dis-nous à quoi doit servir la macro et là on va
effectivement simplifier, mais en connaissance de ce que ce code
voudrait faire.

--
lSteph

On 25 sep, 09:24, celine wrote:
> Bonjour,
>
> Est-il possible de réduire cette macro afin de ne pas fermer et ouvrir tout
> le temps le fichier dans lequel je recupere des donnees ?
>
> Macro:
>
> Application.ScreenUpdating = False
> Set FichierTravail = ActiveWorkbook
>
> Dim Fich As String, Ligne As Long
> Const Chemin = "direction:"
>
> Ligne = 6
>
> 'jours
>
> Fich = Dir("direction:fichier.xl*")
> Do While Fich <> ""
> Workbooks.Open Filename:=Chemin & Fich
> Sheets("onglet 1").Select
> Sheets("onglet 1").Range("C5:J24").Copy
> ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
> Operation:=xlNone, SkipBlanks:= _
> False, Transpose:úlse
> Ligne = Ligne + 20
> Application.CutCopyMode = False
> Workbooks(Fich).Close False
> Fich = Dir
> Loop
>
> Fich = Dir("direction:fichier.xl*")
> Do While Fich <> ""
> Workbooks.Open Filename:=Chemin & Fich
> Sheets("onglet 1").Select
> Sheets("onglet 1").Range("R5:Y24").Copy
> ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
> Operation:=xlNone, SkipBlanks:= _
> False, Transpose:úlse
> Ligne = Ligne + 20
> Application.CutCopyMode = False
> Workbooks(Fich).Close False
> Fich = Dir
> Loop
>
> Merci d'avance pour votre aide
>
> Céline




Avatar
lSteph
Sans macro, dans la plage receptrice:

='C:direction[monfichier.xls]Feuil1'!C5:J24
Ctrl+maj+Entrée

si tu veux supprimer la liaison Copier Coller Spécial valeurs

--
lSteph



On 25 sep, 11:42, celine wrote:
Bonjour,

je voudrais recupérer dans un fichier des données provenant d'un autr e
fichier.

Par exemple, je recupère dans un fichier les données dans les cellule s C5 à
J24 et R5 à Y24, pour certains onglets. je recupère les donnes en fai sant des
"copier coller"

je ne suis pas une experte en macro et j'avais trouvé cette macro sur l e web
que j'avais adapté à mon besoin.

Merci d'avance

Céline

"lSteph" a écrit :

> Bonjour,
> A quoi te sert de boucler sur 1 fichier.
> Ce genre de code vise une boucle sur tous les fichiers d'un répertoir e
> le principe étant
> f=dir("*.xls") et non fichier.xls ou pire fichier.xl* ce qui sous
> entendrait de boucler sur les fichiers nommés fichier et d'extension
> pouvant être xl..s ou autre , c'est étrange!

> Plus clairement dis-nous à quoi doit servir la macro et là on va
> effectivement simplifier, mais en connaissance de ce que ce code
> voudrait faire.

> --
> lSteph

> On 25 sep, 09:24, celine wrote:
> > Bonjour,

> > Est-il possible de réduire cette macro afin de ne pas fermer et ouv rir tout
> > le temps le fichier dans lequel je recupere des donnees ?

> > Macro:

> > Application.ScreenUpdating = False
> > Set FichierTravail = ActiveWorkbook

> > Dim Fich As String, Ligne As Long
> > Const Chemin = "direction:"

> > Ligne = 6

> > 'jours

> > Fich = Dir("direction:fichier.xl*")
> > Do While Fich <> ""
> > Workbooks.Open Filename:=Chemin & Fich
> > Sheets("onglet 1").Select
> > Sheets("onglet 1").Range("C5:J24").Copy
> > ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlVa lues,
> > Operation:=xlNone, SkipBlanks:= _
> >     False, Transpose:úlse
> > Ligne = Ligne + 20
> > Application.CutCopyMode = False
> > Workbooks(Fich).Close False
> > Fich = Dir
> > Loop

> > Fich = Dir("direction:fichier.xl*")
> > Do While Fich <> ""
> > Workbooks.Open Filename:=Chemin & Fich
> > Sheets("onglet 1").Select
> > Sheets("onglet 1").Range("R5:Y24").Copy
> > ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlVa lues,
> > Operation:=xlNone, SkipBlanks:= _
> >     False, Transpose:úlse
> > Ligne = Ligne + 20
> > Application.CutCopyMode = False
> > Workbooks(Fich).Close False
> > Fich = Dir
> > Loop

> > Merci d'avance pour votre aide

> > Céline


Avatar
celine
Merci pour la réponse.

Je voulais passer par une macro car j'ai douze fichiers, et 10 onglets par
fichier; et 4 plages différentes par onglets.

En plus, cela me permettait d'avoir les informations mis à jours à chaque
fois que j'executais la macro.

Merci d'avance

céline

"lSteph" a écrit :

Sans macro, dans la plage receptrice:

='C:direction[monfichier.xls]Feuil1'!C5:J24
Ctrl+maj+Entrée

si tu veux supprimer la liaison Copier Coller Spécial valeurs

--
lSteph



On 25 sep, 11:42, celine wrote:
> Bonjour,
>
> je voudrais recupérer dans un fichier des données provenant d'un autre
> fichier.
>
> Par exemple, je recupère dans un fichier les données dans les cellules C5 à
> J24 et R5 à Y24, pour certains onglets. je recupère les donnes en faisant des
> "copier coller"
>
> je ne suis pas une experte en macro et j'avais trouvé cette macro sur le web
> que j'avais adapté à mon besoin.
>
> Merci d'avance
>
> Céline
>
> "lSteph" a écrit :
>
> > Bonjour,
> > A quoi te sert de boucler sur 1 fichier.
> > Ce genre de code vise une boucle sur tous les fichiers d'un répertoire
> > le principe étant
> > f=dir("*.xls") et non fichier.xls ou pire fichier.xl* ce qui sous
> > entendrait de boucler sur les fichiers nommés fichier et d'extension
> > pouvant être xl..s ou autre , c'est étrange!
>
> > Plus clairement dis-nous à quoi doit servir la macro et là on va
> > effectivement simplifier, mais en connaissance de ce que ce code
> > voudrait faire.
>
> > --
> > lSteph
>
> > On 25 sep, 09:24, celine wrote:
> > > Bonjour,
>
> > > Est-il possible de réduire cette macro afin de ne pas fermer et ouvrir tout
> > > le temps le fichier dans lequel je recupere des donnees ?
>
> > > Macro:
>
> > > Application.ScreenUpdating = False
> > > Set FichierTravail = ActiveWorkbook
>
> > > Dim Fich As String, Ligne As Long
> > > Const Chemin = "direction:"
>
> > > Ligne = 6
>
> > > 'jours
>
> > > Fich = Dir("direction:fichier.xl*")
> > > Do While Fich <> ""
> > > Workbooks.Open Filename:=Chemin & Fich
> > > Sheets("onglet 1").Select
> > > Sheets("onglet 1").Range("C5:J24").Copy
> > > ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
> > > Operation:=xlNone, SkipBlanks:= _
> > > False, Transpose:úlse
> > > Ligne = Ligne + 20
> > > Application.CutCopyMode = False
> > > Workbooks(Fich).Close False
> > > Fich = Dir
> > > Loop
>
> > > Fich = Dir("direction:fichier.xl*")
> > > Do While Fich <> ""
> > > Workbooks.Open Filename:=Chemin & Fich
> > > Sheets("onglet 1").Select
> > > Sheets("onglet 1").Range("R5:Y24").Copy
> > > ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
> > > Operation:=xlNone, SkipBlanks:= _
> > > False, Transpose:úlse
> > > Ligne = Ligne + 20
> > > Application.CutCopyMode = False
> > > Workbooks(Fich).Close False
> > > Fich = Dir
> > > Loop
>
> > > Merci d'avance pour votre aide
>
> > > Céline




Avatar
LSteph
Bonsoir,

voici ce que je te proposerais en exemple pour la plage C5:J24
reste à savoir si les fichiers sont bien et les seuls dans direction et
quelles sont les feuilles à traiter

Dim f as string, sh as worksheet

chdir "C:direction"
f=dir("*.xls")

do while len(f)>0
Workbooks.open(f)
for each sh in activeworkbook.sheets
sh.Range("C5:J24").Copy
ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial _
Paste:=xlValues, Operation:=xlNone, SkipBlanks:= False, _
Transpose:úlse
next sh
Activeworkbook.close false
f=dir
loop


'@+
'lSteph

celine a écrit :
Merci pour la réponse.

Je voulais passer par une macro car j'ai douze fichiers, et 10 onglets par
fichier; et 4 plages différentes par onglets.

En plus, cela me permettait d'avoir les informations mis à jours à chaque
fois que j'executais la macro.

Merci d'avance

céline

"lSteph" a écrit :

Sans macro, dans la plage receptrice:

='C:direction[monfichier.xls]Feuil1'!C5:J24
Ctrl+maj+Entrée

si tu veux supprimer la liaison Copier Coller Spécial valeurs

--
lSteph



On 25 sep, 11:42, celine wrote:
Bonjour,

je voudrais recupérer dans un fichier des données provenant d'un autre
fichier.

Par exemple, je recupère dans un fichier les données dans les cellules C5 à
J24 et R5 à Y24, pour certains onglets. je recupère les donnes en faisant des
"copier coller"

je ne suis pas une experte en macro et j'avais trouvé cette macro sur le web
que j'avais adapté à mon besoin.

Merci d'avance

Céline

"lSteph" a écrit :

Bonjour,
A quoi te sert de boucler sur 1 fichier.
Ce genre de code vise une boucle sur tous les fichiers d'un répertoire
le principe étant
f=dir("*.xls") et non fichier.xls ou pire fichier.xl* ce qui sous
entendrait de boucler sur les fichiers nommés fichier et d'extension
pouvant être xl..s ou autre , c'est étrange!
Plus clairement dis-nous à quoi doit servir la macro et là on va
effectivement simplifier, mais en connaissance de ce que ce code
voudrait faire.
--
lSteph
On 25 sep, 09:24, celine wrote:
Bonjour,
Est-il possible de réduire cette macro afin de ne pas fermer et ouvrir tout
le temps le fichier dans lequel je recupere des donnees ?
Macro:
Application.ScreenUpdating = False
Set FichierTravail = ActiveWorkbook
Dim Fich As String, Ligne As Long
Const Chemin = "direction:"
Ligne = 6
'jours
Fich = Dir("direction:fichier.xl*")
Do While Fich <> ""
Workbooks.Open Filename:=Chemin & Fich
Sheets("onglet 1").Select
Sheets("onglet 1").Range("C5:J24").Copy
ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:úlse
Ligne = Ligne + 20
Application.CutCopyMode = False
Workbooks(Fich).Close False
Fich = Dir
Loop
Fich = Dir("direction:fichier.xl*")
Do While Fich <> ""
Workbooks.Open Filename:=Chemin & Fich
Sheets("onglet 1").Select
Sheets("onglet 1").Range("R5:Y24").Copy
ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:úlse
Ligne = Ligne + 20
Application.CutCopyMode = False
Workbooks(Fich).Close False
Fich = Dir
Loop
Merci d'avance pour votre aide
Céline











Avatar
celine
Bonjour

si j'ai bien compris ta macro, cela me permet de récupérer des données dans
une plage précise (dans l'exemple C5 à J24) pour tous les onglets?

Merci

Céline

"LSteph" a écrit :

Bonsoir,

voici ce que je te proposerais en exemple pour la plage C5:J24
reste à savoir si les fichiers sont bien et les seuls dans direction et
quelles sont les feuilles à traiter

Dim f as string, sh as worksheet

chdir "C:direction"
f=dir("*.xls")

do while len(f)>0
Workbooks.open(f)
for each sh in activeworkbook.sheets
sh.Range("C5:J24").Copy
ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial _
Paste:=xlValues, Operation:=xlNone, SkipBlanks:= False, _
Transpose:úlse
next sh
Activeworkbook.close false
f=dir
loop


'@+
'lSteph

celine a écrit :
> Merci pour la réponse.
>
> Je voulais passer par une macro car j'ai douze fichiers, et 10 onglets par
> fichier; et 4 plages différentes par onglets.
>
> En plus, cela me permettait d'avoir les informations mis à jours à chaque
> fois que j'executais la macro.
>
> Merci d'avance
>
> céline
>
> "lSteph" a écrit :
>
>> Sans macro, dans la plage receptrice:
>>
>> ='C:direction[monfichier.xls]Feuil1'!C5:J24
>> Ctrl+maj+Entrée
>>
>> si tu veux supprimer la liaison Copier Coller Spécial valeurs
>>
>> --
>> lSteph
>>
>>
>>
>> On 25 sep, 11:42, celine wrote:
>>> Bonjour,
>>>
>>> je voudrais recupérer dans un fichier des données provenant d'un autre
>>> fichier.
>>>
>>> Par exemple, je recupère dans un fichier les données dans les cellules C5 à
>>> J24 et R5 à Y24, pour certains onglets. je recupère les donnes en faisant des
>>> "copier coller"
>>>
>>> je ne suis pas une experte en macro et j'avais trouvé cette macro sur le web
>>> que j'avais adapté à mon besoin.
>>>
>>> Merci d'avance
>>>
>>> Céline
>>>
>>> "lSteph" a écrit :
>>>
>>>> Bonjour,
>>>> A quoi te sert de boucler sur 1 fichier.
>>>> Ce genre de code vise une boucle sur tous les fichiers d'un répertoire
>>>> le principe étant
>>>> f=dir("*.xls") et non fichier.xls ou pire fichier.xl* ce qui sous
>>>> entendrait de boucler sur les fichiers nommés fichier et d'extension
>>>> pouvant être xl..s ou autre , c'est étrange!
>>>> Plus clairement dis-nous à quoi doit servir la macro et là on va
>>>> effectivement simplifier, mais en connaissance de ce que ce code
>>>> voudrait faire.
>>>> --
>>>> lSteph
>>>> On 25 sep, 09:24, celine wrote:
>>>>> Bonjour,
>>>>> Est-il possible de réduire cette macro afin de ne pas fermer et ouvrir tout
>>>>> le temps le fichier dans lequel je recupere des donnees ?
>>>>> Macro:
>>>>> Application.ScreenUpdating = False
>>>>> Set FichierTravail = ActiveWorkbook
>>>>> Dim Fich As String, Ligne As Long
>>>>> Const Chemin = "direction:"
>>>>> Ligne = 6
>>>>> 'jours
>>>>> Fich = Dir("direction:fichier.xl*")
>>>>> Do While Fich <> ""
>>>>> Workbooks.Open Filename:=Chemin & Fich
>>>>> Sheets("onglet 1").Select
>>>>> Sheets("onglet 1").Range("C5:J24").Copy
>>>>> ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
>>>>> Operation:=xlNone, SkipBlanks:= _
>>>>> False, Transpose:úlse
>>>>> Ligne = Ligne + 20
>>>>> Application.CutCopyMode = False
>>>>> Workbooks(Fich).Close False
>>>>> Fich = Dir
>>>>> Loop
>>>>> Fich = Dir("direction:fichier.xl*")
>>>>> Do While Fich <> ""
>>>>> Workbooks.Open Filename:=Chemin & Fich
>>>>> Sheets("onglet 1").Select
>>>>> Sheets("onglet 1").Range("R5:Y24").Copy
>>>>> ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
>>>>> Operation:=xlNone, SkipBlanks:= _
>>>>> False, Transpose:úlse
>>>>> Ligne = Ligne + 20
>>>>> Application.CutCopyMode = False
>>>>> Workbooks(Fich).Close False
>>>>> Fich = Dir
>>>>> Loop
>>>>> Merci d'avance pour votre aide
>>>>> Céline
>>



Avatar
lSteph
...oui dans l'idée c'est ce que j'ai écrit à la volée, donc voici
exemple rectifié, mais reste attente de tes réponse:

Option Explicit

Sub ramene()
Dim f As String, sh As Worksheet, Ligne As Long

ChDir "C:direction"
f = Dir("*.xls")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Do While Len(f) > 0
Workbooks.Open (f)
For Each sh In ActiveWorkbook.Sheets
sh.Range("C5:J24").Copy
With ThisWorkbook.Sheets("xxx")
Ligne = .[A65536].End(xlUp)(2).Row
.Cells(Ligne, 1).PasteSpecial _
Paste:=xlValues, Operation:=xlNone, SkipBlanks:úlse, _
Transpose:úlse
End With
Next sh
ActiveWorkbook.Close False
f = Dir
Loop
Application.DisplayAlerts = True
End Sub

'lSteph


On 26 sep, 14:33, celine wrote:
Bonjour

si j'ai bien compris ta macro, cela me permet de récupérer des donn ées dans
une plage précise (dans l'exemple C5 à J24) pour tous les onglets?

Merci

Céline

"LSteph" a écrit :

> Bonsoir,

> voici ce que je te proposerais en exemple pour la plage C5:J24
> reste à savoir si les fichiers sont bien et les seuls dans direction et
> quelles sont les feuilles à traiter

> Dim f as string, sh as worksheet

> chdir "C:direction"
> f=dir("*.xls")

> do while len(f)>0
>    Workbooks.open(f)
>            for each sh in activeworkbook.sheets
>            sh.Range("C5:J24").Copy
> ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial _
> Paste:=xlValues, Operation:=xlNone, SkipBlanks:= False, _
> Transpose:úlse
>            next sh
>    Activeworkbook.close false
>    f=dir
> loop

> '@+
> 'lSteph

> celine a écrit :
> > Merci pour la réponse.

> > Je voulais passer par une macro car j'ai douze fichiers, et 10 onglet s par
> > fichier; et 4 plages différentes par onglets.

> > En plus, cela me permettait d'avoir les informations mis à jours à chaque
> > fois que j'executais la macro.

> > Merci d'avance

> > céline

> > "lSteph" a écrit :

> >> Sans macro, dans la plage receptrice:

> >> ='C:direction[monfichier.xls]Feuil1'!C5:J24
> >> Ctrl+maj+Entrée

> >> si tu veux supprimer la  liaison Copier Coller Spécial valeurs

> >> --
> >> lSteph

> >> On 25 sep, 11:42, celine wrote:
> >>> Bonjour,

> >>> je voudrais recupérer dans un fichier des données provenant d'u n autre
> >>> fichier.

> >>> Par exemple, je recupère dans un fichier les données dans les c ellules C5 à
> >>> J24 et R5 à Y24, pour certains onglets. je recupère les donnes en faisant des
> >>> "copier coller"

> >>> je ne suis pas une experte en macro et j'avais trouvé cette macro sur le web
> >>> que j'avais adapté à mon besoin.

> >>> Merci d'avance

> >>> Céline

> >>> "lSteph" a écrit :

> >>>> Bonjour,
> >>>> A quoi te sert de boucler sur 1 fichier.
> >>>> Ce genre de code vise une boucle sur tous les fichiers d'un répe rtoire
> >>>> le principe étant
> >>>> f=dir("*.xls") et non fichier.xls ou pire fichier.xl* ce qui sou s
> >>>> entendrait de boucler sur les fichiers nommés fichier et d'exten sion
> >>>> pouvant être xl..s ou autre , c'est étrange!
> >>>> Plus clairement dis-nous à quoi doit servir la macro et là on va
> >>>> effectivement simplifier, mais en connaissance de ce que ce code
> >>>> voudrait faire.
> >>>> --
> >>>> lSteph
> >>>> On 25 sep, 09:24, celine wrote:
> >>>>> Bonjour,
> >>>>> Est-il possible de réduire cette macro afin de ne pas fermer et ouvrir tout
> >>>>> le temps le fichier dans lequel je recupere des donnees ?
> >>>>> Macro:
> >>>>> Application.ScreenUpdating = False
> >>>>> Set FichierTravail = ActiveWorkbook
> >>>>> Dim Fich As String, Ligne As Long
> >>>>> Const Chemin = "direction:"
> >>>>> Ligne = 6
> >>>>> 'jours
> >>>>> Fich = Dir("direction:fichier.xl*")
> >>>>> Do While Fich <> ""
> >>>>> Workbooks.Open Filename:=Chemin & Fich
> >>>>> Sheets("onglet 1").Select
> >>>>> Sheets("onglet 1").Range("C5:J24").Copy
> >>>>> ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:= xlValues,
> >>>>> Operation:=xlNone, SkipBlanks:= _
> >>>>>     False, Transpose:úlse
> >>>>> Ligne = Ligne + 20
> >>>>> Application.CutCopyMode = False
> >>>>> Workbooks(Fich).Close False
> >>>>> Fich = Dir
> >>>>> Loop
> >>>>> Fich = Dir("direction:fichier.xl*")
> >>>>> Do While Fich <> ""
> >>>>> Workbooks.Open Filename:=Chemin & Fich
> >>>>> Sheets("onglet 1").Select
> >>>>> Sheets("onglet 1").Range("R5:Y24").Copy
> >>>>> ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:= xlValues,
> >>>>> Operation:=xlNone, SkipBlanks:= _
> >>>>>     False, Transpose:úlse
> >>>>> Ligne = Ligne + 20
> >>>>> Application.CutCopyMode = False
> >>>>> Workbooks(Fich).Close False
> >>>>> Fich = Dir
> >>>>> Loop
> >>>>> Merci d'avance pour votre aide
> >>>>> Céline


Avatar
celine
Désolé mais cela ne fonctionne pas

Que veulent dire les .. dans la macro (> ..Cells(Ligne, 1).PasteSpecial ) ?

Céline

"lSteph" a écrit :

....oui dans l'idée c'est ce que j'ai écrit à la volée, donc voici
exemple rectifié, mais reste attente de tes réponse:

Option Explicit

Sub ramene()
Dim f As String, sh As Worksheet, Ligne As Long

ChDir "C:direction"
f = Dir("*.xls")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Do While Len(f) > 0
Workbooks.Open (f)
For Each sh In ActiveWorkbook.Sheets
sh.Range("C5:J24").Copy
With ThisWorkbook.Sheets("xxx")
Ligne = .[A65536].End(xlUp)(2).Row
..Cells(Ligne, 1).PasteSpecial _
Paste:=xlValues, Operation:=xlNone, SkipBlanks:úlse, _
Transpose:úlse
End With
Next sh
ActiveWorkbook.Close False
f = Dir
Loop
Application.DisplayAlerts = True
End Sub

'lSteph


On 26 sep, 14:33, celine wrote:
> Bonjour
>
> si j'ai bien compris ta macro, cela me permet de récupérer des données dans
> une plage précise (dans l'exemple C5 à J24) pour tous les onglets?
>
> Merci
>
> Céline
>
> "LSteph" a écrit :
>
> > Bonsoir,
>
> > voici ce que je te proposerais en exemple pour la plage C5:J24
> > reste à savoir si les fichiers sont bien et les seuls dans direction et
> > quelles sont les feuilles à traiter
>
> > Dim f as string, sh as worksheet
>
> > chdir "C:direction"
> > f=dir("*.xls")
>
> > do while len(f)>0
> > Workbooks.open(f)
> > for each sh in activeworkbook.sheets
> > sh.Range("C5:J24").Copy
> > ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial _
> > Paste:=xlValues, Operation:=xlNone, SkipBlanks:= False, _
> > Transpose:úlse
> > next sh
> > Activeworkbook.close false
> > f=dir
> > loop
>
> > '@+
> > 'lSteph
>
> > celine a écrit :
> > > Merci pour la réponse.
>
> > > Je voulais passer par une macro car j'ai douze fichiers, et 10 onglets par
> > > fichier; et 4 plages différentes par onglets.
>
> > > En plus, cela me permettait d'avoir les informations mis à jours à chaque
> > > fois que j'executais la macro.
>
> > > Merci d'avance
>
> > > céline
>
> > > "lSteph" a écrit :
>
> > >> Sans macro, dans la plage receptrice:
>
> > >> ='C:direction[monfichier.xls]Feuil1'!C5:J24
> > >> Ctrl+maj+Entrée
>
> > >> si tu veux supprimer la liaison Copier Coller Spécial valeurs
>
> > >> --
> > >> lSteph
>
> > >> On 25 sep, 11:42, celine wrote:
> > >>> Bonjour,
>
> > >>> je voudrais recupérer dans un fichier des données provenant d'un autre
> > >>> fichier.
>
> > >>> Par exemple, je recupère dans un fichier les données dans les cellules C5 à
> > >>> J24 et R5 à Y24, pour certains onglets. je recupère les donnes en faisant des
> > >>> "copier coller"
>
> > >>> je ne suis pas une experte en macro et j'avais trouvé cette macro sur le web
> > >>> que j'avais adapté à mon besoin.
>
> > >>> Merci d'avance
>
> > >>> Céline
>
> > >>> "lSteph" a écrit :
>
> > >>>> Bonjour,
> > >>>> A quoi te sert de boucler sur 1 fichier.
> > >>>> Ce genre de code vise une boucle sur tous les fichiers d'un répertoire
> > >>>> le principe étant
> > >>>> f=dir("*.xls") et non fichier.xls ou pire fichier.xl* ce qui sous
> > >>>> entendrait de boucler sur les fichiers nommés fichier et d'extension
> > >>>> pouvant être xl..s ou autre , c'est étrange!
> > >>>> Plus clairement dis-nous à quoi doit servir la macro et là on va
> > >>>> effectivement simplifier, mais en connaissance de ce que ce code
> > >>>> voudrait faire.
> > >>>> --
> > >>>> lSteph
> > >>>> On 25 sep, 09:24, celine wrote:
> > >>>>> Bonjour,
> > >>>>> Est-il possible de réduire cette macro afin de ne pas fermer et ouvrir tout
> > >>>>> le temps le fichier dans lequel je recupere des donnees ?
> > >>>>> Macro:
> > >>>>> Application.ScreenUpdating = False
> > >>>>> Set FichierTravail = ActiveWorkbook
> > >>>>> Dim Fich As String, Ligne As Long
> > >>>>> Const Chemin = "direction:"
> > >>>>> Ligne = 6
> > >>>>> 'jours
> > >>>>> Fich = Dir("direction:fichier.xl*")
> > >>>>> Do While Fich <> ""
> > >>>>> Workbooks.Open Filename:=Chemin & Fich
> > >>>>> Sheets("onglet 1").Select
> > >>>>> Sheets("onglet 1").Range("C5:J24").Copy
> > >>>>> ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
> > >>>>> Operation:=xlNone, SkipBlanks:= _
> > >>>>> False, Transpose:úlse
> > >>>>> Ligne = Ligne + 20
> > >>>>> Application.CutCopyMode = False
> > >>>>> Workbooks(Fich).Close False
> > >>>>> Fich = Dir
> > >>>>> Loop
> > >>>>> Fich = Dir("direction:fichier.xl*")
> > >>>>> Do While Fich <> ""
> > >>>>> Workbooks.Open Filename:=Chemin & Fich
> > >>>>> Sheets("onglet 1").Select
> > >>>>> Sheets("onglet 1").Range("R5:Y24").Copy
> > >>>>> ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
> > >>>>> Operation:=xlNone, SkipBlanks:= _
> > >>>>> False, Transpose:úlse
> > >>>>> Ligne = Ligne + 20
> > >>>>> Application.CutCopyMode = False
> > >>>>> Workbooks(Fich).Close False
> > >>>>> Fich = Dir
> > >>>>> Loop
> > >>>>> Merci d'avance pour votre aide
> > >>>>> Céline




Avatar
LSteph
Bonsoir,


avant de te l'envoyer j'ai testé ce code
il fonctionne pour faire ce que j'ai pu comprendre de ta demande.

Surtout que tu ne réponds toujours pas aux questions qui permettraient
de mieux la cibler.
Alors dis plutôt : " je n'arrive pas à l'utiliser ou cela ne correspond
pas à ce que je voudrais ..."
Ou bien précises mieux ce qui va ou pas,... ou une erreur surgit..avec
tel ou tel message..etc

Sinon cela ne nous avance guère!

Cet exemple suppose que tes fichiers dont on doit collecter copie de
plage dans les feuilles, sont comme tu sembles laisser entendre dans
C:direction
et uniquement ceux là.

Alors je remets:


>>>> reste à savoir si les fichiers sont bien et les seuls dans
direction et
>>>> quelles sont les feuilles à traiter...???

Tu as même le droit de donner toutes précisions sans qu'on ait à les
découvrir par petits bouts!

Amicordialement.

--
lSteph


celine a écrit :
Désolé mais cela ne fonctionne pas

Que veulent dire les .. dans la macro (> ..Cells(Ligne, 1).PasteSpecial ) ?

Céline

"lSteph" a écrit :

....oui dans l'idée c'est ce que j'ai écrit à la volée, donc voici
exemple rectifié, mais reste attente de tes réponse:

Option Explicit

Sub ramene()
Dim f As String, sh As Worksheet, Ligne As Long

ChDir "C:direction"
f = Dir("*.xls")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Do While Len(f) > 0
Workbooks.Open (f)
For Each sh In ActiveWorkbook.Sheets
sh.Range("C5:J24").Copy
With ThisWorkbook.Sheets("xxx")
Ligne = .[A65536].End(xlUp)(2).Row
..Cells(Ligne, 1).PasteSpecial _
Paste:=xlValues, Operation:=xlNone, SkipBlanks:úlse, _
Transpose:úlse
End With
Next sh
ActiveWorkbook.Close False
f = Dir
Loop
Application.DisplayAlerts = True
End Sub

'lSteph


On 26 sep, 14:33, celine wrote:
Bonjour

si j'ai bien compris ta macro, cela me permet de récupérer des données dans
une plage précise (dans l'exemple C5 à J24) pour tous les onglets?

Merci

Céline

"LSteph" a écrit :

Bonsoir,
voici ce que je te proposerais en exemple pour la plage C5:J24
reste à savoir si les fichiers sont bien et les seuls dans direction et
quelles sont les feuilles à traiter
Dim f as string, sh as worksheet
chdir "C:direction"
f=dir("*.xls")
do while len(f)>0
Workbooks.open(f)
for each sh in activeworkbook.sheets
sh.Range("C5:J24").Copy
ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial _
Paste:=xlValues, Operation:=xlNone, SkipBlanks:= False, _
Transpose:úlse
next sh
Activeworkbook.close false
f=dir
loop
'@+
'lSteph
celine a écrit :
Merci pour la réponse.
Je voulais passer par une macro car j'ai douze fichiers, et 10 onglets par
fichier; et 4 plages différentes par onglets.
En plus, cela me permettait d'avoir les informations mis à jours à chaque
fois que j'executais la macro.
Merci d'avance
céline
"lSteph" a écrit :
Sans macro, dans la plage receptrice:
='C:direction[monfichier.xls]Feuil1'!C5:J24
Ctrl+maj+Entrée
si tu veux supprimer la liaison Copier Coller Spécial valeurs
--
lSteph
On 25 sep, 11:42, celine wrote:
Bonjour,
je voudrais recupérer dans un fichier des données provenant d'un autre
fichier.
Par exemple, je recupère dans un fichier les données dans les cellules C5 à
J24 et R5 à Y24, pour certains onglets. je recupère les donnes en faisant des
"copier coller"
je ne suis pas une experte en macro et j'avais trouvé cette macro sur le web
que j'avais adapté à mon besoin.
Merci d'avance
Céline
"lSteph" a écrit :
Bonjour,
A quoi te sert de boucler sur 1 fichier.
Ce genre de code vise une boucle sur tous les fichiers d'un répertoire
le principe étant
f=dir("*.xls") et non fichier.xls ou pire fichier.xl* ce qui sous
entendrait de boucler sur les fichiers nommés fichier et d'extension
pouvant être xl..s ou autre , c'est étrange!
Plus clairement dis-nous à quoi doit servir la macro et là on va
effectivement simplifier, mais en connaissance de ce que ce code
voudrait faire.
--
lSteph
On 25 sep, 09:24, celine wrote:
Bonjour,
Est-il possible de réduire cette macro afin de ne pas fermer et ouvrir tout
le temps le fichier dans lequel je recupere des donnees ?
Macro:
Application.ScreenUpdating = False
Set FichierTravail = ActiveWorkbook
Dim Fich As String, Ligne As Long
Const Chemin = "direction:"
Ligne = 6
'jours
Fich = Dir("direction:fichier.xl*")
Do While Fich <> ""
Workbooks.Open Filename:=Chemin & Fich
Sheets("onglet 1").Select
Sheets("onglet 1").Range("C5:J24").Copy
ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:úlse
Ligne = Ligne + 20
Application.CutCopyMode = False
Workbooks(Fich).Close False
Fich = Dir
Loop
Fich = Dir("direction:fichier.xl*")
Do While Fich <> ""
Workbooks.Open Filename:=Chemin & Fich
Sheets("onglet 1").Select
Sheets("onglet 1").Range("R5:Y24").Copy
ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:úlse
Ligne = Ligne + 20
Application.CutCopyMode = False
Workbooks(Fich).Close False
Fich = Dir
Loop
Merci d'avance pour votre aide
Céline



















Avatar
celine
Bonsoir,

j'ai 12 fichiers, tous au meme endroit (c:). et je voudrais recuperer
certaines plages de TOUS les onglets de ces fichiers.

Quand j'execute la macro rien ne se passe.

Merci

Céline


"LSteph" a écrit :

Bonsoir,


avant de te l'envoyer j'ai testé ce code
il fonctionne pour faire ce que j'ai pu comprendre de ta demande.

Surtout que tu ne réponds toujours pas aux questions qui permettraient
de mieux la cibler.
Alors dis plutôt : " je n'arrive pas à l'utiliser ou cela ne correspond
pas à ce que je voudrais ..."
Ou bien précises mieux ce qui va ou pas,... ou une erreur surgit..avec
tel ou tel message..etc

Sinon cela ne nous avance guère!

Cet exemple suppose que tes fichiers dont on doit collecter copie de
plage dans les feuilles, sont comme tu sembles laisser entendre dans
C:direction
et uniquement ceux là.

Alors je remets:


>>>> reste à savoir si les fichiers sont bien et les seuls dans
direction et
>>>> quelles sont les feuilles à traiter...???

Tu as même le droit de donner toutes précisions sans qu'on ait à les
découvrir par petits bouts!

Amicordialement.

--
lSteph


celine a écrit :
> Désolé mais cela ne fonctionne pas
>
> Que veulent dire les .. dans la macro (> ..Cells(Ligne, 1).PasteSpecial ) ?
>
> Céline
>
> "lSteph" a écrit :
>
>> ....oui dans l'idée c'est ce que j'ai écrit à la volée, donc voici
>> exemple rectifié, mais reste attente de tes réponse:
>>
>> Option Explicit
>>
>> Sub ramene()
>> Dim f As String, sh As Worksheet, Ligne As Long
>>
>> ChDir "C:direction"
>> f = Dir("*.xls")
>> Application.ScreenUpdating = False
>> Application.DisplayAlerts = False
>> Do While Len(f) > 0
>> Workbooks.Open (f)
>> For Each sh In ActiveWorkbook.Sheets
>> sh.Range("C5:J24").Copy
>> With ThisWorkbook.Sheets("xxx")
>> Ligne = .[A65536].End(xlUp)(2).Row
>> ..Cells(Ligne, 1).PasteSpecial _
>> Paste:=xlValues, Operation:=xlNone, SkipBlanks:úlse, _
>> Transpose:úlse
>> End With
>> Next sh
>> ActiveWorkbook.Close False
>> f = Dir
>> Loop
>> Application.DisplayAlerts = True
>> End Sub
>>
>> 'lSteph
>>
>>
>> On 26 sep, 14:33, celine wrote:
>>> Bonjour
>>>
>>> si j'ai bien compris ta macro, cela me permet de récupérer des données dans
>>> une plage précise (dans l'exemple C5 à J24) pour tous les onglets?
>>>
>>> Merci
>>>
>>> Céline
>>>
>>> "LSteph" a écrit :
>>>
>>>> Bonsoir,
>>>> voici ce que je te proposerais en exemple pour la plage C5:J24
>>>> reste à savoir si les fichiers sont bien et les seuls dans direction et
>>>> quelles sont les feuilles à traiter
>>>> Dim f as string, sh as worksheet
>>>> chdir "C:direction"
>>>> f=dir("*.xls")
>>>> do while len(f)>0
>>>> Workbooks.open(f)
>>>> for each sh in activeworkbook.sheets
>>>> sh.Range("C5:J24").Copy
>>>> ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial _
>>>> Paste:=xlValues, Operation:=xlNone, SkipBlanks:= False, _
>>>> Transpose:úlse
>>>> next sh
>>>> Activeworkbook.close false
>>>> f=dir
>>>> loop
>>>> '@+
>>>> 'lSteph
>>>> celine a écrit :
>>>>> Merci pour la réponse.
>>>>> Je voulais passer par une macro car j'ai douze fichiers, et 10 onglets par
>>>>> fichier; et 4 plages différentes par onglets.
>>>>> En plus, cela me permettait d'avoir les informations mis à jours à chaque
>>>>> fois que j'executais la macro.
>>>>> Merci d'avance
>>>>> céline
>>>>> "lSteph" a écrit :
>>>>>> Sans macro, dans la plage receptrice:
>>>>>> ='C:direction[monfichier.xls]Feuil1'!C5:J24
>>>>>> Ctrl+maj+Entrée
>>>>>> si tu veux supprimer la liaison Copier Coller Spécial valeurs
>>>>>> --
>>>>>> lSteph
>>>>>> On 25 sep, 11:42, celine wrote:
>>>>>>> Bonjour,
>>>>>>> je voudrais recupérer dans un fichier des données provenant d'un autre
>>>>>>> fichier.
>>>>>>> Par exemple, je recupère dans un fichier les données dans les cellules C5 à
>>>>>>> J24 et R5 à Y24, pour certains onglets. je recupère les donnes en faisant des
>>>>>>> "copier coller"
>>>>>>> je ne suis pas une experte en macro et j'avais trouvé cette macro sur le web
>>>>>>> que j'avais adapté à mon besoin.
>>>>>>> Merci d'avance
>>>>>>> Céline
>>>>>>> "lSteph" a écrit :
>>>>>>>> Bonjour,
>>>>>>>> A quoi te sert de boucler sur 1 fichier.
>>>>>>>> Ce genre de code vise une boucle sur tous les fichiers d'un répertoire
>>>>>>>> le principe étant
>>>>>>>> f=dir("*.xls") et non fichier.xls ou pire fichier.xl* ce qui sous
>>>>>>>> entendrait de boucler sur les fichiers nommés fichier et d'extension
>>>>>>>> pouvant être xl..s ou autre , c'est étrange!
>>>>>>>> Plus clairement dis-nous à quoi doit servir la macro et là on va
>>>>>>>> effectivement simplifier, mais en connaissance de ce que ce code
>>>>>>>> voudrait faire.
>>>>>>>> --
>>>>>>>> lSteph
>>>>>>>> On 25 sep, 09:24, celine wrote:
>>>>>>>>> Bonjour,
>>>>>>>>> Est-il possible de réduire cette macro afin de ne pas fermer et ouvrir tout
>>>>>>>>> le temps le fichier dans lequel je recupere des donnees ?
>>>>>>>>> Macro:
>>>>>>>>> Application.ScreenUpdating = False
>>>>>>>>> Set FichierTravail = ActiveWorkbook
>>>>>>>>> Dim Fich As String, Ligne As Long
>>>>>>>>> Const Chemin = "direction:"
>>>>>>>>> Ligne = 6
>>>>>>>>> 'jours
>>>>>>>>> Fich = Dir("direction:fichier.xl*")
>>>>>>>>> Do While Fich <> ""
>>>>>>>>> Workbooks.Open Filename:=Chemin & Fich
>>>>>>>>> Sheets("onglet 1").Select
>>>>>>>>> Sheets("onglet 1").Range("C5:J24").Copy
>>>>>>>>> ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
>>>>>>>>> Operation:=xlNone, SkipBlanks:= _
>>>>>>>>> False, Transpose:úlse
>>>>>>>>> Ligne = Ligne + 20
>>>>>>>>> Application.CutCopyMode = False
>>>>>>>>> Workbooks(Fich).Close False
>>>>>>>>> Fich = Dir
>>>>>>>>> Loop
>>>>>>>>> Fich = Dir("direction:fichier.xl*")
>>>>>>>>> Do While Fich <> ""
>>>>>>>>> Workbooks.Open Filename:=Chemin & Fich
>>>>>>>>> Sheets("onglet 1").Select
>>>>>>>>> Sheets("onglet 1").Range("R5:Y24").Copy
>>>>>>>>> ThisWorkbook.Sheets("xxx").Cells(Ligne, 1).PasteSpecial Paste:=xlValues,
>>>>>>>>> Operation:=xlNone, SkipBlanks:= _
>>>>>>>>> False, Transpose:úlse
>>>>>>>>> Ligne = Ligne + 20
>>>>>>>>> Application.CutCopyMode = False
>>>>>>>>> Workbooks(Fich).Close False
>>>>>>>>> Fich = Dir
>>>>>>>>> Loop
>>>>>>>>> Merci d'avance pour votre aide
>>>>>>>>> Céline
>>