Tu as lancé la macro sur le fichier que je t'ai adressé ?
Version imprimable
Tu as lancé la macro sur le fichier que je t'ai adressé ?
oui....fallait pas??
Ok, j'ai vu. C'est cette ligne qui pose problème
Une fois sur 10, elle donne le bon N° de ligne, mais 9 fois sur 10, elle donne 1. Je ne comprends pas pourquoi mais on va changer ça.Code:DerniereLigne = Range("A65535").End(xlUp).Row
En tête de macro, mets derniereligne en remarque, corrige la ligne For i = 1 to derniereligne et ajoute la ligne en bleu entre For et le premier select. Ce qui donne
Cela corrige le phénomène.Code:
1
2
3
4
5
6 Dim DerniereLigne As Long, i As Long, NoLigne As Long, NoCol As Integer, j As Integer 'DerniereLigne = Range("A65535").End(xlUp).Row Worksheets("requete_ticket_horaire").Activate For i = 2 To 65536 If Trim(Cells(i, 1).Value) = "" Then Exit For Select Case Cells(i, 8).Value ' Début de Cells(i, 8).Value Like "SLI8T1"
Tu dis
A+
Edit
Et maintenant, il va falloir qu'on m'explique pourquoi
donne un résultat aléatoire 8OCitation:
DerniereLigne = Range("A65535").End(xlUp).Row
oui ca marche^^me reste plus qu'a copier pour finir le tableau et j'en aurais enfin fini xD (pourrais tu juste m'explique un peu comment ca marche???parce que je comprend le debut mais je comprend pas le calcul :( )
sinon MERCI bcp!!!!:king:
T'expliquer ?
Tu contrôles 4 paramètres
Tous tes résultats dépendent du premier paramètre
On commence donc par vérifier le paramètre SLI8T1. S'il n'y est pas, on sort de la boucle sinon on continue avec le second paramètre
Ce second est Cells(i, 15).Value qui peut prendre 6 valeurs
S'il ne correspond pas à l'une de ces valeurs, on sort de la boucle
S'il correspond, on continue avec le troisième paramètre
Ce 3ème paramètre est Cells(i, 16) qui peut prendre 24 valeurs
S'il ne correspond pas à l'une de ces valeurs, on sort de la boucle
S'il correspond, on continue avec le quatrième paramètre qui ne peut prendre qu'une valeur
S'il ne correspond pas, on sort de la boucle
S'il correspond, on incrémente le compteur correspondant à cette combinaison de valeurs Paramètre 1 + P2 + P3 + P4
Pour chaque combinaison tu as un compteur et comme tu as au total 120 conditions, ce compteur va de 1 à 120
Les select case permettent de n'examiner qu'un ensemble de conditions par ligne et non de continuer à vérifier quand une des conditions n'est pas remplie. 1 au lieu de 120 par ligne (!)
Le classement des combinaisons : Je les ai classées dans l'ordre que tu avais dans ton code, on restitue les valeurs du tableau de compteur dans le même ordre que dans ton code pour les placer dans ta feuille.
S'il y a un pb, il vient de là.
Pour la restitution dans la feuille, tu as 24 h que tu remplis de la ligne 3 à 26
Or le tableau de valeurs a une taille de 120
Il faut épuiser ces 120 valeurs pour les placer dans 24 colonnes
Je remplis donc ces 24 colonnes et quand j'arrive au bout, je passe à la ligne suivante. Ce qui me semble très aléatoire. Mais je n'avais pas d'indication sur ce qu'il fallait faire et ne suis pas sûr du tout d'avoir fait ce qu'il faut.
S'il y a quelque chose à corriger, ce sera ici. Ça m'étonnerait que le résultat soit bon mais je n'ai pas pu te joindre quand je l'ai fait. C'est pourquoi je t'ai demandé de vérifier les résultats. Tu lances ton code en parallèle et tu vérifies. Si tu me donnes des indications sur la colonne à remplir, je peux t'aider. Il est possible que tu aies à ajouter une ligne par condition remplie.
Tu dis
Edit
En fait, le raisonnement à tenir pour indiquer ce qu'il faut faire est : Quel paramètre indique les heures... J'opte pour Cells(i, 16).value
Dans ce cas, c'est tout simple. Il faut ajouter un tableau(120) qui indique la colonne NoCol deviendra alors NoCol(i) = Cells(i, 16).value
Si c'est ça, pour la restitution on utilisera ce tableau pour placer la valeur de nomb(i) mais toutes les 24 colonnes, on passera à la ligne suivante.
Donne ton avis ;)
xD je serais pas arrive a faire ca moi.....en tout cas pour le moment tout semble marche comme il faut^^:yaisse2:
J'en doute :cry: Ma façon de remplir les lignes me semble des plus aléatoires...
Tu as vérifié quelques données ?
arf effectivement les donnés ne sont pas bonnes xD:(
c'est pas ok rien que la premiere ligne n'est pas ok^^
9H00 du premier jour : K6 : 13
alors que manuellement ca donne 2!!!
J'ai fait un peu de ménage en supprimant quelques posts, ça tient moins de place et j'an ai besoin ;)
Rapide et efficace (je parle du code, hi hi)
J'ai les mêmes résultats que dans le précédent que j'ai testé mais beaucoup plus vite et je n'ai même plus besoin de tableau.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 Option Explicit Sub trierTer() Dim ok As Boolean Dim DerniereLigne As Long, i As Long, NoLigne As Long, NoCol As Integer, j As Integer 'DerniereLigne = Range("A65535").End(xlUp).Row Application.ScreenUpdating = False For i = 2 To 65536 'Debug.Print i Worksheets("requete_ticket_horaire").Activate If Trim(Cells(i, 1).Value) = "" Then Exit For Select Case Cells(i, 8).Value ' Début de Cells(i, 8).Value Like "SLI8T1" Case "SLI8T1" ' si ce n'est pas ça, on passe à i suivant Select Case Cells(i, 16).Value ' Début de Cells(i, 16) Case "1" If Cells(i, 12).Value = "0" Then ok = True NoCol = 1 End If Case "2" If Cells(i, 12).Value = "0" Then ok = True NoCol = 2 End If Case 3 If Cells(i, 12).Value = "0" Then ok = True NoCol = 3 End If Case 4 If Cells(i, 12).Value = "0" Then ok = True NoCol = 4 End If Case 5 If Cells(i, 12).Value = "0" Then ok = True NoCol = 5 End If Case 6 If Cells(i, 12).Value = "0" Then ok = True NoCol = 6 End If Case 7 If Cells(i, 12).Value = "0" Then ok = True NoCol = 7 End If Case 8 If Cells(i, 12).Value = "0" Then ok = True NoCol = 8 End If Case 9 If Cells(i, 12).Value = "0" Then ok = True NoCol = 9 End If Case 10 If Cells(i, 12).Value = "0" Then ok = True NoCol = 10 End If Case 11 If Cells(i, 12).Value = "0" Then ok = True NoCol = 11 End If Case 12 If Cells(i, 12).Value = "0" Then ok = True NoCol = 12 End If Case 13 If Cells(i, 12).Value = "0" Then ok = True NoCol = 13 End If Case 14 If Cells(i, 12).Value = "0" Then ok = True NoCol = 14 End If Case 15 If Cells(i, 12).Value = "0" Then ok = True NoCol = 15 End If Case 16 If Cells(i, 12).Value = "0" Then ok = True NoCol = 16 End If Case 17 If Cells(i, 12).Value = "0" Then ok = True NoCol = 17 End If Case 18 If Cells(i, 12).Value = "0" Then ok = True NoCol = 18 End If Case 19 If Cells(i, 12).Value = "0" Then ok = True NoCol = 19 End If Case 20 If Cells(i, 12).Value = "0" Then ok = True NoCol = 20 End If Case 21 If Cells(i, 12).Value = "0" Then ok = True NoCol = 21 End If Case 22 If Cells(i, 12).Value = "0" Then ok = True NoCol = 22 End If Case 23 If Cells(i, 12).Value = "0" Then ok = True NoCol = 23 End If Case 24 If Cells(i, 12).Value = "0" Then ok = True NoCol = 24 End If Case Else End Select ' Fin de Cells(i, 16) Case Else 'autre que SLI8T1 End Select 'Fin Cells(i, 8) = "SLI8T1" If ok Then If IsNumeric(Cells(i, 15).Value) Then NoLigne = Val(Cells(i, 15).Value) + 5 Worksheets("SLI8T1").Activate Cells(NoLigne, NoCol + 2).Value = Cells(NoLigne, NoCol + 2).Value + 1 ok = False NoCol = 0 End If End If Next Application.ScreenUpdating = True End Sub
Tu vérifies mais là, je crois que c'est ok
Pour vérifier, fais un tri multiple sur les colonnes concernées, SLI8T1, la date, 1 à 24 dans la colonne 16 et 0 dans la 15.
Ensuite, compte les lignes qui restent affichées.
Tu dis
A+
xD merci de me dire comment vérifié mdr je le savais pas mdr^^
sinon a part ce que je t ai dit en mp c'est ok
euhhh pb
incompatibilité!! :mur:Code:Cells(NoLigne, NoCol + 2).Value = Cells(NoLigne, NoCol + 2).Value + 1
Je viens de vérifier mon code et je ne comprends pas.
Un oeil nouveau, peut-être ?
NoCol et NoLigne sont respectivement déclarés comme integer et long et à moins que tu n'aies formaté tes colonnes de la feuille "SLI8T1" en texte, je ne vois pas.
Je n'ai pas ce pb de mon côté
Bon, là je me sauve
A+