Determiner des points croissants parmis plusieurs

bonjour à toutes et à tous,

je suis stagiaire et je dois mettre en place un code qui me permet de créer des alertes lorsque j'ai 7 points consécutifs croissants et inversement.

J'ai des résultats d'ensemble de point qui sont stockés par ligne sur une feuille excel et qui sont ensuite utilisés pour tracer une carte de contrôle, ce qui permet de vérifier que tous les paramètres à contrôler sont bien dans les limites.

j'y ai déjà refléchi et je pensais faire un code qui me déclencherait une alerte lorsque j'ai es points qui se présenteraient comme suite Xa>Xb>Xc>Xd>Xe>Xf>Xg

Le problème est que étant novice, je ne sais pas trop comment l'écrire sous vba excel

Si quelqu'un pouvait me filer un coup de pouce...

Merci d'avance

Bonjour Brandon,

les formules suivantes donnent 1 quand toutes les conditions sont réunies

=(A1>B1)*(B1>C1)*(C1>D1)*(D1>E1)*(E1>F1)*(F1>G1)
=(F1<G1)*(E1<F1)*(D1<E1)*(C1<D1)*(B1<C1)*(A1<B1)

Ne pas oublier les parenthèses...

Bonjour,

Un truc dans le genre ? La plage est située en ligne 1 sur la feuille "Feuil1" :

Sub Test()

    Dim Plage As Range
    Dim I As Long

    With Worksheets("Feuil1"): Set Plage = .Range(.Cells(1, 1), .Cells(1, .Columns.Count).End(xlToLeft)): End With 'sur la première ligne

    For I = 1 To Plage.Count

        If Plage(I + 6).Value > Plage(I + 5).Value And _
           Plage(I + 5).Value > Plage(I + 4).Value And _
           Plage(I + 4).Value > Plage(I + 3).Value And _
           Plage(I + 3).Value > Plage(I + 2).Value And _
           Plage(I + 2).Value > Plage(I + 1).Value And _
           Plage(I + 1).Value > Plage(I).Value Then

            MsgBox "La première valeur de la plage croissante est : " & Plage(I).Value & _
            vbCrLf & _
            "Positionné en cellule : " & Plage(I).Address(0, 0)

            'saute la plage
            I = I + 6

        End If

    Next I

    For I = 1 To Plage.Count

        If Plage(I).Value > Plage(I + 1).Value And _
           Plage(I + 1).Value > Plage(I + 2).Value And _
           Plage(I + 2).Value > Plage(I + 3).Value And _
           Plage(I + 3).Value > Plage(I + 4).Value And _
           Plage(I + 4).Value > Plage(I + 5).Value And _
           Plage(I + 5).Value > Plage(I + 6).Value Then

            MsgBox "La première valeur décroissante de la plage est : " & Plage(I).Value & _
            vbCrLf & _
            "Positionné en cellule : " & Plage(I).Address(0, 0)

            'saute la plage
            I = I + 6

        End If

    Next I

End Sub

Merci bien à vous deux, je m'y mets en je vous faire un retour

Bonjour!

j'ai bien compris vos différents programmes mais le souci est que les valeurs à comparer sont obtenu en fonction d'un nombre de donnée variable et donc elles peuvent aller de 1 à N. donc c'est parmis ces données que je me dois d"écrire un code qui permet de trouver ceux qui sont consécutif croissant jusqu'à 7 valeurs et afficher un message. je ne sais pas si je me fais comprendre..merci encore de bien vouloir m'aider si vous le pouvez svp

Bonjour Brandon,

Vous cherchez donc sept valeurs croissantes consécutives dans une zone indéfinie...

Ces sept valeurs croissantes consécutives sont elles sur la même ligne?

Ces sept valeurs croissantes consécutives sont elles dans la même colonne?

Ces sept valeurs croissantes consécutives sont elles dans le même onglet?

Quel est le message d'alerte à afficher?

Si vos données sont sur une même ligne

1) chercher la valeur max de la ligne

2) vérifier si les six valeurs précédentes sont bien décroissantes

3) afficher le message

En considérant que vos valeurs sont en ligne 1 et qu'elles sont croissantes, testez la formule ci-dessous

