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

Activer une macro dans tous les classeurs

6 réponses
Avatar
magic-dd
Bonjour

sur un serveur, j'ai une dizaine de dossiers avec un fichier par
dossier

est il possible de declencher la meme macro qui se trouve dans chaque
fichier et d'en imprimer les =E9l=E9ments qui sont sur une feuille.

chaque feuille =E0 imprimer =E0 le meme nom

en gros, activer la macro du classeur 1 dans dossier 1 .....jusqu'au
10

puis imprimer la feuille recap du classeur 1 du dossier 1 ... jusqu'au
10

merci de m'=E9clairer

6 réponses

Avatar
DanielCo
Bonjour,
Est-ce que les dossiers concernés sont les seuls dossiers du répertoire
père ? sinon, il faut le nom des dossiers.
Cordialement.
Daniel


Bonjour

sur un serveur, j'ai une dizaine de dossiers avec un fichier par
dossier

est il possible de declencher la meme macro qui se trouve dans chaque
fichier et d'en imprimer les éléments qui sont sur une feuille.

chaque feuille à imprimer à le meme nom

en gros, activer la macro du classeur 1 dans dossier 1 .....jusqu'au
10

puis imprimer la feuille recap du classeur 1 du dossier 1 ... jusqu'au
10

merci de m'éclairer
Avatar
DanielCo
A tout hasard, essaie :

Sub test()
Dim inCalculationMode As Integer
Application.ScreenUpdating = False
inCalculationMode = Application.Calculation
Application.Calculation = xlCalculationManual
Dim Fich As String, Doss As Object, Parent As String
Dim FSO As Object, F As Object
Parent = "c:temp" 'à modifier
Set FSO = CreateObject("scripting.FileSystemObject")
For Each Doss In FSO.getfolder(Parent).subfolders
For Each F In Doss.Files
Fich = F.Path
If Fich <> "" Then
If LCase(Mid(Fich, InStrRev(Fich, ".") + 1, 3)) = "xls"
Then
Workbooks.Open Fich
Sheets("recap").PrintOut
ActiveWorkbook.Close False
Exit For
End If
End If
Next
Next Doss
Application.Calculation = inCalculationMode
Application.ScreenUpdating = True
End Sub

Daniel


Bonjour

sur un serveur, j'ai une dizaine de dossiers avec un fichier par
dossier

est il possible de declencher la meme macro qui se trouve dans chaque
fichier et d'en imprimer les éléments qui sont sur une feuille.

chaque feuille à imprimer à le meme nom

en gros, activer la macro du classeur 1 dans dossier 1 .....jusqu'au
10

puis imprimer la feuille recap du classeur 1 du dossier 1 ... jusqu'au
10

merci de m'éclairer
Avatar
magic-dd
On 29 avr, 10:49, DanielCo wrote:
A tout hasard, essaie :

Sub test()
Dim inCalculationMode As Integer
Application.ScreenUpdating = False
inCalculationMode = Application.Calculation
Application.Calculation = xlCalculationManual
Dim Fich As String, Doss As Object, Parent As String
Dim FSO As Object, F As Object
Parent = "c:temp" 'à modifier
Set FSO = CreateObject("scripting.FileSystemObject")
For Each Doss In FSO.getfolder(Parent).subfolders
    For Each F In Doss.Files
        Fich = F.Path
        If Fich <> "" Then
            If LCase(Mid(Fich, InStrRev(Fich, ".") + 1, 3)) = "xls"
Then
                Workbooks.Open Fich
                Sheets("recap").PrintOut
                ActiveWorkbook.Close False
                Exit For
            End If
        End If
    Next
Next Doss
Application.Calculation = inCalculationMode
Application.ScreenUpdating = True
End Sub

Daniel



> Bonjour

> sur un serveur, j'ai une dizaine de dossiers avec un fichier par
> dossier

> est il possible de declencher la meme macro qui se trouve dans chaque
> fichier et d'en imprimer les éléments qui sont sur une feuille.

> chaque feuille à imprimer à le meme nom

> en gros, activer la macro du classeur 1 dans dossier 1 .....jusqu'au
> 10

> puis imprimer la feuille recap du classeur 1 du dossier 1 ... jusqu'au
> 10

> merci de m'éclairer



Waououh quel code !!

En effet le dossier parent ne comporte que les fichiers en question.

Je teste lundi et te tiens au courant.

Bravo et encore merci
Avatar
magic loic
On 29 avr, 16:07, magic-dd wrote:
On 29 avr, 10:49, DanielCo wrote:





> A tout hasard, essaie :

