Boucle sous conditions

bartelele

XLDnaute Junior
Bonjour à tous,

Petit problème que je n’arrive pas à résoudre :mad:… J’ai besoin d’un conseil ou d’une aide !

Sur mon fichier Excel en première colonne j’ai des items (de 1 à 24).
La ligne de l’item général est en orange (ex item 1 ligne 11), les item 1 des lignes 12,13,14,15 sont en fait des sous chapitres de l’item général de la ligne 11.

Chacun sous chapitres à un statut en colonne 11.

4 statuts sont possibles : OK, En cours, NOK, N/A

Ce que je voudrais faire c’est que le statut de l’item général soit fait automatiquement en fonction des statuts des sous item.
Si tous les sous chapitres ont un statut OK, l’item général sera OK, si un des sous chapitres à un statut « en cours », le statut de l’item général sera en cours, si un des sous chapitre est en NOK, le statut général sera en NOK.

2videmment je voudrais répéter cette action pour tous les items.

J’ai essayé de faire une boucle avec des conditions mais je n’y arrive pas, quelqu’un peut m’aider ?

Merci beaucoup :)

Cordialement
 

Pièces jointes

  • Test.xls
    52.5 KB · Affichages: 52
  • Test.xls
    52.5 KB · Affichages: 56
  • Test.xls
    52.5 KB · Affichages: 60

jp14

XLDnaute Barbatruc
Re : Boucle sous conditions

Bonjour

Ci dessous une solution par macro
Code:
Sub travdem()
Dim Cellule As Range
Dim Nomfeuille1 As String
Dim col As String
Dim Colstatut As String
Dim I As Byte, J As Byte, K As Long, I1 As Byte
Dim Statut As String
' pour boucler sur la colonne 1
' paramétrage
Nomfeuille1 = "BEC 2"
col = "A"
Colstatut = "K"
'
With Sheets(ActiveSheet.Name)
I1 = 0
For Each Cellule In .Range(col & "11:" & col & .Range(col & .Rows.Count).End(xlUp).Row)
    If I1 = 0 Then
        For I = 1 To 100
            If Cellule.Offset(I, 0) <> Cellule Then Exit For
        Next I
        I = I - 1
        I1 = I
        If I > 0 Then

        
            If I = 1 Then
                .Range(Colstatut & Cellule.Row) = .Range(Colstatut & Cellule.Row + I)
            Else
            'Si tous les sous chapitres ont un statut OK,
            'l’item général sera OK, si un des sous chapitres à un statut «en cours»,
            'le statut de l’item général sera en cours, '
            'si un des sous chapitre est en NOK, le statut général sera en NOK.
                For J = 1 To I
                Statut = ""
                Select Case .Range(Colstatut & Cellule.Row + J)
                    Case "NOK"
                        Statut = "NOK"
                        Exit For
                    Case "En cours"
                        Statut = "En cours"
                        Exit For
                    Case "OK"
                        Statut = "OK"
                    Case ""
                        Statut = ""
                        Exit For
                    Case Else
                        Statut = ""
                        Exit For
                End Select
                Next J
                .Range(Colstatut & Cellule.Row) = Statut
            End If
        End If
    Else
     I1 = I1 - 1
    End If
Next Cellule


End With
End Sub

A tester

Bonne journée

JP
 

Discussions similaires

Réponses
9
Affichages
315

Statistiques des forums

Discussions
312 490
Messages
2 088 879
Membres
103 981
dernier inscrit
vinsalcatraz