Une macro en fonction d'une autre

Bonjour

tous d'abord merci de vous attardez sur mon sujet

Alors mon problème est le suivant:

J'aimerais faire une macro qui s'enclenche si une autre n'a pas de résultats

Mais je n'y arrive pas pouvez vous m'aider ou me donner quelques petits conseils ?

Merci bonne journée

Bonjour,

Si tu peux mettre en place le test de la première macro ... "pas de résultats ..."

il suffit de faire : Application.Run("taseconde macro"")

oooh trop fort merci je vais essayer bonne journée

Bonjour,

Soit une Macro1 qui donne, ou pas, un résultat;

Soit une Macro2 devant être déclenchée si la Macro1 n'a pas de résultat.

Comment faire?

Tout simplement en mettant cette ligne de code [à modifier : le test à faire] dans la macro1 :

If testàfaire = False Then Call Macro2

et bien en gros j'ai une macro "filtre avancer" et j'aimerais que s'il celle-ci n'a pas de résulta la deuxième macro se lance (incrémentation de la température) je vous met le code de mes deux macros :

Macro du filtre :

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

Macro de l'incrémentation:

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

Merci pour vos réponses

Bonjour, je débute en VBA et j'ai quelques petits soucis.

Tout d'abord je ne comprends pas très bien ce code :

Worksheets("afficher").Cells(3, Worksheets("valeur").[A1]) = Worksheets("resultat").[W15]

Worksheets("valeur").[A1] = Worksheets("valeur").[A1] + 1

Ce que j'aimerais faire c'est afficher la valeur de la cellule W15 de la feuille "resultat" dans la cellule G48 de la feuille "afficher".

Dans mon projet lorsque je clique sur MAJ il faudrait que lors de mon première appuie sur ce bouton j'affiche la valeur de la cellule W15 de la feuille "resultat" dans la cellule G48 de la feuille "afficher".

Puis lorsque j'appuie une 2 eme fois j'affiche la valeur de la cellule W15 de la feuille "resultat" dans la cellule H48 de la feuille "afficher". Ainsi de suite ...

J'espère etre compréhensible merci.

EUHHHH je pense que c'est pas le meilleur endroit pour demander cela c'est pas du tous le sujet du problème là

Pour cela, il faudrait que tu nous passes un fichier exemple...

pijaku tu parle a qui ?


au cas où c’était a moi voici mon fichier

Oui, c'est à toi ayuri que je parle.

Je ne tiens aucunement compte du message de grougrou74 qui a du manifestement se tromper.

Peux tu me donner un exemple de saisie entre A4 et O4 pour lequel ton filtre ne donnerait aucun résultat?

c'est F4 et I4

et il ne donne pas de résultats pour F4=-20 et I4=50 les deux ensemble.

Merci

Bonjour le fil

pijaku a écrit :

Peux tu me donner un exemple de saisie entre A4 et O4 pour lequel ton filtre ne donnerait aucun résultat?

Dis pijaku faut tout te marcher à toi églament

Ce n'est pas compliquer de mettre une valeur qui ne retourne rien quand même

Merci pour ton aide

alors c'est pour F4 et I4

F4=-20 e t I4 = 50 ça ne donne pas de résultats

et quand ça ne donne pas de résultats j'aimerais faire une macro qui incrémente toute seule jusqu’à trouver des résultats mais en demandant en premier lieu si l'utilisateur veux incrémenté F4 ou I4 ou les deux. Mais j'ai pas assez de connaissances en VBA pour cela.

Bonjour Ayuri,

ayuri a écrit :

et bien en gros j'ai une macro "filtre avancer" et j'aimerais que s'il celle-ci n'a pas de résulta la deuxième macro se lance (incrémentation de la température)

Pour lancer le 2ème code, il te faut ouvrir ton UsF, c'est bien ce que tu veux ?

A+

en gros oui mais j'aimerais qu'au lieu de m'ouvrir l'userform il propose l'userform et après il incrémente tous seul jusqu’à trouver un résultat car la l'userform c'est a la main enfin l'utilisateur choisi la marge de l'incrémentation alors que j'aimerais qu'il incrémente tous seul de 5 en 5 jusqu’à trouver un résultat mais j'ai pas assez de connaissances

Salut BrunoM45,

Dis donc, tu arrives quand la guerre est finie

Ben oui, j'ai déjà posé toutes les questions stupides...

Un coup de main s'avère utile et généreux de ta part sur ce sujet.

Merci donc.

Je vais toutefois regarder de mon côté.


Pour tester l'absence de résultat, tu peux utiliser ceci, à ajouter en fin de ta procédure de filtre :

    Dim LgFin As Long
    LgFin = Range("A" & Rows.Count).End(xlUp).Row
    If Evaluate("SUBTOTAL(3,A7:A" & LgFin & ")") = 0 Then
        'MsgBox "yes"
        'ICI pas de résultats
     End If

Pour le reste, je ne trouve nulle part de procédure qui incrémente les températures, ni de mode d'emploi permettant de faire cette procédure.

je sais bien c'est pour cela que j'ai demandé de l'aide

mais sans parler que se soit de la température l’incrémentation d'une cellule automatiquement s'il n'y a pas de résultat je l'ai trouver nulle part ....

Je viens de relire tous tes messages sur cette présente discussion et je ne vois nulle part le mode d'emploi de ton incrémentation.

Comment la faire? Quel est le résultat attendu?

Décris nous ce que tu entends pas incrémentation.

Dis nous, en gros, exactement ce que tu souhaites que fasses la macro "incrémentation".

... et soit précis!

Bruno pour la deuxième partie j'aimerais faire une incrémentation automaatique mais que mon userform s'ouvre en premier afin que l'utilisateur puisse choisir quelle cellules est a incrémenté.

ouvrir mon userform et j'aimerais que l'incrémentation se fasse jusqu'à que la macro de recherche trouve un résultat .


donc pour être précise:

en gros si la macro 1 n'obtiens aucun résultats j'aimerais que l'userform soit déclencher afin que l'utilisateur puisse choisir quelle cellule doit être incrémenté.

Incrémentation : admettons que pour F4 = -20 et I4= 50

j'aimerais que F4 = -20 -5 en allant de -5 en -5 a chaque fois jusqu’à trouver un résultat

j aimerais que I4 = 50 +5 en allant de +5 en +5 a chaque foi jusqu'à trouver un résultat

et si le choix de l'utilisateur est d'incrémenter les deux j'aimerais que ça fasse les deux opération décrite avant en même temps jusqu'à encore une fois trouver un résultats.

J'espère donc avoir été précise ....

Rechercher des sujets similaires à "macro fonction"