Macro en fonction d'une autre

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

4 réponses

  1. Bonjour,

    Tu peux t'inspirer de cet exemple
    Sub 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+
    1
    1. 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 ?
      0
  2. 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+
    0
    1. oui de le lancé a vrai dire
      0
    2. 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
      0
  3. Désolé, je ne comprends rien à ton affaire !
    Sans un exemple concret et des explications claires, je ne peux rien pour toi.

    A+
    0
    1. ok merci quand même.
      0
  4. Contributeur
    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
    0