Regrouper plusieurs macro en une seule

Bonjour à tous et toutes,

J'ai un petit problème (voir 2) sur mon fichier Excel. par contre mon fichier est trop lourd pour être envoyé

Le premier c'est que quand j'exécute mes macros séparément sur mes différents onglets (Module 1, 2 et 3), il me change l'intitulé de la colonne 1 de mon tableau : alors que je veux que ça reste "N° Immo"

Deuxième problème, plutôt interrogation, c'est comment on fait pour créer un bouton qui m'exécuterai en même temps ces 3 macros ?

j'ai actuellement créer un macro "Calcul_Exercice" qui appelle les 3 autres macros mais cela me modifie que la première case de mon tableau "récap" et ce n'est pas ce que je souhaite.

je sais qu'il existe 2 possibilités : regroupé les 3 macro en une seule ou créer un bouton qui appelle les 3 mais je ne sais pas faire ni l'une ni l'autre.

pouvez-vous m'aider ?

Voici mes macro :

Sub Calcul_Exercice()

Call MAJ_Immos_Dotations
Call MAJ_Immos_Dérogatoires
Call MAJ_Immos_Réintégration_Fiscale

MsgBox "Calculs terminés" 'mettre un message à la fin de la macro
End Sub

Sub MAJ_Immos_Dotations() 'personnalisation du nom de la macro

Feuil3.Range("A7:A500").ClearContents

Dim i&, ln&
For i = 2 To Feuil1.Range("A2").End(xlDown).Row 'définie la première ligne à soumettre au filtre
On Error Resume Next
If Feuil1.Range("B" & i) <= Feuil3.Range("F4") And Feuil1.Range("L" & i) >= Feuil3.Range("F2") Then 'définie le filtre à appliquer
If Err.Number = 0 Then 'ne pas prendre en compte les lignes qui ne correspondent pas au critère
ln = 7 'définie la première ligne cible
Do While Feuil3.Range("A" & ln) <> ""
ln = ln + 1
Loop
Range("A" & ln) = Feuil1.Range("A" & i)
End If
End If
Next i 'passe à la ligne suivante

End Sub

Sub MAJ_Immos_Dérogatoires() 'personnalisation du nom de la macro

Feuil4.Range("A7:A500").ClearContents

Dim i&, ln&
For i = 2 To Feuil1.Range("A2").End(xlDown).Row 'définie la première ligne à soumettre au filtre
On Error Resume Next
If Feuil1.Range("B" & i) <= Feuil4.Range("F4") And Feuil1.Range("L" & i) >= Feuil4.Range("F2") And Feuil1.Range("M" & i) = "AD" Then 'définie le filtre à appliquer
If Err.Number = 0 Then 'ne pas prendre en compte les lignes qui ne correspondent pas au critère
ln = 7 'définie la première ligne cible
Do While Feuil4.Range("A" & ln) <> ""
ln = ln + 1
Loop
Range("A" & ln) = Feuil1.Range("A" & i)
End If
End If
Next i 'passe à la ligne suivante

End Sub

Sub MAJ_Immos_Réintégration_Fiscale() 'personnalisation du nom de la macro

Feuil5.Range("A7:A500").ClearContents

Dim i&, ln&
For i = 2 To Feuil1.Range("A2").End(xlDown).Row 'définie la première ligne à soumettre au filtre
On Error Resume Next
If Feuil1.Range("B" & i) <= Feuil5.Range("F4") And Feuil1.Range("L" & i) >= Feuil5.Range("F2") And Feuil1.Range("M" & i) = "AVTS" Then 'définie le filtre à appliquer
If Err.Number = 0 Then 'ne pas prendre en compte les lignes qui ne correspondent pas au critère
ln = 7 'définie la première ligne cible
Do While Feuil5.Range("A" & ln) <> ""
ln = ln + 1
Loop
Range("A" & ln) = Feuil1.Range("A" & i)
End If
End If
Next i 'passe à la ligne suivante

End Sub

