Bonjour Acheread,
désolé pour le très gros retard ; c'est juste que je viens de voir ton commentaire du
7 décembre qui est ci-dessus ; remarque : dans la liste des sujets, le nombre de
réponses augmente de 1 pour chaque nouvelle réponse, mais note qu'il n'y a pas
de compteur pour les commentaires ; on ne peut donc pas se rendre compte qu'il
y a un nouveau commentaire ; c'est pourquoi tu aurais mieux fait d'ajouter un post
en tant que réponse plutôt qu'en commentaire.
cependant, après une longue période depuis ma dernière intervention sur ton sujet,
je ne regarde plus le nombre de réponses dans la liste des sujets ; c'est par hasard
que j'ai de nouveau regardé ce présent sujet et vu ton commentaire ; aussi, dans
un tel cas où une longue période s'est écoulée, ce sera mieux (pour une prochaine
fois), de créer un nouveau sujet pour relancer (en notant une référence à l'ancien
sujet, avec la date de cet ancien sujet).
----------------------------------------------------------------------------------------------------------------
voici le nouveau fichier : https://www.cjoint.com/c/LLoh2JdL4R0
* à l'ouverture du fichier, tu es sur la 1ère feuille "Tableau récapitulatif".
* il y a en moins ces 2 colonnes : "NUMERO" et "CATEGORIE"
➯ 6 colonnes en tout, de A à F.
* fais Ctrl e ➯ travail effectué ; fais Ctrl F2 ➯ aperçu avant impression ;
j'ai remis un zoom de 100 % et ça tient en largeur sur une seule page.
* ça aurait fait pareil si tu avais fait Ctrl e à partir de la 2ème feuille
"Tableau de données".
* quand tu as besoin de réactualiser le tableau récapitulatif, refais Ctrl e ;
mais c'est inutile d'effacer avant les données de ce tableau : c'est fait
automatiquement par la macro.
* pour la 2ème feuille "Tableau de données" : aucune modification ;
donc sur cette feuille, il y a toujours la colonne A des numéros et
la colonne B des catégories.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
dans le précédent code VBA, il y avait : n = (i - 1) * 4 + 1
j'avais oublié de l'optimiser ; en effet, si on développe, ça fait :
n = 4 * i - 4 + 1 = 4 * i - 3
donc juste sous l'instruction For i = 1 To k il y a maintenant :
n = 4 * i - 3
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
dans le précédent code VBA, j'avais fait ceci pour l'adresse :
s = T1(n, 8) 'ADRESSE
T2(i, 3) = T1(n, 7) & IIf(s = "", "", " " & s) & " " & T1(n, 9)
mais finalement, c'est mieux de le faire ainsi :
s = T1(n, 7): If T1(n, 8) <> "" Then s = s & " " & T1(n, 8)
T2(i, 2) = s & " " & T1(n, 9)
le résultat sera identique, avec un seul espace après le numéro,
et s'il y a par exemple "Bis", un seul espace après ce "Bis".
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
voici le code VBA complet de Module1 (35 lignes) :
Option Explicit: Option Base 1
Sub ETR() 'Etablir le Tableau Récapitulatif
Application.ScreenUpdating = 0: Worksheets("Tableau de données").Select
Dim m&, n&: m = Rows.Count: n = Cells(m, 1).End(3).Row: If n < 5 Then Exit Sub
Dim T1, T2, k&: T1 = [A1].Resize(n, 9): k = n \ 4: ReDim T2(k, 6)
Worksheets("Tableau récapitulatif").Select
n = Cells(m, 1).End(3).Row: If n > 1 Then Range("A2:F" & n).Clear
Dim s$, p As Byte, i&, j&
For i = 1 To k
n = 4 * i - 3
T2(i, 1) = T1(n, 5) & " " & T1(n, 6) 'NOM PRENOM
s = T1(n, 7): If T1(n, 8) <> "" Then s = s & " " & T1(n, 8)
T2(i, 2) = s & " " & T1(n, 9)
For j = n To n + 3
s = T1(j, 3): s = Left$(s, 1) & Right$(s, 1)
Select Case s
Case "M1": p = 3 'MOIS 1
Case "N1": p = 4 'Nb p1
Case "M2": p = 5 'MOIS 2
Case "N2": p = 6 'Nb p2
End Select
T2(i, p) = T1(j, 4)
Next j
Next i
[A2].Resize(k, 6) = T2
With [A2].Resize(k, 6)
.Interior.Color = 15921906 'gris clair
For i = 7 To 11
If i <> 8 Then .Borders(i).LineStyle = 1
Next i
.Borders(12).LineStyle = 3
End With
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
je te laisse comparer les 2 codes VBA pour voir toutes les différences ;
bonne lecture ! au cas où tu as besoin d'une autre modif, n'hésite pas
à me demander. :)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
dans le post qui suit, j'ai proposé une autre version,
qui comporte une nouvelle optimisation.
rhodo