> Sub test()
> Dim inCalculationMode As Integer
> Application.ScreenUpdating = False
> inCalculationMode = Application.Calculation
> Application.Calculation = xlCalculationManual
> Dim Fich As String, Doss As Object, Parent As String
> Dim FSO As Object, F As Object
> Parent = "c:temp" 'à modifier
> Set FSO = CreateObject("scripting.FileSystemObject")
> For Each Doss In FSO.getfolder(Parent).subfolders
>     For Each F In Doss.Files
>         Fich = F.Path
>         If Fich <> "" Then
>             If LCase(Mid(Fich, InStrRev(Fich, ".") + 1, 3)) = "xls"
> Then
>                 Workbooks.Open Fich
>                 Sheets("recap").PrintOut
>                 ActiveWorkbook.Close False
>                 Exit For
>             End If
>         End If
>     Next
> Next Doss
> Application.Calculation = inCalculationMode
> Application.ScreenUpdating = True
> End Sub

> Daniel

> > Bonjour

> > sur un serveur, j'ai une dizaine de dossiers avec un fichier par
> > dossier

> > est il possible de declencher la meme macro qui se trouve dans chaque
> > fichier et d'en imprimer les éléments qui sont sur une feuille.

> > chaque feuille à imprimer à le meme nom

> > en gros, activer la macro du classeur 1 dans dossier 1 .....jusqu'au
> > 10

> > puis imprimer la feuille recap du classeur 1 du dossier 1 ... jusqu'a u
> > 10

> > merci de m'éclairer

Waououh quel code !!

En effet le dossier parent ne comporte que les fichiers en question.

Je teste lundi et te tiens au courant.

Bravo et encore merci



rebonjour

alors j'ai bien essayé et ca marche parfaitement

maintenant est il possible que la macro qui s'appelle tri dans chaque
classeur puisse se declencher

entre
Workbooks.Open Fich

boite de dialogue demandant un chiffre entre 1 et 8

