[Résolu] [Calc] retourner à la Matrice de tous les résultats
Modérateur : Vilains modOOs
Règles du forum
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 !
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] retourner à la Matrice de tous les résultats
Salutations ,
J'ai trouvé une macro qui renvoie le tableau de tous les résultats d'une recherche avancée dans la feuille de calcul 1 .
juste en dessous de la macro de lien indiquée, a une pièce jointe, a téléchargé le fichier de lien et l’a attaché ici dans mon sujet .
dans la feuille de travail 2, vous verrez le tableau des résultats présentés par la macro de lien actuelle .
sur la feuille de travail 3, est un exemple de la façon dont j'aimerais que les résultats soient présentés . (macro1)
les valeurs de la ligne 1 sont placées à l’avance par moi, puis la macro1 doit renvoyer les résultats sous la ligne 1 .
sur la feuille de travail 4, est un autre exemple de la façon dont j'aimerais que les résultats soient présentés . (macro2)
les valeurs de la colonne "A" sont placées à l’avance par moi, puis la macro2 doit renvoyer la matrice de résultats dans la colonne "B" .
en bref, il me faut deux macros, les macros 1 et 2 , qui renverront tous les résultats sans répétition , comme illustré dans les feuilles de calcul 3 et 4 du fichier joint .
J'ai trouvé une macro qui renvoie le tableau de tous les résultats d'une recherche avancée dans la feuille de calcul 1 .
juste en dessous de la macro de lien indiquée, a une pièce jointe, a téléchargé le fichier de lien et l’a attaché ici dans mon sujet .
dans la feuille de travail 2, vous verrez le tableau des résultats présentés par la macro de lien actuelle .
sur la feuille de travail 3, est un exemple de la façon dont j'aimerais que les résultats soient présentés . (macro1)
les valeurs de la ligne 1 sont placées à l’avance par moi, puis la macro1 doit renvoyer les résultats sous la ligne 1 .
sur la feuille de travail 4, est un autre exemple de la façon dont j'aimerais que les résultats soient présentés . (macro2)
les valeurs de la colonne "A" sont placées à l’avance par moi, puis la macro2 doit renvoyer la matrice de résultats dans la colonne "B" .
en bref, il me faut deux macros, les macros 1 et 2 , qui renverront tous les résultats sans répétition , comme illustré dans les feuilles de calcul 3 et 4 du fichier joint .
- Pièces jointes
-
- matrice de résultats.ods
- (11.96 Kio) Téléchargé 112 fois
Dernière modification par calcul le 15 mars 2019 20:01, modifié 1 fois.
LibreOffice 5.4.4.2 et Windows 7
- Hubert Lambert
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 09:26
Re: [Calc] retourner à la Matrice de tous les résultats
Bonjour,
Voici une proposition. Les deux macros sont en python, par commodité vu la nature du problème :
Cordialement.
Voici une proposition. Les deux macros sont en python, par commodité vu la nature du problème :
Code : Tout sélectionner
from operator import itemgetter
try:
from itertools import groupby, izip_longest
except ImportError:
from itertools import groupby, zip_longest as izip_longest
def tri_1(event=None):
doc = XSCRIPTCONTEXT.getDocument()
donnees = doc.NamedRanges.getByName("donnees").ReferredCells.DataArray
donnees = sorted(donnees, key=itemgetter(0))
groupes = {}
for entete, valeurs in groupby(donnees, itemgetter(0)):
groupes[entete] = sorted(v for k,v in set(valeurs))
STARTCOL = 1
STARTROW = 0
feuille3 = doc.Sheets.getByIndex(2)
choix = feuille3.getCellRangeByPosition(STARTCOL, STARTROW, STARTCOL+len(groupes)-1, STARTROW)
lignes = []
for c in choix.DataArray[0]:
try:
lignes.append(groupes[c])
except KeyError:
lignes.append([])
lignes = tuple(izip_longest(*lignes, fillvalue=''))
feuille3.getCellRangeByPosition(STARTCOL, STARTROW+1, STARTCOL+len(lignes[0])-1, 500).clearContents(31)
dest = feuille3.getCellRangeByPosition(STARTCOL, STARTROW+1, STARTCOL+len(lignes[0])-1, STARTROW+len(lignes))
dest.setDataArray(lignes)
def tri_2(event=None):
doc = XSCRIPTCONTEXT.getDocument()
donnees = doc.NamedRanges.getByName("donnees").ReferredCells.DataArray
donnees = sorted(donnees, key=itemgetter(0))
groupes = {}
for entete, valeurs in groupby(donnees, itemgetter(0)):
groupes[entete] = " / ".join('{:g}'.format(v) for k,v in sorted(set(valeurs)))
STARTCOL = 0
STARTROW = 1
feuille4 = doc.Sheets.getByIndex(3)
choix = feuille4.getCellRangeByPosition(STARTCOL, STARTROW, STARTCOL, STARTROW+len(groupes)-1)
lignes = []
for c in choix.DataArray:
try:
lignes.append((groupes[c[0]],))
except KeyError:
lignes.append(("",))
feuille4.getCellRangeByPosition(STARTCOL+1, 500, STARTCOL+1, 500)
dest = feuille4.getCellRangeByPosition(STARTCOL+1, STARTROW, STARTCOL+1, STARTROW+len(lignes)-1)
dest.setDataArray(tuple(lignes))
- Pièces jointes
-
- calcul.ods
- (15.72 Kio) Téléchargé 110 fois
Dernière modification par Hubert Lambert le 15 mars 2019 08:11, modifié 1 fois.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Re: [Calc] retourner à la Matrice de tous les résultats
salutations sr. Hubert Lambert ,
c'était très bien que vous ayez construit les macros en python, car je voulais depuis un certain temps comprendre la programmation python dans libreoffice .
le problème est que, jusqu'à aujourd'hui, je n'ai toujours pas réussi à faire fonctionner une macro python dans mes tests que j'ai essayé d'exécuter dans libreoffice .
j'ai donc téléchargé le fichier avec les macros python, mais cela n'a pas fonctionné pour moi .
est-ce que j’aurai peut-être besoin d’exécuter quelque chose dans mon libreoffice pour que les macros python fonctionnent ?
Je pense que je fais quelque chose de mal ou peut-être que je manque quelque chose que je n'ai pas fait .
suit deux images des erreurs, lorsque vous essayez d'exécuter les macros des feuilles de calcul 3 et 4, du fichier que vous avez joint .
ami câlin .
c'était très bien que vous ayez construit les macros en python, car je voulais depuis un certain temps comprendre la programmation python dans libreoffice .
le problème est que, jusqu'à aujourd'hui, je n'ai toujours pas réussi à faire fonctionner une macro python dans mes tests que j'ai essayé d'exécuter dans libreoffice .
j'ai donc téléchargé le fichier avec les macros python, mais cela n'a pas fonctionné pour moi .
est-ce que j’aurai peut-être besoin d’exécuter quelque chose dans mon libreoffice pour que les macros python fonctionnent ?
Je pense que je fais quelque chose de mal ou peut-être que je manque quelque chose que je n'ai pas fait .
suit deux images des erreurs, lorsque vous essayez d'exécuter les macros des feuilles de calcul 3 et 4, du fichier que vous avez joint .
ami câlin .
LibreOffice 5.4.4.2 et Windows 7
- Hubert Lambert
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 09:26
Re: [Calc] retourner à la Matrice de tous les résultats
En portugais, vraiment ?
Quoi qu'il en soit, j'étais persuadé d'avoir vu "OpenOffice" dans ta signature, et je n'avais pas testé sous LibreOffice.
J'ai mis à jour le code et le fichier dans mon précédent message.
Quoi qu'il en soit, j'étais persuadé d'avoir vu "OpenOffice" dans ta signature, et je n'avais pas testé sous LibreOffice.
J'ai mis à jour le code et le fichier dans mon précédent message.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Re: [Calc] retourner à la Matrice de tous les résultats
bonjour sr. Hubert Lambert ,
merci beaucoup, c'était super, cela a très bien fonctionné, félicitations pour votre programme .
mais où est le code python stocké dans votre post précédent ? Je n'ai pas trouvé le code python dans le fichier joint, je n'ai trouvé que le code Basic sub Main dans le module1 .
parce que je devrai adapter ce programme à mon fichier d'origine, je pense donc devoir placer votre code python quelque part dans le fichier d'origine, alors où vais-je placer le code python ?
si vous pouvez m'expliquer, je vous en suis très reconnaissant, car j'ai essayé d'exécuter à d'autres occasions d'autres codes python qui ne fonctionnaient pas, car je faisais quelque chose de mal .
Maintenant, avec votre précédent post et vos commentaires, j'ai commencé à mieux comprendre les conditions nécessaires, mais je ne sais toujours pas comment et où mettre le code python dans le fichier d'origine ?
Merci mon ami .
merci beaucoup, c'était super, cela a très bien fonctionné, félicitations pour votre programme .
mais où est le code python stocké dans votre post précédent ? Je n'ai pas trouvé le code python dans le fichier joint, je n'ai trouvé que le code Basic sub Main dans le module1 .
parce que je devrai adapter ce programme à mon fichier d'origine, je pense donc devoir placer votre code python quelque part dans le fichier d'origine, alors où vais-je placer le code python ?
si vous pouvez m'expliquer, je vous en suis très reconnaissant, car j'ai essayé d'exécuter à d'autres occasions d'autres codes python qui ne fonctionnaient pas, car je faisais quelque chose de mal .
Maintenant, avec votre précédent post et vos commentaires, j'ai commencé à mieux comprendre les conditions nécessaires, mais je ne sais toujours pas comment et où mettre le code python dans le fichier d'origine ?
Merci mon ami .
LibreOffice 5.4.4.2 et Windows 7
- Hubert Lambert
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 09:26
Re: [Calc] retourner à la Matrice de tous les résultats
3 choses :
- installe APSO (détails), qui facilite grandement l'accès aux scripts python (il n'y a pas d'éditeur intégré pour les macros en python);
- fais quelques essais à partir des macros de démonstration, situées dans "Macros LibreOffice", et lis ce fil et celui-ci;
- développe tes propres macros dans "Mes macros" et, seulement lorsqu'elles sont au point, embarque-les dans le document (APSO permet aussi de la faire très facilement).
Cordialement.
- installe APSO (détails), qui facilite grandement l'accès aux scripts python (il n'y a pas d'éditeur intégré pour les macros en python);
- fais quelques essais à partir des macros de démonstration, situées dans "Macros LibreOffice", et lis ce fil et celui-ci;
- développe tes propres macros dans "Mes macros" et, seulement lorsqu'elles sont au point, embarque-les dans le document (APSO permet aussi de la faire très facilement).
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
[Résolu] [Calc] retourner à la Matrice de tous les résultats
Merci beaucoup pour les conseils, je vais étudier les liens .
Si vous avez des questions, revenez avec un nouveau sujet .
ami câlin .
Si vous avez des questions, revenez avec un nouveau sujet .
ami câlin .
LibreOffice 5.4.4.2 et Windows 7