Macro pour exécuter une macro dans un classeur en boucle

Y compris Power BI, Power Query et toute autre question en lien avec Excel
l
liod
Membre habitué
Membre habitué
Messages : 98
Inscrit le : 3 avril 2013
Version d'Excel : 2007

Message par liod » 18 janvier 2018, 11:37

Bonjour à tous !

Mes connaissances assez primaires en terme de macro excel me bloque en ce moment. J'ai un tableau que j'avais fait à l'époque qui me permet de faire la compta de plusieurs personnes d'une manière annuelle.

J'avais ajouter une macro pour permettre d’enregistrer sous ce tableau individualisé pour le mettre dans le dossier de l'année suivante...

Ma question est-ce que je peux faire une macro pour exécuter la macro Sub Sauvegarde() (ci-dessous) pour enregistrer tous mes dossiers vers un autre dossier spécifique ?
Sub Sauvegarde()
'
' Sauvegarde Macro
'

'
    If MsgBox("Assurez-vous d'avoir bien enregistré l'année comptabilisé ! Etes-vous certain de vouloir enregistrer la comptabilité l'année suivante?", vbYesNo, "Demande de confirmation") = vbYes Then
    Range("AR6:AR19").Select
    Selection.Copy
    ActiveWindow.SmallScroll Down:=-18
    Range("AQ6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A8:A" & Range("A65536").End(xlUp).Row).ClearContents
    Range("B8:B" & Range("B65536").End(xlUp).Row).ClearContents
    Range("D8:D" & Range("D65536").End(xlUp).Row).ClearContents
    Range("F8:S" & Range("E65536").End(xlUp).Row).ClearContents
    Range("A7").Select
    ActiveCell.FormulaR1C1 = "=DATE(YEAR(R[-1]C)+1,MONTH(R[-1]C),DAY(R[-1]C))"
    Range("A7").Select
    Selection.Copy
    Range("A6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A7").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Application.Dialogs(xlDialogSaveAs).Show
    End If
    End Sub
COMPTOLIVIER.xls
(665 Kio) Téléchargé 11 fois
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'075
Appréciations reçues : 832
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 18 janvier 2018, 11:44

Bonjour,

tu trouveras un exemple ci-joint
Dim frequence
Sub Actualiser()
' Définit l'intervalle avec l'heure actuelle
    frequence = TimeSerial(Hour(Time), Minute(Time) + 1, Second(Time))
    ' Appel récursif
    Application.OnTime frequence, "Actualiser"
    Call Mamacro
End Sub
Sub auto_open()
    Actualiser
End Sub
Sub auto_close()
    On Error Resume Next
    Application.OnTime frequence, Procedure:="Actualiser", Schedule:=False
End Sub
Sub Mamacro()
    MsgBox "Bonjour !"
End Sub
lancement macro intervalles réguliers.xlsm
(14.84 Kio) Téléchargé 27 fois

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
l
liod
Membre habitué
Membre habitué
Messages : 98
Inscrit le : 3 avril 2013
Version d'Excel : 2007

Message par liod » 18 janvier 2018, 14:08

Steelson a écrit :
18 janvier 2018, 11:44
Bonjour,

tu trouveras un exemple ci-joint
Dim frequence
Sub Actualiser()
' Définit l'intervalle avec l'heure actuelle
    frequence = TimeSerial(Hour(Time), Minute(Time) + 1, Second(Time))
    ' Appel récursif
    Application.OnTime frequence, "Actualiser"
    Call Mamacro
End Sub
Sub auto_open()
    Actualiser
End Sub
Sub auto_close()
    On Error Resume Next
    Application.OnTime frequence, Procedure:="Actualiser", Schedule:=False
End Sub
Sub Mamacro()
    MsgBox "Bonjour !"
End Sub
Merci beaucoup pour cette macro qui donne pas mal d'indication sur la méthode d'appel d'une macro vers une autre. Cependant j'ai vraiment aucune idée de comment mettre en place ce style de macro sur mes fichiers. Mais surtout d'indiquer à la macro qu'il faut prendre tous les dossiers d'un dossier en particulier pour les mettre dans un dossier de destination.
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'075
Appréciations reçues : 832
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 18 janvier 2018, 14:53

Désolé, je suis hors sujet, j'ai juste répondu au titre que je pensais suffisamment explicite !

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'075
Appréciations reçues : 832
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 18 janvier 2018, 15:10

