[Résolu][Calc] Combinaison

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu][Calc] Combinaison

Messagepar Philips » 13 Oct 2018 12:55

Bonjour,

Une image vaut mieux que de grands discours.

Image

Avez-vous une idée ?
Pièces jointes
excel.png
Libre office 5.3 sous Windows
Philips
Fraîchement OOthentifié
 
Message(s) : 2
Inscrit le : 13 Oct 2018 11:58

Re: [Calc] Combinaison

Messagepar micmac » 13 Oct 2018 13:03

Bonjour et bienvenue sur le forum,

< [Calc] Combinaison >
Le titre de votre question n'est pas assez explicite :

Lors d'une recherche, ce sujet risque de passer inaperçu et donc de ne pas aider d'autres personnes ayant le même problème que vous.

Ce titre doit synthétiser votre question et donner envie d'y répondre. Un titre clair et précis augmente vos chances d'obtenir des réponses plus rapidement. Des termes comme, aide, bogue, problème ou OpenOffice étant implicites, n'ont pas besoin d'être mentionnés, de même que macro en section éponyme.

Voici des astuces pour avoir un titre optimum : https://forum.openoffice.org/fr/forum/v ... 1002#p1002

Merci donc de le modifier au plus tôt. Si cela n'est pas fait avant votre prochain passage, le sujet sera verrouillé.

Dans votre signature il y a écrit: Libre office 5.3 sous Windows

Votre signature indique une version de OpenOffice qui n'est plus maintenue.
Est-ce une erreur, un oubli, un choix, une obligation ?
Dans ce dernier cas, mentionnez-le dans votre signature par "Obligation de version".

Pour connaître la version que vous possédez : https://forum.openoffice.org/fr/forum/v ... 582#p11582

Afin de profiter des dernières améliorations, il est fortement recommandé d'être à jour de la dernière version

Dans votre signature il est nécessaire d'indiquer :
1- La version exacte de AOO ou LibO (AOO 4.1.5, LibO 6.0.6 par exemple) ;
2- La version exacte du système d'exploitation (Windows XP SP3, Vista SP2, Windows 7 SP1, Win 8.1, Win 10, Ubuntu 18.04, MacOS 10.13.6 par exemple).
Accès direct à votre signature pour la corriger.

Cordialement.
Dans votre signature vous devez préciser la ou les versions exactes d'OpenOffice ou de LibreOffice et du ou des systèmes utilisés.
Exemple : AOO 4.1.6 (version imposée selon le cas) sous Win7 SP1, Win 8.1, Win 10, MacOS 10.14.2, Ubuntu 18.10...
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 5623
Inscrit le : 28 Août 2010 09:45

Re: [Calc] Combinaison

Messagepar Jean-Louis Cadeillan » 13 Oct 2018 16:10

Bonjour,
Tu peux régler cela avec la fonction INDEX(). Soit tab ta plage d'entrée (C3:E5 dans ton exemple)
Pour la première colonne (en B10 dans ton exemple):
Code : Tout sélectionner   AgrandirRéduire
=INDEX(tab;1;ENT((LIGNE(A1)-0,1)/9+1))
à recopier 26 fois vers le bas.
Pour la deuxième colonne (en C10 dans ton exemple):
Code : Tout sélectionner   AgrandirRéduire
=INDEX(tab;2;MOD(ENT((LIGNE(A7)-0,1)/3+1);3)+1)
à recopier 26 fois vers le bas.
Pour la troisième colonne (en D10 dans ton exemple):
Code : Tout sélectionner   AgrandirRéduire
=INDEX(tab;3;MOD(LIGNE(A3);3)+1)
à recopier 26 fois vers le bas.

Si tu ne veux pas avoir à recopier vers le bas, tu peux passer à des formules matricielles :
Pour la première colonne (en B10 dans ton exemple):
Code : Tout sélectionner   AgrandirRéduire
=INDEX(tab;1;ENT((LIGNE(A1:A27)-0,1)/9+1))
à valider par Ctrl+Maj+Entrée.
Pour la deuxième colonne (en C10 dans ton exemple):
Code : Tout sélectionner   AgrandirRéduire
=INDEX(tab;2;MOD(ENT((LIGNE(A7:A33)-0,1)/3+1);3)+1)
à valider par Ctrl+Maj+Entrée.
Pour la troisième colonne (en D10 dans ton exemple):
Code : Tout sélectionner   AgrandirRéduire
=INDEX(tab;3;MOD(LIGNE(A3:A29);3)+1)
à valider par Ctrl+Maj+Entrée.

Cordialement,
Jean-Louis
LibreOffice 6.1.5.2 (x64) et Apache OpenOffice 4.1.5, Windows 7 Édition Intégrale 64 SP1, Java (x64) 1.8.0_201 (Domicile)
LibreOffice 5.4.1.2 (x86) sous Linux Karoshi 5.0 (Ubuntu LTS 16.04.1, noyau 4.4.0-93) et Xfce 4.12, Java (x86) 1.8.0_131 (Travail)
Avatar de l’utilisateur
Jean-Louis Cadeillan
ManitOOu
ManitOOu
 
Message(s) : 4210
Inscrit le : 03 Jan 2009 00:56

Re: [Calc] Combinaison

Messagepar Philips » 13 Oct 2018 19:06

Super Jean-Louis ça marche. Merci pour ton aide !