=SI(ET(INDIRECT(ADRESSE(1;EQUIV(MAX(1:1);1:1;0));1)>INDIRECT(ADRESSE(1;EQUIV(MAX(1:1);1:1;0)-1);1);INDIRECT(ADRESSE(1;EQUIV(MAX(1:1);1:1;0)-1);1)>INDIRECT(ADRESSE(1;EQUIV(MAX(1:1);1:1;0)-2);1);INDIRECT(ADRESSE(1;EQUIV(MAX(1:1);1:1;0)-2);1)>INDIRECT(ADRESSE(1;EQUIV(MAX(1:1);1:1;0)-3);1);INDIRECT(ADRESSE(1;EQUIV(MAX(1:1);1:1;0)-3);1)>INDIRECT(ADRESSE(1;EQUIV(MAX(1:1);1:1;0)-4);1);INDIRECT(ADRESSE(1;EQUIV(MAX(1:1);1:1;0)-4);1)>INDIRECT(ADRESSE(1;EQUIV(MAX(1:1);1:1;0)-5);1);INDIRECT(ADRESSE(1;EQUIV(MAX(1:1);1:1;0)-5);1)>INDIRECT(ADRESSE(1;EQUIV(MAX(1:1);1:1;0)-6);1));"message d'alerte";"")

Bonjour,

Les valeurs indiquées dans un message :

Sub Test()

    Dim Plage As Range
    Dim I As Long

    With Worksheets("Feuil1"): Set Plage = .Range(.Cells(1, 1), .Cells(1, .Columns.Count).End(xlToLeft)): End With 'sur la première ligne

    For I = 1 To Plage.Count

        If Plage(I + 6).Value > Plage(I + 5).Value And _
           Plage(I + 5).Value > Plage(I + 4).Value And _
           Plage(I + 4).Value > Plage(I + 3).Value And _
           Plage(I + 3).Value > Plage(I + 2).Value And _
           Plage(I + 2).Value > Plage(I + 1).Value And _
           Plage(I + 1).Value > Plage(I).Value Then

            MsgBox "Valeurs croissantes : " & vbCrLf & _
            Plage(I).Value & vbCrLf & _
            Plage(I + 1).Value & vbCrLf & _
            Plage(I + 2).Value & vbCrLf & _
            Plage(I + 3).Value & vbCrLf & _
            Plage(I + 4).Value & vbCrLf & _
            Plage(I + 5).Value & vbCrLf & _
            Plage(I + 6).Value & vbCrLf & _
            "La première valeur est positionné en cellule : " & Plage(I).Address(0, 0)

            'saute la plage
            I = I + 6

        End If

    Next I

    For I = 1 To Plage.Count

        If Plage(I).Value > Plage(I + 1).Value And _
           Plage(I + 1).Value > Plage(I + 2).Value And _
           Plage(I + 2).Value > Plage(I + 3).Value And _
           Plage(I + 3).Value > Plage(I + 4).Value And _
           Plage(I + 4).Value > Plage(I + 5).Value And _
           Plage(I + 5).Value > Plage(I + 6).Value Then

            MsgBox "Valeurs décroissantes : " & vbCrLf & _
            Plage(I).Value & vbCrLf & _
            Plage(I + 1).Value & vbCrLf & _
            Plage(I + 2).Value & vbCrLf & _
            Plage(I + 3).Value & vbCrLf & _
            Plage(I + 4).Value & vbCrLf & _
            Plage(I + 5).Value & vbCrLf & _
            Plage(I + 6).Value & vbCrLf & _
            "La première valeur est positionné en cellule : " & Plage(I).Address(0, 0)

            'saute la plage
            I = I + 6

        End If

    Next I

End Sub

Bonjour njhub

merci de songer à m'aider mais je n'arrive pas à comprendre ton programme

Bonjour Brandon,

La formule fait, avec des données sur une même ligne :

1) cherche la valeur max de la ligne

2) vérifie si les six valeurs précédentes sont bien décroissantes

3) affiche le message

ok compris njhub

je m'y mets et je te fais un retour

Bonjour @Theze

après un moment de tentative et d'adaptation ,j'y suis parvenue avec ton code. merci encore et merci à vous autres également!

Bonjour,

Content de t'avoir aidé

Rechercher des sujets similaires à "determiner points croissants parmis"