Exécuter une macro lorsque la première est finie

  • Initiateur de la discussion Initiateur de la discussion TOINE38
  • Date de début Date de début

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 !

TOINE38

XLDnaute Occasionnel
Bonjour a tous

Cela fait plusieurs jours que je bloque sur un problème de lancement de macro sans trouver de solution.
Dans un fichier j'exécute une macro qui vient m’insérer une ligne et recopier des données en fonction de la valeur de la ligne précédente sur une plage de colonne , ensuite je souhaite recopier des cellules sur l'autre plage de colonne.
Pour cela j'ai créer 2 macros mais le problème est que la deuxième macro s’exécute avant la fin de la première 🙁.
N'étant pas un expert en programmation vba, y aurait il une âme charitable pour m'aider ?
ci-après les codes de mes macros:

Sub Macro1()
Dim a As Long
Dim b As Long
b = Range("a65536").End(xlUp).Row

For a = [H65536].End(xlUp).Row To b Step -1
'For a = [d65536].End(xlUp).Row To 2 Step -1
If Cells(a, "Af") <> 0 And Cells(a, "Aj") = "" Then

Rows(a + 1).Insert Shift:=xlDown

Cells(a + 1, 36) = "LReglage" 'enregistre Reglage dans le champ
Cells(a + 1, 34) = Cells(a, 32) 'recopie temps de reglage
Cells(a + 1, 8) = Cells(a, 8) 'N° Transaction
Cells(a + 1, 9) = Cells(a, 9) 'Date validité
Cells(a + 1, 15) = Cells(a, 15) ' Centre de charge
Cells(a + 1, 18) = Cells(a, 18) 'Employé
Cells(a + 1, 19) = Cells(a, 19) 'Nom
Cells(a + 1, 20) = Cells(a, 20) 'Code Article)
Cells(a + 1, 21) = Cells(a, 21) 'ID

End If
If Cells(a, "Ah") <> 0 And Cells(a, "Aj") = "" Then
Cells(a, 36) = "LProd"

End If
Next a

Macro2
End Sub

-----------------------------------------------------------------------

Sub Macro2()
Dernligne = Range("i" & Rows.Count).End(xlUp).Row
Range("a2").AutoFill Destination:=Range("a2:a" & Dernligne)
Range("b2").AutoFill Destination:=Range("b2:b" & Dernligne)
Range("c2").AutoFill Destination:=Range("c2:c" & Dernligne)
Range("d2").AutoFill Destination:=Range("d2:d" & Dernligne)
Range("e2").AutoFill Destination:=Range("e2:e" & Dernligne)
Range("f2").AutoFill Destination:=Range("f2:f" & Dernligne)
Range("g2").AutoFill Destination:=Range("g2:g" & Dernligne)
Range("h2").AutoFill Destination:=Range("h2:h" & Dernligne)
Calculate
End Sub

Merci beaucoup pour votre coup de pouce

Cordialement

Toine38
 
Re : Exécuter une macro lorsque la première est finie

Bonjour Toine,

pourquoi 2 macros??. Modifie le nom de la feuille et fait un essai comme ceci:

Code:
Sub Macro1()
Dim a As Long, b As Long, Dernligne As Long

Application.ScreenUpdating = False

With Feuil1
b = .Range("a65536").End(xlUp).Row

For a = .[H65536].End(xlUp).Row To b Step -1
'For a = [d65536].End(xlUp).Row To 2 Step -1
If .Cells(a, "Af") <> 0 And .Cells(a, "Aj") = "" Then

Rows(a + 1).Insert Shift:=xlDown

.Cells(a + 1, 36) = "LReglage" 'enregistre Reglage dans le champ
.Cells(a + 1, 34) = .Cells(a, 32) 'recopie temps de reglage
.Cells(a + 1, 8) = .Cells(a, 8) 'N° Transaction
.Cells(a + 1, 9) = .Cells(a, 9) 'Date validité
.Cells(a + 1, 15) = .Cells(a, 15) ' Centre de charge
.Cells(a + 1, 18) = .Cells(a, 18) 'Employé
.Cells(a + 1, 19) = .Cells(a, 19) 'Nom
.Cells(a + 1, 20) = .Cells(a, 20) 'Code Article)
.Cells(a + 1, 21) = .Cells(a, 21) 'ID

End If
If .Cells(a, "Ah") <> 0 And .Cells(a, "Aj") = "" Then
.Cells(a, 36) = "LProd"

End If
Next a

Dernligne = .Range("i" & Rows.Count).End(xlUp).Row
.Range("a2").AutoFill Destination:=.Range("a2:a" & Dernligne)
.Range("b2").AutoFill Destination:=.Range("b2:b" & Dernligne)
.Range("c2").AutoFill Destination:=.Range("c2:c" & Dernligne)
.Range("d2").AutoFill Destination:=.Range("d2:d" & Dernligne)
.Range("e2").AutoFill Destination:=.Range("e2:e" & Dernligne)
.Range("f2").AutoFill Destination:=.Range("f2:f" & Dernligne)
.Range("g2").AutoFill Destination:=.Range("g2:g" & Dernligne)
.Range("h2").AutoFill Destination:=.Range("h2:h" & Dernligne)
'Calculate
End With
End Sub
 
Dernière édition:
Re : Exécuter une macro lorsque la première est finie

Bonjour Lone-Wolf

Pourquoi 2 macros ? je pense que c'est une mauvaise habitude que j'ai du prendre ( quand on est novice comme moi)

J'ai testé ce que tu as écris, c'est parfais cela marche nickel.

Je m'inspirerais de tes conseils pour les prochains code.

merci encore mille fois

Bonne fin de journée
 
- 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
5
Affichages
235
Réponses
4
Affichages
177
Retour