Module de comparaison VBA sur un tableau
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,
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 Submerci 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