LibreOffice Calc : transformer le contenu d'une cellule en plage [Résolu]

Signaler
Messages postés
11
Date d'inscription
samedi 12 juin 2021
Statut
Membre
Dernière intervention
29 juin 2021
-
Messages postés
54281
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
22 juillet 2021
-
Bonjour,

J'essaie de trouver une formule qui permette de réaliser l'action suivante :
Si "Préparateur 1" = "Anna", copier "Anna" dans chaque cellule de la plage D2:D13.
La difficulté réside dans le fait que la cellule B5, qui sert à indiquer dans quelle plage il faut coller les données, est variable. Elle résulte d'un calcul. Comment procéder, dans ce cas ?

Merci d'avance pour votre aide.

12 réponses

Messages postés
54281
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
22 juillet 2021
16 257
Bonjour.

Ou je n'ai pas compris, ou tu t'es mal expliqué ...
Mais il suffit d'écrire dans les cellules de la plage D2:D13 la formule
=$B$9
!

Je pense n'avoir rien compris, étant donné ta précision :
" la cellule B5, qui sert à indiquer dans quelle plage il faut coller les données " ...
Je ne vois en effet aucun rapport entre cette cellule et cette plage !
Messages postés
11
Date d'inscription
samedi 12 juin 2021
Statut
Membre
Dernière intervention
29 juin 2021

Tout d'abord, merci pour ta réponse.

Alors je reformule :

La cellule B3 indique la quantité de commandes que chaque préparateur doit gérer.
Les cellules B5 et suivantes précisent comment les commandes doivent être réparties entre les préparateurs.
B5 contient la formule suivante : ="D2:D"&(B3+1)

Le but recherché est que lorsque le résultat de la colonne B5 s'affiche, le nom du préparateur 1 (en l'occurrence Anna) s'inscrive automatiquement dans toutes les cellules que B5 indique. Dans notre exemple, B5 indique D2:D13, mais elle pourrait tout aussi bien afficher un autre résultat, puisque ce dernier dépend du nombre de commandes à gérer et du nombre de préparateurs présents.
Messages postés
54281
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
22 juillet 2021
16 257
Ah !
Tu comprends pourquoi nous demandons systématiquement aux demandeurs de joindre leur fichier ?
Cela nous permet de voir de quoi il s'agit, la structure du tableau et la logique des formules.
Une simple image inerte ne permet pas cette analyse.
 1) Tu vas dans https://www.cjoint.com/ 
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier (15 Mo maxi)
3) Tu défiles vers le bas pour cliquer sur le bouton bleu [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en gras ; tu fais un clic-droit dessus et tu choisis "Copier le lien"
5) Tu reviens dans ta discussion sur CCM, et dans ton message tu fais "Coller".
=>Voir la fiche https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
Il existe aussi :
1) https://mon-partage.fr/
2) https://www.transfernow.net/

Mais d'ores et déjà, je te préviens qu'il faut t'attendre à une solution par macro ... Pratiques-tu VBA ?
Messages postés
11
Date d'inscription
samedi 12 juin 2021
Statut
Membre
Dernière intervention
29 juin 2021

J'avais l'intention de joindre le fichier Calc à mon premier message, mais étant dans l'ignorance la plus totale de la façon d'y parvenir, j'avais dû me résoudre à n'envoyer qu'une image inerte. ;-)
Merci beaucoup pour l'explication, très claire.

https://www.cjoint.com/c/KFlxuogpHNZ

Eh bien non, je ne pratique pas VBA ! Je nourrissais l'espoir qu'une "simple" formule fît l'affaire. :-)
Messages postés
54281
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
22 juillet 2021
16 257
Pourrais-tu indiquer le nombre maximum de préparateurs disponibles, et si possible le nombre maximum de commandes à exécuter ?
Première suggestion : en B3 mettre la formule =ENT(B1/B2) pour le cas où B1 n'est pas un multiple de B2 ...
Bonjour,
Une suggestion, si j'ai bien compris.
Fait sur Excel xls, j'espère que vous pourrez l'ouvrir.
Cordialement.
https://cjoint.com/c/KFmeXy7vjPD
Retiré. Je comprends de moins en moins la logique et la finalité de ce tableau...
Messages postés
2511
Date d'inscription
vendredi 25 juillet 2014
Statut
Membre
Dernière intervention
11 juillet 2021
1 152
Bonjour
Une piste
en D2
=SI(LIGNE()<$B$3+1;INDIRECT("B"&9);INDIRECT("B"&10))

ne fonctionne que pour deux préparateurs si plus enchaîner les conditions
Messages postés
24137
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 juillet 2021
6 842
Bonjour à tous,

avec un nombre quelconque de préparateurs : https://www.cjoint.com/c/KFmkI13Jf0D