Les macros de ton fichier ne sont pas accessibles.

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
l
liod
Membre habitué
Membre habitué
Messages : 98
Inscrit le : 3 avril 2013
Version d'Excel : 2007

Message par liod » 18 janvier 2018, 16:05

Steelson a écrit :
18 janvier 2018, 15:10
Les macros de ton fichier ne sont pas accessibles.
Oui c'est sur elles ne sont pas accessibles verrouillé par un mot de passe.... mais la macro que je souhaiterais exécuter en boucle pour basculer tous mes dossiers vers un autre dossier est ce code :
 Dim frequence
Sub Actualiser()
' Définit l'intervalle avec l'heure actuelle
    frequence = TimeSerial(Hour(Time), Minute(Time) + 1, Second(Time))
    ' Appel récursif
    Application.OnTime frequence, "Actualiser"
    Call Mamacro
End Sub
Sub auto_open()
    Actualiser
End Sub
Sub auto_close()
    On Error Resume Next
    Application.OnTime frequence, Procedure:="Actualiser", Schedule:=False
End Sub
Sub Mamacro()
    MsgBox "Bonjour !"
End Sub
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'075
Appréciations reçues : 832
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 18 janvier 2018, 16:39

je pense qu'il y a erreur de code ...

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
l
liod
Membre habitué
Membre habitué
Messages : 98
Inscrit le : 3 avril 2013
Version d'Excel : 2007

Message par liod » 19 janvier 2018, 12:07

Steelson a écrit :
18 janvier 2018, 16:39
je pense qu'il y a erreur de code ...
Ah oui pardon sorry
Sub Sauvegarde()
'
' Sauvegarde Macro
'

'
    If MsgBox("Assurez-vous d'avoir bien enregistré l'année comptabilisé ! Etes-vous certain de vouloir enregistrer la comptabilité l'année suivante?", vbYesNo, "Demande de confirmation") = vbYes Then
    Range("AR6:AR19").Select
    Selection.Copy
    ActiveWindow.SmallScroll Down:=-18
    Range("AQ6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A8:A" & Range("A65536").End(xlUp).Row).ClearContents
    Range("B8:B" & Range("B65536").End(xlUp).Row).ClearContents
    Range("D8:D" & Range("D65536").End(xlUp).Row).ClearContents
    Range("F8:S" & Range("E65536").End(xlUp).Row).ClearContents
    Range("A7").Select
    ActiveCell.FormulaR1C1 = "=DATE(YEAR(R[-1]C)+1,MONTH(R[-1]C),DAY(R[-1]C))"
    Range("A7").Select
    Selection.Copy
    Range("A6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A7").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Application.Dialogs(xlDialogSaveAs).Show
    End If
    End Sub
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'075
Appréciations reçues : 832
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 19 janvier 2018, 13:54

liod a écrit :
18 janvier 2018, 11:37
Ma question est-ce que je peux faire une macro pour exécuter la macro Sub Sauvegarde() (ci-dessous) pour enregistrer tous mes dossiers vers un autre dossier spécifique ?
Désolé, je ne comprends vraiment pas ce que tu souhaites.
Qu'est-ce que tu appelles tous mes dossiers ?

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
l
liod
Membre habitué
Membre habitué
Messages : 98
Inscrit le : 3 avril 2013
Version d'Excel : 2007

Message par liod » 22 janvier 2018, 11:23

Steelson a écrit :
19 janvier 2018, 13:54
liod a écrit :
18 janvier 2018, 11:37
Ma question est-ce que je peux faire une macro pour exécuter la macro Sub Sauvegarde() (ci-dessous) pour enregistrer tous mes dossiers vers un autre dossier spécifique ?
Désolé, je ne comprends vraiment pas ce que tu souhaites.
Qu'est-ce que tu appelles tous mes dossiers ?
Alors en faite je souhaiterai que tous mes classeurs présents dans un dossier bien précis s'enregistre sous un autre dossier après avoir exécuter les critères de la macro Sub Sauvegarde () ci-dessus.

Du coup, je pense qu'il faudrait faire une macro qui sélectionne tous les fichiers que je souhaite enregistrer dans un autre répertoire et juste changer le dernier code de la macro Sub Sauvegarde () :
Application.Dialogs(xlDialogSaveAs).Show 
par le repertoire où les dossiers iront les dossiers.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message