Remplir une liste selon les choix 1 2 3

Re

qu elle est le chiffre correspondant à l'emplacement V et W ?

J est la plage correspondant pour le lundi par exemple à B14:T14.C'est là que se trouvent les activités proposées le lundi sur la feuille "repartition ..."

J.offset(0,20)

donne la cellule qu'on atteint quand, en partant de B14, on se déplace de 0 ligne (c'est à dire qu'on reste sur la même ligne),et de 20 colonnes, c'est à dire qu'on arrive à la colonne V.

J.offset(0,20).Column

donne le numéro de cette colonne, c'est à dire 22

DerCol = J.offset(0,20).Column 

me permet de donner à ma variable DerCol cette valeur

DerCol +1

donne le numéro de la colonne suivvante : W (23)

il y a une chose que je ne comprends pas, lorsque sur la feuille listing je fais un copier coller avec les colonnes A B C D (je ne touche pas aux colonnes e et F) et je modifie également les choix, lorsque je clique sur le bouton, j'ai seulement le lundi qui se repartit et les insatisfaits se note en H et I

mais je ne touche à rien d'autre?????

Là, je suis désolé mais je ne comprends pas ce que tu veux dire. Copier quoi ? pour coller où ?

Bye

Bonsoir,

que représente i et k ? je sais que J est les plages journalières pour la répartition (c'est bien cela)?!

Aussi j'ai ce message d'erreur lorsque je souhaite faire la répartition

" Col = J.Find(What:=NomChoix(Ln - 3, 2 + k), LookIn:=xlValues).Column "


1616092013-v1.xlsm (115.75 Ko)

Bonjour Laurence

Tu écris :

que représente i et k ? je sais que J est les plages journalières pour la répartition (c'est bien cela)?!

Pour i

i est une variable que j'utilise pour stocker dans une autre variable-tableau toutes les données de toutes les lignes du listing.

J'ai appelé NomChoix(x,y) cette variable tableau à 2 dimensions.

Les premières valeurs à stocker sont celles de la ligne du premier nom du listing, soit la ligne 3.

La première valeur à stocker de la première ligne est le nom. Il est à la colonne 4

Comme toute première valeur d'une variable tableau, celle de NomChoix est = NomChoix(0,0), donc, si i doit prendre toutes les valeurs des lignes de la liste des noms, il commencera à la valeur 3 et le premier nom sera stocké dans NomChoix(i-3,0) et vaudra donc la valeur de la cellule (i, 4)

Le prénom qui est sur la même ligne mais un colonne plus loin sera stocké dans :

NomChoix(i-3, 1) et vaudra cells(i, 5).valueLe premier choix du premier nom sera stocké dans NomChoix(i-3,2) en écrivant NomChoix(i-3,2) = cellule (i,8).value.

Grace à ce genre de variable, avec 16 instructions, on peut dans la présente macro stocker 14 données par lignes x 37 lignes soit 518 données facilement retrouvables !

Pour k

k sert à récupérer les données stockées dans la variable-tableau

Pour la première valeur des 4 plages de "Plages", celle du lundi dans la feuille "repartition..." on a k = 0

Ln représente le numéro de la ligne où se trouve le nom dans la liste de la feuille "Listing"

NomChoix(Ln-3, 2+k) pour le premier nom vaut : NomChoix(0, 2)

J'ai expliqué plus haut que NomChoix(0,0) = le nom de la 1° ligne du listing

NomChoix(0, 1) le prénom, NomChoix(0,2) le premier choix du premier nom

Et l'instruction complète :

Col = J.Find(What:=NomChoix(Ln - 3, 2 + k), LookIn:=xlValues).Column

permet de donner à Col le numéro de la colonne où se trouve le premier choix du nom de la ligne Ln (du listing) qui est cherché dans J (l'une des plages de "Plages")

A la fin de la boucle : For Each J in Plages juste avant Next J on a k = k + 3 Quand la macro parcourt la 2° boucle, le deuxième argument de NomChoix est incrémenté de 3.

Désormais, on aura NomChoix(0, 2+k) soit NomChoix(0, 5) c'est à dire le premier choix du mardi lu dans le listing.

Pour J

Tu as bien compris, J prend successivement les 4 valeurs de "Plages"

Tu écris encore :

Aussi j'ai ce message d'erreur lorsque je souhaite faire la répartition

" Col = J.Find(What:=NomChoix(Ln - 3, 2 + k), LookIn:=xlValues).Column "

Normal

La macro ne trouve pas le choix d'un nom lu dans le "Listing" dans la plage correspondante de la feuille "repartition".

Je vais essayer de mettre un message d'alerte pour traiter ce cas.

Re

Voilà la version avec message d'alerte.

1816092013-v2.xlsm (117.53 Ko)

Bonsoir,

pour l'erreur j'ai modifié la liste de choix, ça marche mieux maintenant....

Je viens de m'apercevoir d'un soucis important, lorsque je reviens sur mon listing après avoir fais une répartition, seulement les colonnes DEFG se remettent bien en ordre, toutes les autres ne correspondent plus à leur ligne initiale (feuille listing). c'est très embêtant car leur choix ne sont plus ceux qu'ils avait à l'origine ni leur classe et instit.

peux tu me dire où rectifier cela svp.


merci je vais voir de suite ton msg d'alerte

Bonsoir

Exact ! Deux instructions qui n'ont pas suivi l'évolution du document de départ.

Sheets(Listing).Select

Randomize

LnDerNom = Range("D" & Rows.Count).End(xlUp).Row

For i = 3 To LnDerNom

Cells(i, 6).Value = i - 2

Cells(i, 7).Value = Rnd()

Next i

'On classe les lignes selon les nbre aléatoires croissants

Worksheets(Listing).Sort.SortFields.Clear

Worksheets(Listing).Sort.SortFields.Add Key:=Range("G3"), _

SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With Worksheets(Listing).Sort

.SetRange Range("A3:S" & Range("E" & Rows.Count).End(xlUp).Row)

.Header = xlNo

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

Finalisation:

'Remise des noms dans l'ordre initial sur la feuille "CHOIX" (facultatif)

Worksheets(Listing).Sort.SortFields.Clear

Worksheets(Listing).Sort.SortFields.Add Key:=Range("F3"), _

SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With Worksheets(Listing).Sort

.SetRange Range("A3:S" & Range("E" & Rows.Count).End(xlUp).Row)

.Header = xlNo

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

Cela devrait aller mieux !

Bye !

super

j'ai encore un soucis par rapport aux noms des insatifaits qui ne se mettent pas dans les bonnes cellules,

Je cherche encore un peu toute seule et si je n'y arrive pas je te le dis. Ca ne te dérange pas ?

En tous cas, j'ai beaucoup appris, sur la macro et j'ai encore beaucoup à apprendre, mais j'y vois un peu plus clair....

Salut Laurence

Je cherche encore un peu toute seule et si je n'y arrive pas je te le dis. Ca ne te dérange pas ?

Mais pas du tout !

Juste un truc : si tu y arrives, dis-moi le aussi, je partagerai ton plaisir ....

Bye

bonsoir

difficile de correspondre ce soir, ca fait X fois que je réécris ce msg, internet coupe sans cesse


du coup ce sera des phrases courtes

premièrement j'arrive à réduire (donc à repérer dans la macro) le nombre de personnes limitées dans la répartition

maintenant je vais essayer de comprendre pourquoi certaines personnes n'apparaissent pas dans la répartition lorsque je l'exécute


pourquoi rien ne s affiche lorsque je demande par exemple =NB(B16:B33) ????

j'ai un gros soucis il y a des noms qui n'apparaissent pas dans le tableau de repartition, d'où cela peut venir?

il y a 10 disparu

Salut Laurence

Pour ce qui est de ta demande via NB(B16:B33), il faudrait voir comment tu utilises cette instruction.

Le plus simple serait de joindre ton fichier et j'essaierai de t'expliquer ensuite.Pareil pour tes disparus : les malheureux ! il faut les retrouver !

Je dois t'informer par ailleurs que je dois partir ce matin en voyage pour environ une semaine. Je ne pourrai donc reprendre nos échanges qu'à mon retour.

J'en suis désolé...

ok je te souhaite un très agréable voyage. j'attends un petit signe à ton retour, et je te dirais où j'en suis.

Bye bye

bonjour,

Tu as bon voyage?

Non je suis toujours avec mes "Lost" et ce n'est jamais les même... je ne comprends pas...

Bonjour Laurence

Très bon...

Et si tu veux un coup de main, je suis prêt à essayer de t'aider. Il te suffit de m'envoyer ton dernier document avec 2 mots d'explications (ou 3 peut-être...)

A te lire.

Bonsoir gmb????,

c'est avec plaisir que j'accepte ton aide encore une fois et d'autre fois encore par la suite, pour l'instant j'essai de comprendre et de retrouver les disparus dans ma répartition, je sais vraiment pas....

j'ai mis en dessous du jeudi (répartition) les disparus.... (dans les classeurs ci dessous) mais ce n'est jamais les même si tu refais un autre tirage.

je te souhaite une bonne nuit.

laurence

1929092013lost.xlsm (60.98 Ko)
1829092013lost2.xlsm (60.98 Ko)

Bonjour Laurence

Voici le document débugué.

Principale anomalie : la macro n'envisageait pas tous les cas de choix possibles. Elle traitait bien les cas des choix non exprimés (un nom avec aucun choix) mais pas les noms avec seulement le choix 1 ou sans le choix 3.

En complétant, on retrouve nos chers disparus : rassure-toi, ils sont sains et saufs !

A te lire.

Bye !

bonjour gmb, (Ton prénom serait plus simpa, non ?)

merci pour tout ce que tu fais.

je vais modifier sur mes tableaux d'origine et te teins au courant.

j'y travail toute la journée.

à plus tard.

laurence


Gmb, penses tu qu'il y ai un moyen de boquer la 1ere répartition puis dans le mois de rajouter des noms dans la liste et que ces nouveaux nom se rajoute à la premiere repart sans modifier celle ci....

je sais pas si je suis clair dans mon explication????

Bonjour Laurence

penses tu qu'il y ai un moyen de boquer la 1ere répartition puis dans le mois de rajouter des noms dans la liste et que ces nouveaux nom se rajoute à la premiere repart sans modifier celle ci....

Tes désirs sont des ordres...

A tester tout de même...

Ton prénom serait plus simpa, non ?

C'est bien parce que c'est toi !

A te lire

Guy

Trop fort Guy, c'est une passion ou ton métier ?

j'ai un soucis qui se pose, ça me note pour erreur lorsque je clic sur mon bonton répartition

Col = J.Find(What:=NomChoix(Ln - 3, 2 + k), LookIn:=xlValues).Column

j'ai verifié les choix dans le listing ils correspondent tous au tableau de choix...

j'ai remarqué que c'était à cause des noms qui s'affiche en X et Y 2 à 8 (répartition)

Peux tu me dire egalement si dans un tel cas (avec les indesirables) si dans ma macro je dois dire que ma plage J correspond pour le lundi de B14 à T ou U ou V ou W 14???? je m'y perd un peu a savoir si c'est la colonne des noms ou celle des prenom et si c'est J egale tous les choix ou J egale tous les choix + les indesirables???

Re bonjour Guy, (si tu as déja lu mon msg dans ta boite)

En début de macro tu notes :

Sub Répartir()

Application.ScreenUpdating = False

ReDim NomChoix(Range("D" & Rows.Count).End(xlUp).Row - 3, 14)

Que signifie : Application.ScreenUpdating = False

et pour : ReDim NomChoix(Range"D" & Rows.Count).End(xlup).Row - 3, 14)

je comprends que je donne la dimention de mes valeurs dans le tableau commençant à la colonne "D" et colonnes suivantes Jusqu'à la fin que je donne en ("Rows - 3, 14") 3eme ligne Colonne 14 en partant de la "D" ("D" = col n°1) Est ce bien cela ?

Rechercher des sujets similaires à "remplir liste choix"