Micmac, je vais mettre mon logiciel à jour et changer le titre.
Libre office 5.3 sous Windows
Philips
Fraîchement OOthentifié
 
Message(s) : 2
Inscrit le : 13 Oct 2018 11:58

Re: [Calc] Combinaison

Messagepar micmac » 13 Oct 2018 22:07

Philips a écrit:je vais mettre mon logiciel à jour et changer le titre

Sans oublier de déclarer le sujet comme résolu.
Comment clore un sujet correctement lorsqu'il est résolu
Dans votre signature vous devez préciser la ou les versions exactes d'OpenOffice ou de LibreOffice et du ou des systèmes utilisés.
Exemple : AOO 4.1.6 (version imposée selon le cas) sous Win7 SP1, Win 8.1, Win 10, MacOS 10.14.2, Ubuntu 18.10...
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 5623
Inscrit le : 28 Août 2010 09:45

Re: [Calc] Combinaison

Messagepar Churay » 14 Oct 2018 11:10

Yeap

J'adore toujours autant les formules de Jean-Louis, mais je n'ai pas changé : la question étant posée en section macro, on peut répondre aussi par macro...

Une première solution consiste à balayer les cellules pour les réécrire réordonnées comme souhaité :
Code : Tout sélectionner   AgrandirRéduire
Option Explicit

Sub Combi1
Dim oSheet AS Object
Dim iX AS Long, iY AS Long, iZ AS Long, nRow AS Long

   oSheet = thisComponent.CurrentController.ActiveSheet
   nRow = 9
   FOR iX = 2 TO 4
      FOR iY = 2 TO 4
         FOR iZ = 2 TO 4
            oSheet.getCellByPosition(1,nRow).Value = oSheet.getCellByPosition(iX,2).Value
            oSheet.getCellByPosition(2,nRow).Value = oSheet.getCellByPosition(iY,3).Value
            oSheet.getCellByPosition(3,nRow).Value = oSheet.getCellByPosition(iZ,4).Value
            nRow = nRow + 1
         NEXT iZ
      NEXT iY
   NEXT iX
End Sub


Une seconde version identique dans la logique mais plus rapide s'il y a un grand nombre de données, consiste à récupérer la plage de données dans un ARRAY, puis à balayer l'ARRAY pour les réécrire réordonnées comme souhaité.

Code : Tout sélectionner   AgrandirRéduire
Option Explicit

Sub Combi2
Dim oSheet AS Object, aDatas(8)
Dim iX AS Long, iY AS Long, iZ AS Long, nRow AS Long

   oSheet = thisComponent.CurrentController.ActiveSheet
   aDatas = oSheet.getCellRangeByName("C3:E5").DataArray
   nRow = 38
   
   FOR iX = 0 TO 2
      FOR iY = 0 TO 2
         FOR iZ = 0 TO 2
            oSheet.getCellByPosition(1,nRow).Value = aDatas(0)(iX)
            oSheet.getCellByPosition(2,nRow).Value = aDatas(1)(iY)
            oSheet.getCellByPosition(3,nRow).Value = aDatas(2)(iZ)
            nRow = nRow + 1
         NEXT iZ
      NEXT iY
   NEXT iX

End Sub
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
 
Message(s) : 2668
Inscrit le : 30 Avr 2009 05:54
Localisation : CATALUNYA

Re: [Calc] Combinaison

Messagepar gerardmarquer » 14 Nov 2018 17:07

Je suis plein d'admiration pour tous ceux qui semblent avoir compris en quoi consiste le problème posé !!!!

Pourquoi ce fil a-t-il été intitulé "Combinaison" ???

Cela a-t-il quelque chose à voir avec les "Permutations, Arrangements et Combinaisons" ou bien s'agit-il d'une combinaison en nylon transparent ???
"Si tu trouves que tes résultats ne sont pas à la hauteur de tes efforts, rappelle-toi que le grand chêne a un jour été un gland... comme toi !!!"

LibreOffice 6.0.6.2 sous Kubuntu 18.04
LibreOffice 5 sous un Windows 7
Avatar de l’utilisateur
gerardmarquer
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 92
Inscrit le : 26 Août 2014 22:23

Re: [Calc] Combinaison

Messagepar gerardmarquer » 15 Nov 2018 11:49

Mille excuses pour la stupidité de mon message précédent !!! Sans doute n'étais-je pas très bien réveillé !!!
Je viens de tout comprendre !!! Magnifique !!!
J'avais posé un problème semblable il y a quelque temps mais sans obtenir de réponses satisfaisantes !!!

Peut-être conviendrait-il de marquer ce fil [Résolu] !!!

La modération a écrit:Merci de ne pas poster plusieurs messages à la suite. Vous disposez d'un bouton Éditer en haut à droite de chaque message et d'un autre bouton ajout si vous désirez ajouter un complément lorsqu'il n'y a pas de réponse.
"Si tu trouves que tes résultats ne sont pas à la hauteur de tes efforts, rappelle-toi que le grand chêne a un jour été un gland... comme toi !!!"

LibreOffice 6.0.6.2 sous Kubuntu 18.04
LibreOffice 5 sous un Windows 7
Avatar de l’utilisateur
gerardmarquer
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 92
Inscrit le : 26 Août 2014 22:23


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Noonours et 4 invité(s)