Non c'est juste les copies écran des codes erreurs... c'est bien un fichier excel..
Version imprimable
Le fichier que tu envoies veut bien s'ouvrir avec Word mais pas Excel, donc je ne sais pas vérifier le déroulement de la macro.
Bonsoir Franc,
Désolée je n'avais pas compris ce que tu voulais dire... quoiqu'il en soit j'ai trouvé le motif des erreurs, en fait j'avais un onglet masqué qui ne reprenait pas la même trame que les autres. Donc maintenant CA MARCHE !! Tes 2 codes fonctionnent à merveille et je te remercie beaucoup !! j'ai juste la dernière ligne de titre "Congelé" qui n'apparait pas, j'ai essayé plusieurs choses mais je connais pas assez bien ces codes. Dis-moi si tu vois si tu as une idée... Mais je te remercie c'est déjà très bien.
Bonjour, j'ai fait quelques modifs et divers tests, ça m'a l'air bon.
Code:
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90 Sub CacherLignesVides() Application.ScreenUpdating = False 'Déclaration du tableau de titres Dim titles As Variant titles = Array(17, 26, 46, 76, 87, 99, 111, 118, 132, 146) 'Déclaration de la variable qui contient le numéro de ligne Dim NoLig As Long 'Déclaration de la variable qui indique si le numéro de ligne est dans le tableau Dim EstDansTableau As Boolean 'Déclaration de la variable qui indique si la rubrique a des prix Dim ADesPrix As Boolean 'Boucle sur les feuilles du classeur Dim sh As Worksheet For Each sh In ThisWorkbook.Worksheets 'Si le nom de la feuille n'est pas dans la liste des exceptions If sh.Name <> "GENERAL" And sh.Name <> "SEMAINE N-1" And sh.Name <> "VARIATION N+1" Then 'Boucle sur les lignes du tarif For NoLig = 17 To 150 'Initialisation de la variable EstDansTableau à False EstDansTableau = False 'Initialisation de la variable ADesPrix à False ADesPrix = False 'Boucle sur les valeurs du tableau Dim i As Variant Dim indice As Byte indice = 1 For Each i In titles ' Si le numéro de ligne est égal à une valeur du tableau ' c'est un titre et on vérifie si la rubrique a des prix If NoLig = i Then EstDansTableau = True 'Boucle sur les lignes suivantes jusqu'au prochain titre ou à la fin du tableau Dim j As Long For j = NoLig + 1 To 150 'On vérifie que le tableau titles n'est pas vide et que l'index indice est dans la plage du tableau If Not IsEmpty(titles) And indice <= UBound(titles) Then If j = titles(indice) Or j = 150 Then 'Si on atteint le prochain titre ou la fin du tableau, on sort de la boucle Exit For End If End If 'On précise la feuille sur laquelle on veut vérifier les prix non nuls dans les colonnes B ou C If sh.Cells(j, 2).Value <> 0 Or sh.Cells(j, 3).Value <> 0 Then 'Si on trouve des prix non nuls dans les colonnes B ou C, on met la variable ADesPrix à True et on sort de la boucle ADesPrix = True Exit For End If Next j Exit For End If indice = indice + 1 Next i ' Si ce n'est pas un titre et que B et C valent 0, alors on cache la ligne 'On précise la feuille sur laquelle on veut cacher la ligne If EstDansTableau = False And sh.Cells(NoLig, 2).Value = 0 And sh.Cells(NoLig, 3).Value = 0 Then sh.Rows(NoLig).Hidden = True ' Si c'est un titre et que la rubrique n'a pas de prix, alors on cache la ligne 'On précise la feuille sur laquelle on veut cacher la ligne ElseIf EstDansTableau = True And ADesPrix = False Then sh.Rows(NoLig).Hidden = True End If EstDansTableau = False Next NoLig End If Next sh Application.ScreenUpdating = True End Sub
Bonsoir Franc,
Je te remercie infiniment pour ton aide ton code marche impeccable, j'ai juste le soucis de le faire accepter le fichier sur le réseau qui me bloque les macros mais je verrais avec mon service de maintenance, mais en local il marche à merveille.
Merci encore !!