Voici mes tableaux:

Onglet Liste immo

image

Onglet récap

image

Onglet Dotations_Comptable

image

onglet Amort dérogatoire

image

onglet Réintégration fiscale

image

Bonjour, je ne comprends pas la question regrouper 3 macros ??? c'est juste ce que fait votre macro :

Elle appel les trois macro non ? donc il suffit de créer un bouton sur lequel et vous affectez la macro

Calcul_Exercice
Sub Calcul_Exercice()

Call MAJ_Immos_Dotations
Call MAJ_Immos_Dérogatoires
Call MAJ_Immos_Réintégration_Fiscale

MsgBox "Calculs terminés" 'mettre un message à la fin de la macro
End Sub

Pour la modif de la cellule A1 de l'onglet "Onglet Liste immo" a première vu je ne vois ... il faudrait lancer la macro en mode pas à pas pour voir à quelle moment la cellule est modifiée.

Les macros que je vous ai copiées sont 3 modules bien distincts.

j'ai essayé d'appeler les 3 macro avec CALL mais cela ne fonction pas.

Comment fait-on pour effectuer une macro pas à pas ?

Bonjour Mayolis, Salut Xmenpl,

@Mayolis : Plutôt que de créer un nouveau sujet comme ça, ça aurait été sympa de me répondre sur l'ancien, au moins pour m'informer de la création du nouveau.

Le fait que les macros soient sur 3 modules différents ne changent rien, à moins qu'ils soient sur des modules d'objets (de feuilles en l'occurrence). Réessayez en collant les macros dans des modules normaux (Menu de l'éditeur/Insertion/Module).

Pour le pas à pas, il faut se placer sur le code à exécuter et utiliser la touche F8. Il est également possible de marquer des points d'arrêt et d'exécuter un partie normalement et la partie qui nous intéresse seulement au pas à pas. Le point d'arrêt est ajouté lorsqu'on clique sur la marge de la fenêtre du code.

Cdlt,

Bonjour,

merci d'avoir pris le temps de me répondre et désolé pour le changement de conversation, l'ordinateur a beugué au moment de la création du sujet et je n'avais pas fait attention qu'il y en avait 2.

mes modules sont créer de la manière la plus basique (je ne savais pas qu'il y avait d'autres méthodes à dire vrai). j'ai commencer à élaborer des macros il y a peine de mois donc c'est encore assez nouveau pour moi.

je n'ai pas accès au fichier ce week-end mais j'essaierai votre méthode dès lundi. je reviendrais vers vous pour voir si cela a fonctionné. j'essayai de trouver une solution pour joindre le fichier parce que c'est quand même plus simple pour se faire comprendre et pour vous qui répondez d'analyser mes interrogations.

Bonjour,

Par défaut, il n'y a que les modules des objets déjà présents dans le classeur (worksheets et thisworkbook). Lorsqu'on insère un userform, un nouveau module est créé et lui ai dédié.

Pour tout le code générique, qui n'a pas vocation à porter exclusivement sur un objet (et de façon générale), il faut insérer des modules (Insertion/Module depuis le menu contextuel de l'éditeur) qui sont dits "standard".

Ainsi, l'utilisateur a le contrôle sur la portée du code, contrairement aux codes placés dans un module d'objet, dont la portée est limitée à ce seul objet.

Si vous suivez le mode opératoire que j'ai décrit précédemment et êtes attentif, vous n'aurez pas à partager les fichiers normalement. Sinon, veillez bien à les rendre anonymes...

Cdlt,

Bonjour,

j'ai réglé mes soucis.

Le module CALL fonctionne très bien, j'ai corriger le problème qui modifié ma feuille récap, c'est uniquement parce que je n'indiqué pas la feuille cible sur cette ligne là :

Loop
Range("A" & ln) = Feuil1.Range("A" & i)

merci pour vos retour et votre aide.

Bonjour,

Super ! Et merci pour ce retour !

Bonne continuation,

Rechercher des sujets similaires à "regrouper macro seule"