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   -
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. Gyrus Messages postés 3360 Statut Membre 526
     
    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. Ayuritenshi Messages postés 299 Statut Membre 53
       
      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. Gyrus Messages postés 3360 Statut Membre 526
     
    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. Ayuritenshi Messages postés 299 Statut Membre 53
       
      oui de le lancé a vrai dire
      0
    2. Ayuritenshi Messages postés 299 Statut Membre 53
       
      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. Gyrus Messages postés 3360 Statut Membre 526
     
    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. Ayuritenshi Messages postés 299 Statut Membre 53
       
      ok merci quand même.
      0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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