Boucle sous conditions

  • Initiateur de la discussion Initiateur de la discussion bartelele
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

bartelele

Guest
Bonjour à tous,

Petit problème que je n’arrive pas à résoudre 😡… 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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
887
Réponses
2
Affichages
582
Réponses
2
Affichages
534
Réponses
26
Affichages
2 K
Réponses
3
Affichages
655
N
Réponses
3
Affichages
1 K
ninelove37
N
Retour