Feuil4.range("B14").value = resultat de la boite de dialogue
activation de la macro appelé tri (peut etre que le probleme est que
ma macro possede un nom de feuille different car chaque fichier à un
nom différent, il faut peut etre faire un activesheet......plutot
qu'un sheets("NomdeMaFeuille")
et enfin reprendre le code que tu m'a donné précédemment

Sheets("recap").PrintOut


merci encore
Avatar
DanielCo
Bonjour,
Non testé :

Sub test()
Dim inCalculationMode As Integer
Application.ScreenUpdating = False
inCalculationMode = Application.Calculation
Application.Calculation = xlCalculationManual
Dim Fich As String, Doss As Object, Parent As String
Dim FSO As Object, F As Object
Parent = "d:donneesdaniel"
Set FSO = CreateObject("scripting.FileSystemObject")
For Each Doss In FSO.getfolder(Parent).subfolders
For Each F In Doss.Files
Fich = F.Path
If Fich <> "" Then
If LCase(Mid(Fich, InStrRev(Fich, ".") + 1, 3)) = "xls"
Then
Workbooks.Open Fich
Do
Var = InputBox("Entrez un chiffre entre 1 et 8")
If IsNumeric(Var) Then
Var = CInt(Var)
If Var > 0 And Var < 9 Then
Feuil4.Range("B14").Value = Var
Application.Run F.Name & "!tri"
Exit Do
End If
End If
MsgBox "valeur incorrecte"
Loop
Sheets("recap").PrintOut
ActiveWorkbook.Close False
Exit For
End If
End If
Next
Next Doss
Application.Calculation = inCalculationMode
Application.ScreenUpdating = True
End Sub

Daniel


On 29 avr, 16:07, magic-dd wrote:
On 29 avr, 10:49, DanielCo wrote:





A tout hasard, essaie :



Sub test()
Dim inCalculationMode As Integer
Application.ScreenUpdating = False
inCalculationMode = Application.Calculation
Application.Calculation = xlCalculationManual
Dim Fich As String, Doss As Object, Parent As String
Dim FSO As Object, F As Object
Parent = "c:temp" 'à modifier
Set FSO = CreateObject("scripting.FileSystemObject")
For Each Doss In FSO.getfolder(Parent).subfolders
    For Each F In Doss.Files
        Fich = F.Path
        If Fich <> "" Then
            If LCase(Mid(Fich, InStrRev(Fich, ".") + 1, 3)) = "xls"
Then
                Workbooks.Open Fich
                Sheets("recap").PrintOut
                ActiveWorkbook.Close False
                Exit For
            End If
        End If
    Next
Next Doss
Application.Calculation = inCalculationMode
Application.ScreenUpdating = True
End Sub



Daniel



Bonjour





sur un serveur, j'ai une dizaine de dossiers avec un fichier par
dossier





est il possible de declencher la meme macro qui se trouve dans chaque
fichier et d'en imprimer les éléments qui sont sur une feuille.
chaque feuille à imprimer à le meme nom
en gros, activer la macro du classeur 1 dans dossier 1 .....jusqu'au
10





puis imprimer la feuille recap du classeur 1 du dossier 1 ... jusqu'au
10





merci de m'éclairer





Waououh quel code !!

En effet le dossier parent ne comporte que les fichiers en question.

Je teste lundi et te tiens au courant.

Bravo et encore merci



rebonjour

alors j'ai bien essayé et ca marche parfaitement

maintenant est il possible que la macro qui s'appelle tri dans chaque
classeur puisse se declencher

entre
Workbooks.Open Fich

boite de dialogue demandant un chiffre entre 1 et 8

Feuil4.range("B14").value = resultat de la boite de dialogue
activation de la macro appelé tri (peut etre que le probleme est que
ma macro possede un nom de feuille different car chaque fichier à un
nom différent, il faut peut etre faire un activesheet......plutot
qu'un sheets("NomdeMaFeuille")
et enfin reprendre le code que tu m'a donné précédemment

Sheets("recap").PrintOut


merci encore
Avatar
magic-dd
On 4 mai, 10:49, DanielCo wrote:
Bonjour,
Non testé :

Sub test()
Dim inCalculationMode As Integer
Application.ScreenUpdating = False
inCalculationMode = Application.Calculation
Application.Calculation = xlCalculationManual
Dim Fich As String, Doss As Object, Parent As String
Dim FSO As Object, F As Object
Parent = "d:donneesdaniel"
Set FSO = CreateObject("scripting.FileSystemObject")
For Each Doss In FSO.getfolder(Parent).subfolders
    For Each F In Doss.Files
        Fich = F.Path
        If Fich <> "" Then
            If LCase(Mid(Fich, InStrRev(Fich, ".") + 1, 3)) = "xls"
Then
                Workbooks.Open Fich
                Do
                    Var = InputBox("Entrez un chiff re entre 1 et 8")
                    If IsNumeric(Var) Then
                        Var = CInt(Var)
                        If Var > 0 And Var < 9 Th en
                            Feuil4.Range("B14 ").Value = Var
                            Application.Run F .Name & "!tri"
                            Exit Do
                        End If
                    End If
                    MsgBox "valeur incorrecte"
                Loop
                Sheets("recap").PrintOut
                ActiveWorkbook.Close False
                Exit For
            End If
        End If
    Next
Next Doss
Application.Calculation = inCalculationMode
Application.ScreenUpdating = True
End Sub

Daniel



> On 29 avr, 16:07, magic-dd wrote:
>> On 29 avr, 10:49, DanielCo wrote:

>>> A tout hasard, essaie :

>>> Sub test()
>>> Dim inCalculationMode As Integer
>>> Application.ScreenUpdating = False
>>> inCalculationMode = Application.Calculation
>>> Application.Calculation = xlCalculationManual
>>> Dim Fich As String, Doss As Object, Parent As String
>>> Dim FSO As Object, F As Object
>>> Parent = "c:temp" 'à modifier
>>> Set FSO = CreateObject("scripting.FileSystemObject")
>>> For Each Doss In FSO.getfolder(Parent).subfolders
>>>     For Each F In Doss.Files
>>>         Fich = F.Path
>>>         If Fich <> "" Then
>>>             If LCase(Mid(Fich, InStrRev(Fich, ".") + 1, 3 )) = "xls"
>>> Then
>>>                 Workbooks.Open Fich
>>>                 Sheets("recap").PrintOut
>>>                 ActiveWorkbook.Close False
>>>                 Exit For
>>>             End If
>>>         End If
>>>     Next
>>> Next Doss
>>> Application.Calculation = inCalculationMode
>>> Application.ScreenUpdating = True
>>> End Sub

>>> Daniel

>>>> Bonjour

>>>> sur un serveur, j'ai une dizaine de dossiers avec un fichier par
>>>> dossier

>>>> est il possible de declencher la meme macro qui se trouve dans chaqu e
>>>> fichier et d'en imprimer les éléments qui sont sur une feuille.
>>>> chaque feuille à imprimer à le meme nom
>>>> en gros, activer la macro du classeur 1 dans dossier 1 .....jusqu'au
>>>> 10

>>>> puis imprimer la feuille recap du classeur 1 du dossier 1 ... jusqu' au
>>>> 10

>>>> merci de m'éclairer

>> Waououh quel code !!

>> En effet le dossier parent ne comporte que les fichiers en question.

>> Je teste lundi et te tiens au courant.

>> Bravo et encore merci

> rebonjour

> alors j'ai bien essayé et ca marche parfaitement

> maintenant est il possible que la macro qui s'appelle tri  dans chaqu e
> classeur puisse se declencher

> entre
> Workbooks.Open Fich

> boite de dialogue demandant un chiffre entre 1 et 8

> Feuil4.range("B14").value = resultat de la boite de dialogue
> activation de la macro appelé tri (peut etre que le probleme est que
> ma macro possede un nom de feuille different car chaque fichier à un
> nom différent, il faut peut etre faire un activesheet......plutot
> qu'un sheets("NomdeMaFeuille")
> et enfin reprendre le code que tu m'a donné précédemment

>  Sheets("recap").PrintOut

> merci encore



bonsoir daniel

désolé pour ma réponse tardive mais j'ai eu un petit souci avec le
groupe

je teste ta routine demain au bureau

et franchement j'aimerais avoir ne serait ce que le dixieme de tes
compétences en VBA.

merci beaucoup