Lancer une macro sous condition

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
RESOLU Lancer une macro sous condition

Bonsoir à tous,

encore un problème VBA que je ne sais pas résoudre !

dans mon classeur, j'ai douze macros presque identiques.
La seule chose qui change sont les cellules de destinations en fonction des mois traités.

J'aimerai la macro me fasse ce qui suit :

si mois 01, copie les colonnes A et B dans la feuille "synthèse" colonnes A et B
si mois 02, copie les colonnes A et B dans la feuille "synthèse" colonnes c et D
et ainsi de suite jusqu'à 12.

Mes 12 macros sont longues car il y a bcp de trucs dedans et réduire à une seule macro serait vraiment bien.

Un grand merci pour votre aide,
Amicalement,
Lionel,
 
Dernière édition:
Re : copier des cellules sous condition

Bonsoir JM,
Bien sur que tout ce que vous avez fait a été d'une grande utilité pour moi. Cela m'a fait avancer aussi sur VBA bien sur, car après les premiers attouchements avec VBA, je m'y intéresse encore plus et je fais des recherches.
Ce que vous m'avez transmis fonctionne bien et je m'en sers pour mon fichier concerné.
Cependant, ce nouveau fichier auquel j'ai donné le même nom à mes macros "mensuelles" est plus gros et les macros bien plus longues.
Alors, je souhaitais chercher un moyen pour réduire les codes.
Si je vous ai blessé ou donné l'impression que votre temps et votre patience n'ont servi à rien, j'en suis vraiment désolé mais ce n'est pas le cas.
Je pensais que ma "nouvelle" question était "un nouveau sujet" et c'est pour cela que j'ai créé une nouvelle discussion.
Pour moi, la discussion que nous avons eu a été très fructueuse et utile, le résultat est en application et j'ai avancé grace à vous.

Encore une fois, je vous en remercie vivement.
Amicalement,
Lionel,
 
Re : copier des cellules sous condition

Bonjour à tous,
En fait, j'aimerai que cette macro fasse ce qui suit (en langage profane)

=SI(MOIS(A4)=1)....... call macro 1
=SI(MOIS(A4)=2)....... call macro 2 etc. jusqu'à 12
Merci pour votre aide,
Amicalement,
Lionel,
 
Dernière édition:
Re : Lancer une macro sous condition

Re


Histoire de pas trop te laisser dans la panade
Testes l'exemple ci-dessous
Code:
Public i As Long
Sub PROC_MENS()
Dim Test_DATE
Test_DATE = InputBox("Saisir une date de l'année en cours", "TEST", DateValue("01/01/2011"))
Feuil1.[A4] = Test_DATE
Select Case Month(Feuil1.[A4])
Case 1
i = 1
Run "Macro1"
Case 2 To 12
For i = 2 To 12
Run "Macro" & i
Next i
End Select
End Sub
Code:
Sub macro1()
MsgBox MonthName(i) & " " & Year(Now)
End Sub

ATTENTION il faut que tu copies la macro1 11 fois pour avoir douze macros
nommées ainsi : macro1, macro2,..., macro12

Ensuite pour tester tu lances la macro : PROC_MENS
Si tu laisses le choix par défaut : 01/01/2011
Seul la macro1 sera lancé
Si tu saisis une date : exemple : 05/05/2011
Les macros 2 à 12 seront lancées.

Fais moi savoir si tu as pu faire le test et si tu as des questions.
 
Re : Lancer une macro sous condition

RE,

J'ai essayé ton code mais ça "beug" par moment.

Cependant, je ne veux pas te faire perdre du temps sur cela car ce que tu m'avais donné fonctionne parfaitement, c'était le code suivant :

Sub LancerMOISCOURANT()
Dim MC As Long
MC = Month(Sheets("Procèdure").[J4])
Application.Run "Synthese" & Format(MC, "00")
ActiveWorkbook.Save
End Sub/QUOTE]

En fait, je me suis mal expliqué. C’est pour un nouveau classeur plus important et ce que je souhaite c’est alléger les macros et ne pas faire comme le classeur précédent.

Ce que je veux faire est similaire mais en une seule macro au lieu de douze.

Je veux lui dire que :
si mois(A4)= 1, copies les colonnes de la feuille « matrice » M :N
vers la feuille « synthèse » colonnes C 😀

si mois(A4)= 2, copies les colonnes de la feuille « matrice » M :N
vers la feuille « synthèse » colonnes E :F
etc. jusqu’à 12

Si c'est possible, je crois qu'après ça, Ouffff, ce sera tout bon grâce à toi.
Lionel,
 
Re : Lancer une macro sous condition

Bonjour le Fil
Voici une petite marche à suivre pour ne réaliser qu'une macro, mais sans exemple je ne peux dévelloper plus.

Run MaMacro mois(A4) 'attention, ici aucun signe ni parenthese

Sub MaMacro(LeMois) 'LeMois prendra la valeur du i de l'appel de MaMacro
Dim MyMonth
MyMonth = Array("C😀", "E:F", etc)
ici ta procédure de collage sur Row(MyMonth(LeMois)

Bon courage et à +
Denis
 
Re : Lancer une macro sous condition

Bonsoir Staple,
Désolé, je ne suis pas remonté aussi loin et en plus sur plusieurs post !
Si je comprend tout, plus le problème avance et plus la première solution se confirme comme étant la bonne !
Bonne soirée
Cordialement
Denis
 
Re : Lancer une macro sous condition

Re


Je mets une version plus aboutie (avec les commentaires)
VB:
Sub testII()
'Déclarations
Dim a As Worksheet, b As Worksheet, QuelMois, x&
'Instanciation des feuilles
Set a = Sheets("Feuil1"): Set b = Sheets("Feuil2")
'On détermine le mois en  B13
QuelMois = Month(a.[B13])
a.[C13:Y13].Name = "MesColonnes" 'On crée un plage nommée
'On cherche le mois dans la zone nommée MesColonnes
x = Application.Match(QuelMois, [MesColonnes], 0)
'On trouve la plage à copier
Set plg = a.[B13].Offset(, x).Resize(6)
'On la copie sur la Feuil2
plg.Copy b.[B13].Offset(, x)
Set plg = Nothing
End Sub
 
Re : Lancer une macro sous condition

merci JM, vos deux macros fonctionnent super bien mais elles me posent un problème.
Je n'y comprends rien car je ne vois pas se qui se passe et, les macros que j'ai a intégrer dans vos codes comportent des exécutions de copiages de formats, de couleurs etc. bref, je ne saurai jamais intégrer mes codes dans les vôtres.
Amicalement,
lionel,
 
Re : Lancer une macro sous condition

Oui Jm, ça marche super bien (les deux) mais mes macros pour lesquelles je voudrais appliquer vos codes contiennent plus de "choses" à faire : des formatages, d'autres copies de colonnes sur d'autres feuilles etc.
Jamais je ne serai capable d'intégrer mes codes dans vos codes car je ne vois rien défiler en faisant l'exécution "pas à pas".
Lionel,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
677
Réponses
9
Affichages
883
Retour