Repartir des valeurs Excel
Bonjour à tous et à toutes,
Je suis novice sur Excel et je ne connais pas l’ensemble de ce logiciel.
Je remercie à ce qui prennent un peu de leur temps pour m'expliquer comment on peut résoudre mon problème.
Voici l'exposer du problème,
Je dois créer un fichier permettant de se remplir automatiquement en fonction des valeurs rentrées.
En fonction de la valeur présente en E2,
J'aimerai faire apparaître exactement le même nombre de ligne. Par exemple, j'ai la valeur 62 en E2, j'ai 62 palettes qui s'affichent automatiquement. Si j'ai 130 en E2, j'ai 130 palettes qui s'affichent, etc..
J'ai trouvé une solution avec une macro en masquant certaines lignes (j'ai fait ça jusqu’à 100 (en feuille 2) mais celle-ci est trop lourde à mon gout):
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = 0
Rows("1:100").EntireRow.Hidden = False
If Range("C1").Value = "1" Then Rows("2:100").EntireRow.Hidden = True
If Range("C1").Value = "2" Then Rows("3:100").EntireRow.Hidden = True
If Range("C1").Value = "3" Then Rows("4:100").EntireRow.Hidden = True
If Range("C1").Value = "4" Then Rows("5:100").EntireRow.Hidden = True
If Range("C1").Value = "5" Then Rows("6:100").EntireRow.Hidden = True
If Range("C1").Value = "99" Then Rows("100:100").EntireRow.Hidden = True
Application.ScreenUpdating = -1
End Sub
Et la partie la plus complexe,
Je souhaite repartir ( de façon homogène) la valeur présente en I2 en fonction du nombre en E2 dans la colonne à partir de C9.
Je m'explique, ici, si j'ai 30 échantillons microbiologiques en I2 et 74 palettes en E2, j'aimerai repartir de façon homogène les 30 échantillons sur les 74 palettes.
Par contre si j'ai 20 palettes je dois répartir les 30 échantillons sur mes 20 palettes.
J'ai regardé partout sur google, mais je n'ai pas trouvé de solution.
Merci énormément pour vos retours
AM
Bonsoir,
Je ne comprends pas comment on peut ne pas prendre la peine de réfléchir un brin pour éviter d'écrire de tels codes !
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n%
If Target.Address = "$C$1" Then
n = Target
Application.ScreenUpdating = False
Me.Rows("1:100").Hidden = False
If n > 0 And n < 100 Then Me.Rows(n + 1 & ":100").Hidden = True
End If
End SubJe me suis limité aux 100 expliqués...
Quant à la 2e partie , rien compris à l'histoire... Si je finis par comprendre...
Cordialement.
Bonsoir,
Merci beaucoup de votre réponse Mr MFerrand,
je débute dans excel et les formules surtout macro sont complexes pour le moment à mes yeux.
J'ai essayé de rentrer votre code à la place du mien mais cela ne fonctionne pas
Lorsque je mets 10 dans la cellule C1(10 palettes), je n'ai pas 10 lignes numérotées de 1 à 10 qui s'affiche ou si je met 57 (57 palette), je n'ai pas 57 lignes numérotées de 1 à 57 qui s'affiche.
Pour la deuxième partie,
J'ai un nombre de 30 échantillons à repartir sur un nombre de palette créées. Par exemple, si j'ai 60 palettes à faire (une valeur que peut prendre C1 ), je dois repartir les 30 échantillons sur les 60 palettes de façon homogène.
Ici, cas simple 1 échantillon toutes les 2 palettes. Dans mon tableau feuille 1, une croix toutes les deux lignes dans la colonne microbiologie (à partir de C9). Une croix palette 1 puis une croix palette 3, puis une croix palette 5 etc...
Mais pour les cas les plus complexes, par exemple 71 palettes j'aimerais egalement repartir les 30 échantillons de façon homogène.
Meme exercice avec la cellule I3 (48 échantillons) mais dans la colonne DLUO.
Je me creuse la tète mais je n'y arrive pas
Mon entourage n'est pas plus doué que moi pour m'aider.
Bien cordialement
AM
Après plusieurs tentatives et lectures de cours sur le site, je n'arrive pas à suivre la logique de ce code et à le faire fonctionner sur ma feuille 1
Voilà pour le fichier en Feuil2, qui fonctionne...
Mais tu veux faire le même masquage en Feuil1 ? Sur quel nombre maxi ?
OK pour Microbiologie et DLUO... mais ce ne sera pas forcément régulier si ce n'est pas divisible...
Et les autres ?
bonsoir
aux plus simple
Sub test()
Cells.EntireRow.Hidden = False
Rows(Range("C1").Value + 1 & ":100").EntireRow.Hidden = True
End SubA+
Maurice
Merci beaucoup !
Je viens de le faire fonctionner juste avant votre reponse
Oui ma feuille 1 sera ma feuille principale après mise en forme pour le travail.
Ma feuille 2 était simplement une feuille de test pour macro.
Nous pouvons nous baser sur un nombre de 150.
J'ai appliqué le meme schema que vous pour la feuille 1. Le seul petit bémol c'est que je dois a chaque fois valider ma cellule E2 pour que la macro prenne la valeur en compte.
Ma cellule E2 n'est qu'une fonction arrondie supérieure à ma cellule D2 (qui est un calcul entre mes valeurs B3 B4 B5 B6). Lorsque je modifie l'une de ces 4 valeurs, ma cellule D2 change et par conséquent ma cellule E2. Or lorsque la valeur change automatiquement, la macro ne la prend pas en compte. Je dois aller dans la barre de fonction de E2 et revalider celle-ci (simplement en appuyant sur entrer) pour que le code fonctionne.
Pour la deuxième partie,
Oui seulement sur c'est deux là ( DLUO et MICROBIO
C'est la mon gros problème. SI ce n'est pas divisible, on peut prendre plus fréquemment un échantillon en début ou en fin de série pour ensuite retomber sur des prises d’échantillon regulieres.
Par exemple, si j'ai 137 palettes: 137/30= 4,566667
pour tomber sur un nombre divisible il faut monter jusqu’à 150/30 = 5
On pourrait avoir la distribution suivante: palette 1,2, puis toutes les 5 palettes (de 7 jusqu'a palette 132) puis finir par palette 136 et 137. Avec cette distribution obtient ainsi 30 échantillons dispersés sur 137 palettes
Palettes 1 2 7 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97 102 107 112 117 122 127 132 136 137
Echantillons 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
Si c'est possible de le faire en mettant des x dans le tableau c'est le paradis.
Je suis désolée d’être aussi énervante.
Je vous remercie infiniment pour le temps que vous m'accordez !
AM
Les cellules recalculées ne déclenchent pas l'évènement Change, il faut s'appuyer sur B3:B6, qui conditionnent le recalcul de E2. Et par ailleurs les changements en I2 et I3...
La partie proc. pour masquer adaptée aux cellules directrices du calcul. A vérifier que cela s'exécute bien toujours après recalcul...
Pour la suite je te propose un mode de calcul : on fait le ratio nb de palettes / nb échantillons (ou nb DLUO), ce qui définit un intervalle entre les x à mettre, on a donc autant d'intervalles de cette valeur entre les x (soit un nb d'intervalles au nb de x -1) et on répartit le dernier aux extrémités (en le divisant par deux).
J'ai fait une simulation par formule col. K et L (et x en J et M).
La formule c'est : ARRONDI((nbPal/nbEch)*{1,2,3,4...nbEch}-(nbPal/nbEch)/2;0) : les valeurs arrondies donnent les lignes où inscrire les x.
Même chose avec DLUO...
Vois si cela convient comme répartition. (Avant de la faire en VBA...)
Pour ce soir j'arrête...
Bonne nuit !
Bonjour,
Je reviens après quelques jours d'absence.
Merci énormément monsieur MFerrand, votre répartition fonctionne très bien et j'ai ainsi pu l'utiliser sur un autre document.
Concernant ce document, j'ai réalisé la mise en forme du document officiel. Mais les codes ne fonctionnent plus (apparition du nombre exacte de ligne en fonction du nombre de palette). Je soupçonne la fusion des cellules
Microbio
Nous avons une nouvelle règle concernant ce document:
Nous devons prendre au MINIMUM 30 échantillons.
Pour le moment, nous repartissons les 30 échantillons sur les 15 premières palettes (avec 3 boites pour la première palette en 400g) puis si nous avons plus de 30 palettes, nous prenons 1 boite par palette.
La répartition précédente ne fonctionne pas si on est en dessous de 15 palettes (nous avons quelques fois 0 échantillon sur la palette 1 en début de série). Il faut éviter que l'arrondi fasse 0 et imposer 1 échantillon tout en gardant l’homogénéité globale
Par exemple, comment repartir de façon homogène 30 échantillons sur 7 palettes?
Chimie
1 palette sur 2 + dernière palette
Puis 2 échantillons pour 400g et 1 pour 900g
On oublie la DLUO
Merci de votre compréhension et de votre analyse.
AM
Bonjour,
Désolé, j'ai dû m'absenter du Forum depuis mi-février...
Mais les codes ne fonctionnent plus (apparition du nombre exacte de ligne en fonction du nombre de palette)
Si, cela fonctionne, mais la proc. n'opère que jusqu'à la ligne 150 et la plage utilisée va jusqu'à 160... 10 lignes échappent, il faudrait mettre en adéquation.
Pour les répartitions, cela ne me paraît pas très clair, d'autant que j'ai un peu perdu le fil...
Cordialement.