Mais c'est vraiment utile de lister les commandes ?
Indiquer juste leur n° pour chaque préparateur 1-12, puis 13-24 etc pourrait être suffisant non ?
eric

En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Messages postés
54281
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
22 juillet 2021
16 257
Bonjour LA_440.

J'aurais tendance à partager les réactions d'Eugène et d'Eric, que je salue amicalement.

Toutefois, comme je me suis battu pour trouver une solution, pas très élégante il est vrai, mais qui fonctionne sans macro, je la soumets quand même. Je pense d'ailleurs que nos amis pourront facilement l'améliorer, par exemple avec la fonction DECALER (que je ne manipule pas avec assez de dextérité) ...

Dans l'attente des réponses à mes questions du post #5, j'ai travaillé avec 47 commandes (volontairement un nombre premier) et 4 préparateurs.
  • Je calcule en B3 la quantité de commandes par préparateur =ARRONDI.SUP(B1/B2)
  • J'utilise la colonne C pour déterminer les limites de plage, que j'affiche ensuite en colonne B grâce à la formule =SI(C4>=$B$1;"";"D" &C5-$B$3+1& ":D"&MIN($B$1;C5))
  • Je peux alors trouver en colonne D le nom du préparateur pour chaque commande :

=SI(LIGNE()<=$C$5;B$17; SI(LIGNE()<=$C$6;B$18; SI(LIGNE()<=$C$7;B$19; SI(LIGNE()<=$C$8;B$20; B$21))))

https://www.cjoint.com/c/KFmobqC3DzQ
C'est bien, la retraite ! Surtout aux Antilles ... 
Raymond (INSA, AFPA)
Messages postés
11
Date d'inscription
samedi 12 juin 2021
Statut
Membre
Dernière intervention
29 juin 2021

Bonjour à tous, et merci, vraiment, pour votre implication !

Un immense merci à Raymond qui a trouvé une solution que j'oserai qualifier de grandiose ! Elle répond parfaitement à mes attentes. Et tout ça en moins de 16 heures !

Très astucieux le coup de la colonne C qui détermine les limites de plage ! Cette petite colonne rend inutile (et c'est très bien) tout le bloc A5:B14, qui n'avait pas d'autre rôle que d'énoncer la plage à sélectionner en colonne D pour chaque préparateur.

Le titre du sujet n'est donc plus adapté. Je voulais le rebaptiser "Remplir dynamiquement un tableau sans macro", mais il semble que je n'aie pas la possibilité de le faire...

Dans la mesure où le fichier que j'ai mis en ligne n'est qu'un fragment du vrai tableau (qui doit rester confidentiel), je comprends que la finalité de mon extrait de tableau ait pu vous paraître nébuleuse. Je butais depuis des jours sur la façon de remplir automatiquement le nom du préparateur en regard de chaque commande. Dans le vrai tableau, les commandes ont des numéros à 9 ou 10 chiffres, et elles ne sont pas forcément traitées par ordre numérique croissant (certains critères définissent un ordre de priorité), d'où la nécessaire présence de la colonne D.

Encore merci à tous !
Messages postés
24137
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 juillet 2021
6 842
Il me semble que ma proposition est plus simple mais bon, tu ne peux regarder toutes les réponses sans doute...
Messages postés
11
Date d'inscription
samedi 12 juin 2021
Statut
Membre
Dernière intervention
29 juin 2021

Je viens d'examiner chacune de vos propositions.

Effectivement Eric, ta solution fonctionne, lorsqu'on a restauré 2 paramètres essentiels : le nb de préparateurs en B2 et la division en B3.
La numérotation automatique des commandes était également une bonne idée, mais je n'y aurai pas recours, car les numéros de commande, dans le vrai tableau, sont importés d'un logiciel externe.

La "piste" proposée par yclik est en fait une "solution" qui fonctionne aussi très bien ! Il faut simplement modifier le signe "<" en "<=", puis comme il l'évoquait lui-même, étendre la formule à d'autres préparateurs.

La solution de Raymond avait l'avantage, disons, d'être "clés en main". :-)
Messages postés
54281
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
22 juillet 2021
16 257
Merci, LA_440.

Très heureux d'avoir pu trouver une solution qui te convienne.
Il est clair qu'un problème pas très évident, comme le tien, entraîne forcément plusieurs approches, parfois très différentes. Le choix entre ces diverses propositions dépend d'éléments humains (donc subjectifs) de la part du demandeur, autant que d'éléments techniques (donc objectifs) comme l'interférence avec un logiciel externe.
Alors conserve précieusement les autres pistes et propositions qui t'ont été faites ; tu ne sais pas si elles ne te seront pas utiles un jour ou l'autre !

Très cordialement.