Bonjour à tous,
J'ai développé, pour l'un de mes utilisateurs, différentes petites macro pour un tableau que j'appelle "symétrique" (je sais pas le terme exact) de ce genre :
Le problème qui s'est posé à un moment est que l'utilisateur voulait supprimer des lignes (même pb quand il veut en rajouter). Exemple, virer "B" pour avoir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 - A B C E A x B C x E
La difficulté pour moi étant de supprimer B aussi bien en ligne qu'en colonne, et de déplacer le contenu du reste du fichier vers la gauche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 - A C E A x C E
Je vous joins un fichier exemple, ça sera surement plus parlant.
Ma macro, j'en suis consciente, est complètement pourrie, puisque je convertis un n° de ligne (tapé par l'utilisateur) en lettre de colonne, et ça devient compliqué quand la colonne a 2 lettres, d'où les multiples conditions.
Ceci à cause de mes faibles connaissances en vba... j'ai bidouillé comme j'ai pu.
Je me permets donc de vous la soumettre pour amélioration.
J'espère que c'est compréhensible.
Merci d'avance !
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 Sub Suppr_ligne() ligne = InputBox("N°de la ligne à supprimer ?") Rows(ligne + ":" + ligne).Select Selection.Delete Shift:=xlUp colonne = Chr(87 + ligne - 11) '(11 est le numéro de la ligne où apparait la 1e référence REF) If (87 + ligne - 11) > 90 Then If (87 + ligne - 11) < 117 Then lettre = Chr(87 + ligne - 11 - 26) Range("A" + lettre + "11:" + "A" + lettre + "2000").Select ElseIf (87 + ligne - 11) < 143 Then lettre = Chr(87 + ligne - 11 - 26 - 26) Range("B" + lettre + "11:" + "B" + lettre + "2000").Select ElseIf (87 + ligne - 11) < 169 Then lettre = Chr(87 + ligne - 11 - 26 - 26 - 26) Range("C" + lettre + "11:" + "C" + lettre + "2000").Select ElseIf (87 + ligne - 11) < 195 Then lettre = Chr(87 + ligne - 11 - 26 - 26 - 26 - 26) Range("D" + lettre + "11:" + "D" + lettre + "2000").Select ElseIf (87 + ligne - 11) < 221 Then lettre = Chr(87 + ligne - 11 - 26 - 26 - 26 - 26 - 26) Range("E" + lettre + "11:" + "E" + lettre + "2000").Select ElseIf (87 + ligne - 11) < 247 Then lettre = Chr(87 + ligne - 11 - 26 - 26 - 26 - 26 - 26 - 26) Range("F" + lettre + "11:" + "F" + lettre + "2000").Select ElseIf (87 + ligne - 11) < 273 Then lettre = Chr(87 + ligne - 11 - 26 - 26 - 26 - 26 - 26 - 26 - 26) Range("G" + lettre + "11:" + "G" + lettre + "2000").Select ElseIf (87 + ligne - 11) < 299 Then lettre = Chr(87 + ligne - 11 - 26 - 26 - 26 - 26 - 26 - 26 - 26 - 26) Range("H" + lettre + "11:" + "H" + lettre + "2000").Select End If Else Range(colonne + "11:" + colonne + "639").Select End If Worksheets("Liste et codes").Cells(1, 4) = ligne Worksheets("Liste et codes").Cells(1, 5) = colonne Selection.Delete Shift:=xlToLeft Cells(ligne, 1).Select End Sub
Partager