Re : planning et recapt
Bonjour,
pour les formules, il faudra demander aux experts; j'ai un niveau moyen en formule et vba moi...
j'ai commenté le code:
P.
Option Base 1 ' pour démarrer une recherche à 1 dans une array
Sub Tableau()
Dim Mat2 As Integer
Set WS1 = Sheets("planning") ' WS1 est plus court pour retrouver la feuille
Set Ws2 = Sheets("récapt")
Ws2.Range("A4:A40").ClearContents
Dim Choix() 'ARRAY
Choix = Array("Histoire", "Géographie", "Maths", "Français", "Anglais", "Lecture")
' je mets dans une array mes différentes matières
Ligne = 4 ' la 1ere ligne en Récap est 4
Dim mdate2 'mémoriser une date
Dim Diff As Integer ' différence entre la date mémorisée et la dte qui correspond à la cellule en cours
Dim mNom2 As String
mdate = WS1.Range("B4").Value ' je mémorise la date en B4 feuille planning
For Each C In Range("table") ' j'ai nommé TABLE la zone de planning (avec les couleurs)
' boucle sur chaque contenu de cette zone
mrow = C.Row ' ligne actuelle (qui va changer dans la boucle)
Mcol = C.Column ' colonne actuelle (qui va changer dans la boucle )
If Not C = "" And UCase(C.Value) = UCase("x") Then ' si pas vide et si "X" ds la cellule
mat = WS1.Cells(5, C.Column).Value ' memoriser la matière
mnom = WS1.Cells(mrow, 1).Value ' mémo du nom
Diff = WS1.Cells(4, C.Column).Value - mdate
If Diff <> 0 Then ' si la date départ <> de la cellule actuelle
Ligne = Ligne ' on garde la ligne de départ
Else 'sinon
Ligne = 4 'on revient à la ligne du début (4)
End If
If Not IsError(Application.Match(mat, Choix, 0)) Then
' si on trouve la matière en position 5 dans
' l'array "choix" , on en mémorise sa position avec mat2
' "lecture" est le 6e dans l'Array donc on mets le résultat
' dans la colonne 1 (col A de récap) + numéro de la position 6 = 7e colonne à l'arrivée
Mat2 = Application.Match(mat, Choix, 0) '
Ws2.Cells(Ligne + Diff, 1).Value = mdate + Diff
' la ligne d'arrivée est soit 4 (feuille récup) soit 4 + la différence trouvée plus haut
Ws2.Cells(Ligne + Diff, Mat2 + 1).Value = mnom 'sur cette ligne on y colle la matière mémorisée
End If
End If
Next
End Sub
' ceci est MON approche, il y a surement mieux et ça fige un peu les 2 feuilles, dans le
' sens où elles ne peuvent pas être déplacées, en tout cas pas l'arrivée
' d'autres ici feront certainement mieux