Tableau à remplir avec des conditions sur des cell et lignes

Bonjour à tous!

Déjà je voudrais vous remercier pour le travail que vous faites sur ce site, cela fait un mois que je me suis mis au VBA et cela fait plus d'une fois que je trouve réponse à mes interrogations ici!

Justement, je me permets de poster car je ne trouve pas de réponse à ce problème qui me bloque depuis deux jours.

Dans le fichier joint, vous trouverez un onglet avec un nombre d'item à "ranger" dans des cellules. De C1 jusqu'à BI1, il y a le nombre maximum d'item que nous pouvons ranger par location. Je voudrais "ranger" la valeur située en B2 dans chaque cellule sans excéder la valeur max.

Une fois que l'item 2 est traitée, je voudrais ranger la ligne 3, en prenant en compte ce qui est déjà rangé en ligne 2.

De plus, une autre condition est que les références d'item doivent être dans des lignes séparés, (c'est à dire que je laisse une ligne partiellement vide).

L'ordre de priorité est que je range d'abord dans A1, puis A2... et ainsi de suite.

Dans la colonne non classé, je met l’excédent si jamais les blocs A, B , C, D, E ne sont pas suffisant pour ranger tous les articles.

J'espère avoir été suffisamment claire, si ce n'est pas le cas, je répondrai le plus rapidement possible à vos interrogations.

Je vous remercie par avance à toute l'aide que vous pouvez m'apporter!

Bonne soirée

Bonjour et bienvenue sur le forum

Tu devrais, sur une autre feuille montrer un exemple de ce que tu veux obtenir.

Bye !

Un essai à tester. Te convient-il ?

Bye !

Bonjour,

Je vous remercie énormément pour votre fichier. Cela faisait deux jours que je travaillais dessus sans résultats!

Il ne manque plus qu'une seule chose, deux items différents ne peuvent pas appartenir à une même ligne, donc:

lorsque qu'un article a été complétement rangé, on passe à l'item suivant ET on change de ligne à remplir.

Exemple:

Je range l'item 1 de la colonne A1 à B2, la colonne B2 reste partiellement vide (42 item rangé) et je passe du coup directement à la colonne d'après en B3 où je peux ranger mon item 2. Je ne dois pas remplir le reste de B2 par l'article 2.

J'ai essayé de modifier la macro afin d'effectuer ce changement mais je n'obtiens pas le résultat escompté, je suis partie de l'idée qu'il fallait modifier la taille du nouveau tableau afin de le faire commencer une colonne après, mais à chaque fois, je le fais finir une colonne après, mais pas commencer une colonne après.

Merci de ton aide!

Alice

AliceM a écrit :

Exemple: Je range l'item 1 de la colonne A1 à B2, la colonne B2 reste partiellement vide

Désolé mais je ne comprends pas.

A1 est une cellule, B2 aussi. Ce ne sont pas des colonnes....

Ce qu'il me faudrait, c'est voir ce que tu veux obtenir, même si le tableau n'est pas complètement rempli.

Bye !

Tu trouveras en pièce jointe un exemple sur la base du premier fichier. Si tu regardes les écritures en rouge, je pense que tu comprendras ce que je voulais dire.

Merci à toi,

Alice

bonjour,

Une solution :

Sub galopin()
Dim ArrD(3 To 62), ArrC(3 To 62), i, iR, cpt
For i = 3 To 62
   ArrD(i) = Cells(i)
Next
iR = 3
Do
   cpt = Cells(iR, 2).Value
   For i = 3 To 61
      ArrC(i) = IIf(cpt > ArrD(i), ArrD(i), cpt)
      cpt = cpt - ArrC(i)
      If cpt = 0 Then Exit For
   Next
   If cpt > 0 Then ArrC(62) = cpt
   Range(Cells(iR, 3), Cells(iR, 62)) = ArrC
   For i = 3 To 62
      ArrC(i) = ""
   Next
   iR = iR + 1
Loop While Cells(iR, 2) <> ""
End Sub

Bonjour,

Merci à toi Galopin, cependant ça ne correspond pas à ce que je recherche. Là, si je comprends bien, on rempli des colonnes alors que je voudrais remplir des lignes.

Ce que je veux c'est vraiment comme la première solution proposée, mais la seule différence c'est qu'à la ligne suivant on commence à remplir en laissant la ligne précédente partiellement vide, comme sur l'exemple que j'ai envoyé.

Merci en tout cas !

Alice

Tu as essayé ?

Bien entendu

Regarde le deuxième fichier que j'ai envoyé, je pense que tu verras pourquoi. La capité maximale est de 56 pour la colonne C, et par exemple ici, j'ai un total de 718 item.

Merci

Ah... Oui... Je vois !

Bonjour à tous

Nouvelle version.

Bye !

Bonjour,

La nouvelle version ne correspond toujours pas. Désolée d'insister....

Un grand merci par avance!

Alice

PS: Regardez le deuxieme fichier que j'ai envoyé, c'est vraiment le fait de ne pas utiliser entièrement la capacité maximale qui m'interesse

AliceM a écrit :

La nouvelle version ne correspond toujours pas.

Alors, il faut me dire en quoi elle ne correspond pas.

Regardez le deuxieme fichier que j'ai envoyé

Je l'ai fait et justement, je trouve qu'il ne respecte pas les consignes :

capture

Bye !

Bonjour,

Désolée pour le 62, c'est bien un 56 à prendre en compte. Comme sur la capture d'écran, ce qui m’intéresse ce sont les données en rouge, une ligne complétée.

J'ai complétement le tableau et j'y ai inséré différent commentaires pour être la plus claire possible.

Merci,

Alice

Bonjour,

Un bon exemple vaut mieux que de longues explications !

voir pièce jointe

A+

C'est exactement cela, merci beaucoup!!!

Alice

PS: A l'avenir je mettrais directement un exemple, c'était mon premier post.

Merci à vous deux pour votre patience!

Bonjour à tous

Ma nouvelle version.

Bye !

Bonjour,

Je viens de voir ta nouvelle version, très pratique avec un bouton, merci!

J'ai une nouvelle question. A présent, je voudrais ranger mes items de manière optimale où au lieu de remplir de manière linéaire, j'ajoute une fonction qui recherche où il serait le plus judicieux de ranger sans perdre trop d'espace de stockage.

Tout d'abord, pour faire cela, j'ai écrit un petit code afin de trier mes items du plus grand au plus petit afin que mes lignes qui soient occupés majoritairement soit celles avec la capacité maximale.

De plus, la partie que je n'arrive pas à développer, c'est que:

  • si ce qu'il reste à ranger d'un item est compris entre 0 et 30 alors il devra être rangé parmi le bloc E (qui s'étend de BD à BI)
  • si ce qu'il reste à ranger d'un item est compris entre 30 et 90 alors il devra être rangé parmi le bloc C ou D (AI à BC) avec en priorité la ligne AI puis AJ etc...

Ainsi, ce ne sera plus linéaire comme avant. Mon but est de diminuer les pertes de stockage par cette manière, même si deux références n'ont toujours pas le droit d'être stockés au même endroit (comme le problème initial).

Je joints un fichier exemple qui montre le rendu final dans le second onglet.

Merci par avance,

Alice

Des idées ?

Merci!

Rechercher des sujets similaires à "tableau remplir conditions lignes"