Bonjour,

Je débute en vba et je me suis lance dans un projet dont je ne vois pas le bout....
J'aimerais créer un bulletin scolaire automatisé mais qui ne contient pas de cotes mais une liste de competences acquises ou non.
J'ai listé toutes les competences et via une macro je peux cliquer sur les competences à retenir pour un certain élève et celle-ci devient verte (background de la cellule). Ensuite via une autre macro je vide les cellules non-vertes. Le problème arrive quand je dois supprimer les cellules vides et tout décaler vers le heut en gardant un semblant de coherence....

J'utilisais le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Sub Move_up()
'SAVOIR LIRE
 
Dim counter As Integer, i As Integer
 counter = 12
For i = 13 To 39
     If Cells(i, 1).Value <> "" Then
         Cells(counter + 1, 2).Value = Cells(i, 1).Value
         counter = counter + 1
     End If
Next i
 Range("A13:A39").Value = ""
 Range("A13:A39").Value = Range("B13:B39").Value
 Range("B13:B39") = ""
 
 Dim counter2 As Integer, ii As Integer
 counter2 = 12
For ii = 13 To 39
 
     If Cells(ii, 3).Value <> "" Then
         Cells(counter2 + 1, 4).Value = Cells(ii, 3).Value
         counter2 = counter2 + 1
     End If
Next ii
 Range("C13:C39").Value = ""
 Range("C13:C39").Value = Range("D13:D39").Value
 Range("D13:D39") = ""
 'supprime les lignes vides
 Range("a13:a39").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
 
'SAVOIR ECRIRE
Dim counterse As Integer, ise As Integer
 counterse = 40
For ise = 41 To 47
     If Cells(ise, 1).Value <> "" Then
         Cells(counterse + 1, 2).Value = Cells(ise, 1).Value
         counterse = counterse + 1
     End If
Next ise
 Range("A41:A47").Value = ""
 Range("A41:A47").Value = Range("B41:B47").Value
 Range("B41:B47") = ""
 
 Dim counter2se As Integer, iise As Integer
 counter2se = 40
For iise = 41 To 47
 
     If Cells(iise, 3).Value <> "" Then
         Cells(counter2se + 1, 4).Value = Cells(iise, 3).Value
         counter2se = counter2se + 1
     End If
Next iise
 Range("C41:C47").Value = ""
 Range("C41:C47").Value = Range("D41:D47").Value
 Range("D41:D47") = ""
 'supprime les lignes vides
 Range("a41:a47").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Et je le répètais pour chaque catégorie ('savoir lire, savoir écrire,etc...) le problème est que ça fonctionne pour la première catégrie puisque mon range est bien define mais ensuite une fois la macro lance les cellules se décalent et cela ne fonctionne plus pour les categories suivantes (puisque le range change..)

Je suis preneur de toute proposition.... bref : HELP

Je joins le fichier pour j'espère plus de clareté