Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

deux macros à la suite l'une de l'autre ?

3 réponses
Avatar
URIANE
Re-bonjour,
Est-ce possible d'enchaîner deux macros lorsque la première à remplie sa
condition de mettre l'autre à la suite, car j'essaie en vain ......
cf ci-dessous :
Ma première macro
Sub importation()
If MsgBox("Attention cette commande va recopier vos données mensuelles" &
vbLf & "Etes-vous certain de vouloir continuer", vbQuestion + vbYesNo,
"Confirmer") = vbYes Then
Dim i As Long, ligneRecap As Long
nf = [A1]
Application.ScreenUpdating = False
Sheets(nf).Range("A7:L65536").ClearContents
ligneRecap = 6
For i = 6 To [a65536].End(xlUp).Row
If Cells(i, 15) <> "NON" And Cells(i, 3) <> "" Then
ligneRecap = ligneRecap + 1
Cells(i, 1).Resize(1, 12).Copy
Sheets(nf).Cells(ligneRecap, 1).PasteSpecial Paste:=xlValues
End If
Next i
Else
MsgBox "Opératon annulée"
Exit Sub 'répondu non : on arrête
End If

End Sub
donc après copie dans ma feuille de destination je souhaiterais que la
seconde macro fasse la mise à blanc des mes colonnes dans ma feuille de
saisie mais je ne sais pas ou la placer dans la macro ci-dessus ?

ma deuxième macro

Sub MAB()
Range("C6:C10000,E6:E10000,l6:l10000").ClearContents
Range("a1").ClearContents
Range("a1").Select
MsgBox ("Veuillez saisir le mois en cours SVP merci ")
End Sub
Par avance merci

3 réponses

Avatar
Daniel.C
Bonjour.
Si j'ai bien compris, tu peux mettre ta macro soit avant "Else", soit avant
"End Sub"
Si elle s'appelle "Macro2" :

Sub importation()
If MsgBox("Attention cette commande va recopier vos données mensuelles" &
vbLf & "Etes-vous certain de vouloir continuer", vbQuestion + vbYesNo,
"Confirmer") = vbYes Then
Dim i As Long, ligneRecap As Long
nf = [A1]
Application.ScreenUpdating = False
Sheets(nf).Range("A7:L65536").ClearContents
ligneRecap = 6
For i = 6 To [a65536].End(xlUp).Row
If Cells(i, 15) <> "NON" And Cells(i, 3) <> "" Then
ligneRecap = ligneRecap + 1
Cells(i, 1).Resize(1, 12).Copy
Sheets(nf).Cells(ligneRecap, 1).PasteSpecial Paste:=xlValues
End If
Next i
'*** ici
Else
MsgBox "Opératon annulée"
Exit Sub 'répondu non : on arrête
End If
Macro2 '*** ou là

End Sub

Cordialement.
Daniel

"URIANE" a écrit dans le message de news:

Re-bonjour,
Est-ce possible d'enchaîner deux macros lorsque la première à remplie sa
condition de mettre l'autre à la suite, car j'essaie en vain ......
cf ci-dessous :
Ma première macro
Sub importation()
If MsgBox("Attention cette commande va recopier vos données mensuelles" &
vbLf & "Etes-vous certain de vouloir continuer", vbQuestion + vbYesNo,
"Confirmer") = vbYes Then
Dim i As Long, ligneRecap As Long
nf = [A1]
Application.ScreenUpdating = False
Sheets(nf).Range("A7:L65536").ClearContents
ligneRecap = 6
For i = 6 To [a65536].End(xlUp).Row
If Cells(i, 15) <> "NON" And Cells(i, 3) <> "" Then
ligneRecap = ligneRecap + 1
Cells(i, 1).Resize(1, 12).Copy
Sheets(nf).Cells(ligneRecap, 1).PasteSpecial Paste:=xlValues
End If
Next i
Else
MsgBox "Opératon annulée"
Exit Sub 'répondu non : on arrête
End If

End Sub
donc après copie dans ma feuille de destination je souhaiterais que la
seconde macro fasse la mise à blanc des mes colonnes dans ma feuille de
saisie mais je ne sais pas ou la placer dans la macro ci-dessus ?

ma deuxième macro

