Module de comparaison VBA sur un tableau

9boucle.xlsx (9.69 Ko)

Bonjour

cette fois c'est du Excel 2013 donc je dois faire uniquement du VBA

j'aurais besoin d'un code pour réaliser des boucles

dans le fichier boucle

Feuil1 : ensemble de donnée

Feuil2 : le préconisé

j'aimerais faire des boucles qui me disent :

pour toute les ligne de mon tableau Feuil1 a chaque fois que je trouve "entrainement préco" je fait la moyenne de la ligne que je compare avec la moyenne de la session planifier.

je fait la même chose pour "session planifier" que je compare avec "entrainement préco" Feuil2

enfin je met en évidence par des couleurs sur la première cellule de la ligne (maman, papa Etc)

- première comparaison

- si trop en rouge

- pas assez en jaune

- égal vert

pareil pour la deuxième comparaison

dans l'exemple ce sont des tableaux simple j'ai 500 ligne a faire

Bonjour

Ci joint ma solution

8boucle.xlsm (18.86 Ko)

A+ François

bonjour,

une proposition

edit : bonjour fanfan,

Sub aargh()
    Set ws1 = Sheets("feuil1") ' à adapter éventuellement
    Set ws2 = Sheets("feuil2") ' à adapter éventuellement
    dl1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row
    dl2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row
    dc1 = ws1.Cells(1, Columns.Count).End(xlToLeft).Column
    encours = ""
    For i = 1 To dl1
        nom = ws1.Cells(i, 1)
        typeex = ws1.Cells(i, 2)
        If encours <> nom Then
            moyennepr = ""
            moyennepl = ""
            encours = nom
        End If
        If typeex = "Entrainement préco" Then
            moyennepr = Application.Average(Range(ws1.Cells(i, 3), ws1.Cells(i, dc1)))
            ws1.Cells(i, 2).Interior.Color = xlNone
            If IsError(moyennepr) Then moyennepr = 0
            lpr = i
        ElseIf typeex = "session planifier" Then
            moyennepl = Application.Average(Range(ws1.Cells(i, 3), ws1.Cells(i, dc1)))
            ws1.Cells(i, 2).Interior.Color = xlNone
            If IsError(moyennepl) Then moyennepl = 0
            lpl = i
        End If
        If moyennepr <> "" And moyennepl <> "" Then
            If moyennepr > moyennepl Then
                ws1.Cells(lpr, 2).Interior.Color = vbRed
            ElseIf moyennepr = moyennepl Then
                ws1.Cells(lpr, 2).Interior.Color = vbGreen
            Else
                ws1.Cells(lpr, 2).Interior.Color = vbYellow
            End If
            Set re = ws2.Range("A1").Resize(dl2, 1).Find(nom, lookat:=xlWhole, LookIn:=xlValues)
            If re Is Nothing Then
                MsgBox nom & " non trouvé dans " & ws2.Name
            Else
                preco = re.Range("E1")
                If moyennepl > preco Then
                    ws1.Cells(lpl, 2).Interior.Color = vbRed
                ElseIf moyennepl = preco Then
                    ws1.Cells(lpl, 2).Interior.Color = vbGreen
                Else
                    ws1.Cells(lpl, 2).Interior.Color = vbYellow
                End If
            End If
        End If
    Next i
End Sub

merci h2so4 j'ai réussi a re-trailler ton code pour l'adapter top !

merci aussi a fanfan pour la réponse

Bonjour Messieurs,

dans ce fichier joint j'ai avancer un peu plus avec les boucles que vous aviez fournie (j'ai retravaillé la chose pour l'adapter)

Est-ce que vous auriez des solution pour ces point la.

pour faire une somme je dois faire un boucle ok. seulement je ne sais pas comment utiliser mon range pour cela.

le range que je pense avoir créer c'est la variable période qui est composé de deux dates de la ligne 2

1ex : 03/05/2021 -> date1 = période(1)

10/05/2021-> date2=période(2)

j'aimerais faire la somme de la ligne besoins et de la ligne planifier dans ce range.

autre point je n'arrive pas a récupérer toutes les dates est-ce que vous pensez que le format y est pour quelque chose ? avez vous une solution

Rechercher des sujets similaires à "module comparaison vba tableau"