[Excel] regroupement par 4 d'une liste
Bonjour à tous
Je m'en remet à vous pour essayer de résoudre un problème que je ne parviens pas à résoudre
Ne connaissant rien aux Macro et encore moins au VBA, je souhaite résoudre ce problème sans utiliser ces fonctions
Voilà le soucis. Depuis une liste de personnes (Maximum 50) je souhaite faire une regroupement par 4.
La liste peut varier de X personnes (de 3 à 50), il faut donc décomposer le nombre de personnes en multiple de 4 et de 3
Le tout doit s'afficher sur la même colonne, faire les regroupements et ce de manière automatique
Difficile de l'expliquer simplement. Pour vous aider à comprendre ce que je souhaite, voici ci-dessous, quelques exemples pour 50, 10, 9 et 17 personnes.
Le nombre, comme dit plus haut, peut varier
J'attends vos retours, et je vous en remercie par avance
Salut,
Comme tu ne souhaites pas de macro, je te propose une solution un peu ''tirée par les cheveux''. Il y a probablement plus simple, mais on ne se presse pas au portillon pour t'aider.
C'est dommage que tu n'acceptes pas les macros. C'est un peu comme si tu disais : je ne roule pas en voiture car je ne sais pas comment fonctionne le moteur
Cordialement.
Salut Tulipe,
J'espère que tu ailles bien, depuis le temps
Il me semble avoir vu un jour que tu t'étais mis aux macros et ça m'avais fait bien plaisir, ou est-ce que je me trompe ?
Au sujet de ce fil : j'ai par erreur récupéré un fichier contenant une macro pour un autre utilisateur (!!!) et mon fichier devait donc être ouvert sur ce fil en acceptant les macros. Je l’ai donc remplacé sur mon message par un fichier sans macro.
De ton côté, tu as récupéré mon fichier et tu as conservé les macros ! Il serait alors bien que tu échanges également ton fichier en enlevant cette maudite macro inutile.
Je n’ai pas compris que tu prétendes proposer une solution sans tableau monstrueux alors que mon usine à gaz est toujours en place ??
Amicalement.
Tulipe,
Avant tout merci pour le temps passé
Ton fichier fonctionne mais pas tout a fait comme je le souhaite.
Comme présenté dans l'exemple, le tables sont des tables de 4 et je souhaite remplir le maximum de table de 4 par 4 personnes et ensuite répartir les autres personnes par 3 (Pas de personnes seules ou de couples)
Dans ta présentation, j'avais réussi à mettre les valeurs à la suite (Comme tu le propose) mais dans la présentation finales sur les table de 3 personnes elles doivent être sur une table de 4 (Il manque le blanc requis : Regardes mes exemples)
Yvouille,
Merci également, mais ta solution finale présente le même problème que ce que propose Tulipe
J'avais réussi (de façon plus compliquée) à faire ce que vous proposez. Mais je ne parviens pas a faire sauter une ligne lorsque il y a 3 personnes sur une table de 4
Je ne sais pas si je me suis bien fait comprendre, idéalement il faut regarder mes exemples ci-dessus (Premier post)
Tulipe,
Avant tout merci pour le temps passé
Ton fichier fonctionne mais pas tout a fait comme je le souhaite.
Comme présenté dans l'exemple, le tables sont des tables de 4 et je souhaite remplir le maximum de table de 4 par 4 personnes et ensuite répartir les autres personnes par 3 (Pas de personnes seules ou de couples)
Dans ta présentation, j'avais réussi à mettre les valeurs à la suite (Comme tu le propose) mais dans la présentation finales sur les table de 3 personnes elles doivent être sur une table de 4 (Il manque le blanc requis : Regardes mes exemples)
Yvouille,
Merci également, mais ta solution finale présente le même problème que ce que propose Tulipe
J'avais réussi (de façon plus compliquée) à faire ce que vous proposez. Mais je ne parviens pas a faire sauter une ligne lorsque il y a 3 personnes sur une table de 4
Je ne sais pas si je me suis bien fait comprendre, idéalement il faut regarder mes exemples ci-dessus (Premier post)
ok mais dans ma formule , lors de la mise au point (façon de parler) j'ai limité à 31 , il conviendrait de remplacer ce 31 par nbval(la plage avec de $$ pur figer ou nommer ) mais c'est pas du sur
Salut Tulipe,
J'espère que tu ailles bien, depuis le temps
Il me semble avoir vu un jour que tu t'étais mis aux macros et ça m'avais fait bien plaisir, ou est-ce que je me trompe ?
Au sujet de ce fil : j'ai par erreur récupéré un fichier contenant une macro pour un autre utilisateur (!!!) et mon fichier devait donc être ouvert sur ce fil en acceptant les macros. Je l’ai donc remplacé sur mon message par un fichier sans macro.
De ton côté, tu as récupéré mon fichier et tu as conservé les macros ! Il serait alors bien que tu échanges également ton fichier en enlevant cette maudite macro inutile.
Je n’ai pas compris que tu prétendes proposer une solution sans tableau monstrueux alors que mon usine à gaz est toujours en place ??
Amicalement.
eh bien depuis que je n'ai plus mon xl 2007 ,,,, les fichiers xlm sont amputés des macro à l'ouverture ,, de plus ,nada de PQ ,, bref queudale ,une sombre histoire d'administrateur ,,,,, je n'y connais rien en installation ,poutant Jean Eric a eu l'amabilité de m'aider
mon XL ,c'est le pack office 365 Familial que j'ai payé plus de 100€
Bonjour,
@ Jeefreeze
Une solution par macro qui répond exactement à ta demande. A noter qu'il n'est pas possible de répartir 5 personnes.
@ Tulipe
Je n'ai pas tout compris de tes explications, mais je vois que tu n'as pas perdu ta verve
Merci Yvouille
Il est tard je regarderai ça demain... Mais macro bloquée sur mon PC par MicroSoft
Comment on déverrouille ? (J'ai pas trouvé le paramètre dans Excel)
Bonne soirée et merci
Nb : J'ai réussi en m'inspirant fortement du vos idées.... mais la macro je vais essayer de comprendre
Bonjour à tous
Une autre macro. Lancer directement la macro (ou bien dans le classeur joint, cliquer sur le bouton Hop!).
Le code à copier dans un module :
Sub Par4Par3()
Dim t, der&, nbr&, p4&, q3&, i&, j&, n&, k&, capa&, table&
Application.ScreenUpdating = False: Range("c2:d" & Rows.Count).Clear
der = Cells(Rows.Count, "a").End(xlUp).Row
If der = 2 Then MsgBox "Aucune répartition entre quadruplets et triplets n'est possible !", vbCritical: Exit Sub
t = Range("a2:a" & der)
For i = 0 To UBound(t)
If (UBound(t) - 3 * i) Mod 4 = 0 Then Exit For
Next i
q3 = i: p4 = (UBound(t) - 3 * i) / 4
If p4 < 0 Then MsgBox "Aucune répartition entre quadruplets et triplets n'est possible !", vbCritical: Exit Sub
capa = IIf(p4 = 0, 3, 4): table = 0: n = 1: k = 0
For i = 1 To p4
table = table + 1: n = n + 1: Cells(n, "c") = "table " & table
k = k + 1: Cells(n, "d") = t(k, 1)
k = k + 1: n = n + 1: Cells(n, "d") = t(k, 1)
k = k + 1: n = n + 1: Cells(n, "d") = t(k, 1)
k = k + 1: n = n + 1: Cells(n, "d") = t(k, 1)
Next i
For i = 1 To q3
table = table + 1: n = n + 1: Cells(n, "c") = "table " & table
k = k + 1: Cells(n, "d") = t(k, 1)
k = k + 1: n = n + 1: Cells(n, "d") = t(k, 1)
k = k + 1: n = n + 1: Cells(n, "d") = t(k, 1)
If capa = 4 Then n = n + 1
Next i
For i = 1 To (p4 + q3): For j = 7 To 10
Cells(2, "c").Offset(capa * (i - 1)).Resize(capa, 2).Borders(j).LineStyle = xlContinuous
Next j
Next i
Cells(2, "c").Resize(capa * (p4 + q3), 2).Interior.Color = vbWhite
End Sub
Bonjour,
@ Jeefreeze
Une solution par macro qui répond exactement à ta demande. A noter qu'il n'est pas possible de répartir 5 personnes.
@ Tulipe
Je n'ai pas tout compris de tes explications, mais je vois que tu n'as pas perdu ta verve
bonjour
eh bien ,tout simplement ,un administrateur interne à mon PC me bloque tout ,, je serai curieux de savoir y accéder pour lui botter le train
Bonjour,
@ Jeefreeze
Une solution par macro qui répond exactement à ta demande. A noter qu'il n'est pas possible de répartir 5 personnes.
@ Tulipe
Je n'ai pas tout compris de tes explications, mais je vois que tu n'as pas perdu ta verve
bonjour
eh bien ,tout simplement ,un administrateur interne à mon PC me bloque tout ,, je serai curieux de savoir y accéder pour lui botter le train
Un grand merci à tous, Tulipe, mafraise et Yvouille
Vous avez répondu parfaitement à mes attentes ... un grand merci à tous
Je n'ai strictement rien compris au code
A+