Macro en fonction d'une autre
Ayuritenshi
Messages postés
299
Statut
Membre
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour
Tout d'abord merci de vous attardez sur mon sujet.
Alors mon problème est le suivant :
J'aimerais faire une macro qui se lance si une autre n'a pas de résultats
Quelqu'un pourrait-il ou elle m'aider ou simplement me donner quelques petits conseils sympa ?
Merci bonne journée
Tout d'abord merci de vous attardez sur mon sujet.
Alors mon problème est le suivant :
J'aimerais faire une macro qui se lance si une autre n'a pas de résultats
Quelqu'un pourrait-il ou elle m'aider ou simplement me donner quelques petits conseils sympa ?
Merci bonne journée
4 réponses
-
Bonjour,
Tu peux t'inspirer de cet exempleSub Macro1()
Dim Reponse As String
Reponse = MsgBox("Ceci est la macro1 ..." & Chr(10) & _
"Le résultat est-il correct ?", vbYesNo)
If Reponse = vbYes Then
Macro2
End If
MsgBox "Traitement terminé"
End Sub
Sub Macro2()
MsgBox "Ceci est la macro2"
End Sub
A+-
Merci pour ta réponse mais je ne voit pas comment l'intégré a mes macros ... dont une que tu m'as faite .
j'aimerais que si celle-ci ne donne pas de résultats :Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("A4:O4")) Is Nothing Then
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each Cel In Range("A4:O4")
If Cel <> "" Then
If Not IsNumeric(Cel) Then
Cel.Offset(-1) = "*" & Cel.Value & "*"
Else
Cel.Offset(-1) = Cel.Value
End If
Else
Cel.Offset(-1).ClearContents
End If
Next Cel
Application.EnableEvents = True
Range("A6:P1000").AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("A2:O3"), Unique:=False
End If
End Sub
alors lancer celle la :Private Sub CommandButton1_Click() 'Fermeture de la boite de dialogue apres un click sur "Valider"
Incrémentation_de_Tmin = IIf(OptionButton1.Value = True, "OK", "NON")
Incrémentation_de_Tmax = IIf(OptionButton2.Value = True, "OK", "NON")
Incrémentation_des_deux = IIf(OptionButton3.Value = True, "OK", "NON")
If MsgBox("confirmez-vous incrementation?", vbYesNo, "confirmation") = vbYes Then Unload UserForm2
Unload Me
End Sub
Private Sub CommandButton2_Click() ' Si l'on clique sur "Quittez" les valeurs des variables sont réinitialisées
Unload UserForm2
End Sub
Private Sub OptionButton1_Click()
Range("F4").Value = Range("F4").Value - Range("H5").Value
End Sub
Private Sub OptionButton2_Click()
Range("I4").Value = Range("I4").Value + Range("H5").Value
End Sub
Private Sub OptionButton3_Click()
Range("F4").Value = Range("F4").Value - Range("H5").Value
Range("I4").Value = Range("I4").Value + Range("H5").Value
End Sub
Private Sub TextBox1_Change()
Range("H5") = TextBox1
End Sub
Private Sub UserForm_Initialize()
OptionButton1.Value = IIf(Incrémentation_de_Tmin = "OK", True, False)
OptionButton2.Value = IIf(Incrémentation_de_Tmax = "OK", True, False)
OptionButton3.Value = IIf(Incrémentation_des_deux = "OK", True, False)
End Sub
peux tu encore m'aider ?
-
-
Mouais ! le moins que l'on puisse dire, c'est que la question n'est pas bien posée.
Si je comprends bien, tu souhaites que si le filtrage ne retourne aucune ligne, alors on lance une procédure.
Tu peux intégrer le test suivant en fin de procédure :
If Range("A" & Rows.Count).End(xlUp).Row = 6 Then ...
(si la dernière ligne renseignée est la ligne d'en-têtes, alors ...).
Par contre, tu ne dis pas quelle est la procédure que tu souhaites lancer.
Dans ton message, tu cites 7 procédures :
CommandButton1_Click,
CommandButton2_Click,
OptionButton1_Click, ...
etc.
Il s'agit peut-être simplement d'ouvrir un UserForm ???
A+-
-
J'ai fais ça du coup mais ça ne marche pas :/
Sub boucle_while()
Dim i As Integer
Dim max_boucles As Integer
If Range ("A" & Rows.Count).End(xlUp).Row = 6 Then
Userform2.show
If OptionButton1_Click=1 then
range (« F4 ») =range (« F4 ») + 5
End if
If OptionButton2_Click=1 then
range (« I4 ») =range (« I4 ») + 5
End if
If OptionButton3_Click=1 then
cells (« I4 & F4 ») = cells (« I4 & F4 ») + 5
End if
i= range ("H5")
For i= 1 to 10 'TANT QUE la variable i est <= 10, la boucle est répétée
If i > max_boucles Then
Exit For 'Si condition vrai, on quitte la boucle For
End If
If i = 10 and (Worksheet_Change)= no-result then unload userform 2
End if
Msgbox(« il n'y a pas de résultats pour cette recherche »)
Wend
End Sub
-
-
Désolé, je ne comprends rien à ton affaire !
Sans un exemple concret et des explications claires, je ne peux rien pour toi.
A+ -
Bonjour,
C'est très mal vu de poster sur plusieurs forums sans le signaler. Tu devrais éviter, ou attendre 24h sans réponse pour le faire.
eric