Boucle For

Bonjour,

Ma demande est toute simple : Comment puis-je traduire ce bout de code sous forme de boucle afin qu'il s'applique à chaque fois à la ligne ou la cellule sera active.

Public Sub ValidateList(ByVal irow%)
If ActiveSheet.Range("D3:S3").Interior.ColorIndex = 4 Then   'Boucle for pour appliquer( D..:S...) jusqu'à 1000.
    MsgBox "Mesure correcte"
Else
 MsgBox "Mesure fausse, veuillez refaire les mesures !", vbCritical + vbOKOnly, "Validation zéro Gap"
End If
End Sub

Merci d'avance

Bonjour,

peut t'on voir la macro qui appelle ValidateList ?

Salut,

C'est toujours assez difficile de donner un coup de main sans avoir de fichier sous la main, mais voici une solution qui devrait fonctionner :

Public Sub ValidateList(ByVal irow%)
For i = 3 To 1000
    If ActiveSheet.Range("D" & i & ":S" & i).Interior.ColorIndex = 4 Then   'Boucle for pour appliquer( D..:S...) jusqu'à 1000.
        MsgBox "Mesure correcte"
    Else
     MsgBox "Mesure fausse à la ligne " & i & ", veuillez refaire les mesures !", vbCritical + vbOKOnly, "Validation zéro Gap"
    End If
Next i
    End Sub

A noter le passage ci-dessous qui permet de savoir à quelle ligne est le problème.

MsgBox "Mesure fausse à la ligne " & i & ", veuillez refaire les mesures !"

Mais s'il y a 500 problèmes sur les 1000 lignes, ça risque d'être assez embêtant de cliquer 500 fois sur OK.

A voir s'il faut sortir de la boucle à chaque problème rencontrer. Dans un premier temps, faire un essai avec 10 lignes, puis 50, puis 200, ..... ??

Amicalement.

Bonjour et merci à vous !

Vous avez raison je vais vous mettre le fichier complet (attention il ya d'autre macro)

L'idée est la suivante : Lorsque que l'on arrive à la colonne T je souhaite faire un test afin de savoir si une ou plusieurs cellule de la même ligne se trouvant entre D et S sont rouge. Si oui alors le message de mesure non correcte apparait et dans la cellule T apparait "NOK" si toute les valeurs sont verte alors cellule T : OK.

Ce test doit être effectuée uniquement pour la ligne activée.

Sachant que la ligne activée est normalement toujours la dernière, les lignes précédentes représentent des séries de mesures antérieures.

J'espère être plus clair

Merci d'avance

Salut,

As-tu quand même testé ma proposition ?

Si tu as voulu nous fournir ton fichier, il n'est pas passé

Amicalement.

Bonjour,

Une piste.

La plage est défini sur la ligne 3 à partir de la colonne D et la boucle contrôle que toutes les cellules aient la même couleur, si ce n'est pas le cas, message et fin :

Sub Test()

    Dim Plage As Range
    Dim Cel As Range
    Dim I As Integer
    Dim Total As Integer

    With ActiveSheet: Set Plage = .Range(.Cells(3, 4), .Cells(3, .Columns.Count).End(xlToLeft)): End With

    For Each Cel In Plage

        I = I + 1

        If Cel.Interior.ColorIndex = 4 Then Total = Total + 1

        If Total <> I Then MsgBox "Mesure fausse, veuillez refaire les mesures !", vbCritical + vbOKOnly, "Validation zéro Gap": Exit Sub

    Next Cel

End Sub

Salut Papi27190,

Salut l'équipe,

je suppose qu'il s'agit de ce fichier-ci que j'avais commencé il y a quelques jours.

D'autres sirènes m'avaient entretemps attiré dans leurs filets...

- comme demandé dans le premier fichier :

* dans les deux premières colonnes, une donnée jugée invalide provoque une demande de correction immédiate ;

* le n° de mesure est incrémenté automatiquement.

  • OK ou NOK s'inscrivent seuls comme des grands en [K], entraînant la colorisation de [K1] : rouge, pas bon!
  • j'ai supprimé les MFC, rectifié la présentation des bornes des colonnes [E:J] pour matcher avec SPLIT.
Pourquoi supprimer les MFC, me direz-vous? Pour permettre facilement, via les cellules en ligne 1, de changer les-dites bornes sans devoir passer par les MFC.

Petite astuce, Papi, un passage à la ligne dans une cellule multiline s'effectue par ALT-ENTER : plus propre qu'ajouter des espaces...

  • un clic-droit en [K] recherche la première occurrence de "NOK" à partir de la ligne cliquée et sélectionne la ligne recherchée.
  • les volets étant bloqués sur la ligne 1, le bilan 'Qualité' en [K1] sera visible en permanence.

Il faudra adapter sans doute puisque je lis dans ce post que les données s'étaleraient plutôt de [D] à [S]...

Est-ce plus ou moins ce que tu voulais?

A+

Bonjour à tous et merci de toutes vos réponses !

Ci-joint le fichier j'ai oubliée de la mettre en pièce jointe...

1programme.xlsm (51.50 Ko)

Merci de ton aide Curulius mais en effet le fichier a légèrement évolué depuis la dernière fois tout comme toi j'ai supprimé les MFC pour du VBA. Concernant ce que tu as fait en colonne K c'est casiment ca à un détail près ! Je souhaiterais en plus un petit MSg indiquant que les mesures sont validées ou à refaire en fonction de si une cellule ou plus est rouge. et je n'est pas l'utilité du Bilan en K1 en faite le bilan doit être fait pour chaque ligne, chaque K.. correspondra au bilan de sa ligne.

Et merci pour toutes les astuces !

Theze je vais tester ton code afin de voir si cela fonctionne correctement.

Re Theze j'ai un petit souci avec ton bout de code.

Après une petite modification je parviens a avoir le message indiquant mesures fausses si une ou plusieurs cellules de la plage D à S est rouge puis a écrire en T "NOK", mais lorsque que toutes mes cellules sont vertes jai tout de même le message disant que non… et je ne parviens pas à comprendre pourquoi

Peut être pourrais tu m'éclairer sur ton code

Pour Yvouille : Oui j'ai testé mais tu avait raison la macro tourne en boucle….

Pour récapituler le fonctionnement du fichier de curulis est le bon mais je ne parviens pas à extraire uniquement le bout de code nécessaire pour le réintroduire dans ma version actuel… En effet je souhaite garder ma version car des macros comme la suppression de ligne ou le verrouillage automatique des cellules pleines ont étaient ajoutées.

Merci d'avance

Rechercher des sujets similaires à "boucle"