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
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