boucles if/ for, groupe de données

moialbert

XLDnaute Nouveau
bonjour,
je suis plutot nvice en vba excel et j'essaie de programmer un boucle qui ne plante plus mais ne me donne pas le résultat escompté.

j'ai des lignes avec dans la colonne A un nom qui est identique pour qques lignes consécutives (ce qui forme donc des groupes de données)

Je voudrais rechercher dans chaque groupe si il existe dans la colonne J la valeur "A.R"
dans ce cas, il faut rechercher si il existe dans le groupe la valeur "CED" ou "CYP" dans cette meme colonne
si elles n'existent pas je voudrais surligner la ligne "AR du groupe et afficher "Pas de CED" ou/et "pas de CYP" dans les colonne P et Q de cette ligne (le must serait en fait de pouvoir copier en plus ce groupe sur un autre feuille)

j'ai bibouillé un code en recherchant, a partir du moment ou il trouve un "AR", dans les 10 lignes au dessus et en dessous de la valeur (les groupes de données n'ayant jamais plus de 10 lignes)

Je mets en fichier joint ce que j'aimerais

je mets le code aussi pour ceux qui on compris ce que j'ai essayé d'expliquer :)
Code:
Sub ar()

Dim col As String
col = "I"

Dim serie As String

Dim conteurcyp As Integer

Dim conteurced As Integer


For i = 2 To [L65536].End(xlUp).Row
    conteurcyp = 0 ' on met les compteurs a 0
    conteurced = 0
       If Range(col & i) = "A.R" And Range(O & i) > 10 Then
       
            serie = Range(A & i) ' on seuille a 10ha et on stocke le nom de la serie
            For j = 1 To 10 'on regarde si dans les 10 lignes au dessus et en dessous si c'est la meme serie et si c'est le cas ,si on a du cyp on du ced; dans ce cas on rajoute au compteur
                        If Range(A & i - j) = serie And Range(col & i - j) = "CED" Then
                        conteurced = conteurced + 1
                        ElseIf Range(A & i - j) = serie And Range(col & i - j) = "CYP" Then
                        conteurcyp = conteurcyp + 1
                        ElseIf Range(A & i + j) = serie And Range(col & i + j) = "CED" Then
                        conteurced = conteurced + 1
                        ElseIf Range(A & i + j) = serie And Range(col & i + j) = "CYP" Then
                        conteurcyp = conteurcyp + 1
                        End If
                         
                        Next j
            If conteurcyp = 0 Then
            Range(P & i) = "Cypres absent de la serie" And Rows("i:i").Select
                                                                With Selection.Interior
                                                                    .ColorIndex = 8
                                                                    .Pattern = xlSolid
                                                                End With 'colorie la lg si pas de cyp
        
            ElseIf conteurced = 0 Then
            Range(Q & i) = "Cèdre absent de la serie" And Rows("i:i").Select
                                                              With Selection.Interior
                                                                  .ColorIndex = 8
                                                                  .Pattern = xlSolid
                                                              End With 'colorie la lg si pas de ced
        End If
       End If
Next i
End Sub
Merci de votre aide
AL
 

Pièces jointes

  • extrait_ser_30-22.xls
    35.5 KB · Affichages: 45
  • extrait_ser_30-22.xls
    35.5 KB · Affichages: 42
  • extrait_ser_30-22.xls
    35.5 KB · Affichages: 40

Discussions similaires

Réponses
7
Affichages
441

Statistiques des forums

Discussions
312 676
Messages
2 090 802
Membres
104 668
dernier inscrit
Mac-Breheny