Sub MAB()
Range("C6:C10000,E6:E10000,l6:l10000").ClearContents
Range("a1").ClearContents
Range("a1").Select
MsgBox ("Veuillez saisir le mois en cours SVP merci ")
End Sub
Par avance merci



Avatar
papou
Bonjour
Tu positionnes le nom de ta macro (MAB) entre Next i et Else, soit :

Next i
MAB
Else
MsgBox "Opératon annulée"
Exit Sub 'répondu non : on arrête
End If

End Sub

Cordialement
Pascal


"URIANE" a écrit dans le message de news:

Re-bonjour,
Est-ce possible d'enchaîner deux macros lorsque la première à remplie sa
condition de mettre l'autre à la suite, car j'essaie en vain ......
cf ci-dessous :
Ma première macro
Sub importation()
If MsgBox("Attention cette commande va recopier vos données mensuelles" &
vbLf & "Etes-vous certain de vouloir continuer", vbQuestion + vbYesNo,
"Confirmer") = vbYes Then
Dim i As Long, ligneRecap As Long
nf = [A1]
Application.ScreenUpdating = False
Sheets(nf).Range("A7:L65536").ClearContents
ligneRecap = 6
For i = 6 To [a65536].End(xlUp).Row
If Cells(i, 15) <> "NON" And Cells(i, 3) <> "" Then
ligneRecap = ligneRecap + 1
Cells(i, 1).Resize(1, 12).Copy
Sheets(nf).Cells(ligneRecap, 1).PasteSpecial Paste:=xlValues
End If
Next i
Else
MsgBox "Opératon annulée"
Exit Sub 'répondu non : on arrête
End If

End Sub
donc après copie dans ma feuille de destination je souhaiterais que la
seconde macro fasse la mise à blanc des mes colonnes dans ma feuille de
saisie mais je ne sais pas ou la placer dans la macro ci-dessus ?

ma deuxième macro

Sub MAB()
Range("C6:C10000,E6:E10000,l6:l10000").ClearContents
Range("a1").ClearContents
Range("a1").Select
MsgBox ("Veuillez saisir le mois en cours SVP merci ")
End Sub
Par avance merci



Avatar
Michel_D
Bonjour,

Voici ou il faut mettre à priori l'appel de ta 2 ème procédure :

If MsgBox("Attention cette commande va recopier vos données mensuelles" &
vbLf & "Etes-vous certain de vouloir continuer", vbQuestion + vbYesNo,
"Confirmer") = vbYes Then
...
Next i
' Tu appelle ta procédure ici (ou tu recopie le code ici)
Else
...
End If


"URIANE" a écrit dans le message de news:
Re-bonjour,
Est-ce possible d'enchaîner deux macros lorsque la première à remplie sa
condition de mettre l'autre à la suite, car j'essaie en vain ......
cf ci-dessous :
Ma première macro
Sub importation()
If MsgBox("Attention cette commande va recopier vos données mensuelles" &
vbLf & "Etes-vous certain de vouloir continuer", vbQuestion + vbYesNo,
"Confirmer") = vbYes Then
Dim i As Long, ligneRecap As Long
nf = [A1]
Application.ScreenUpdating = False
Sheets(nf).Range("A7:L65536").ClearContents
ligneRecap = 6
For i = 6 To [a65536].End(xlUp).Row
If Cells(i, 15) <> "NON" And Cells(i, 3) <> "" Then
ligneRecap = ligneRecap + 1
Cells(i, 1).Resize(1, 12).Copy
Sheets(nf).Cells(ligneRecap, 1).PasteSpecial Paste:=xlValues
End If
Next i
Else
MsgBox "Opératon annulée"
Exit Sub 'répondu non : on arrête
End If

End Sub
donc après copie dans ma feuille de destination je souhaiterais que la
seconde macro fasse la mise à blanc des mes colonnes dans ma feuille de
saisie mais je ne sais pas ou la placer dans la macro ci-dessus ?

ma deuxième macro

Sub MAB()
Range("C6:C10000,E6:E10000,l6:l10000").ClearContents
Range("a1").ClearContents
Range("a1").Select
MsgBox ("Veuillez saisir le mois en cours SVP merci ")
End Sub
Par avance merci