[Résolu][Calc] Classement binomes par paire

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 !
anto80
NOOuvel adepte
NOOuvel adepte
Messages : 13
Inscription : 07 déc. 2016 10:51

[Résolu][Calc] Classement binomes par paire

Message par anto80 »

bonjour à tous, :alerte:
je suis nouveau sur ce forum, si je suis là c'est parceque j'aurai besoin d'un petit coup de main.
j'ai un tableur sur lequel je voudrais incorporer une image ( ca c'est bon jusque la j'y arrive :lol: ) mas je voudais assigner une macro a cette meme image.

ce que je recherche exactement:

-dans un premier temps rassembler les binomes par paire dans la collone binome
-puis ensuite faire un trie dans l'orde croissant des points par team et descroissant du poid total afin que le premier soit celui qui a le moins de poid et le plus de poid.

jespère que je mexplique clairement pour que vous puissiez comprendre.

je joint mon fichier cette macro doit etre sur la dernière page " classement général"

merci d'avance
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par micmac le 13 mars 2017 07:33, modifié 1 fois.
Raison : Balisage et verrouillage
openOffice 4.1.3 sous windows 10
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12228
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: probleme de classement auto

Message par Bidouille »

Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche. Avez-vous remarqué comment étaient les autres questions postées ?

Lisez ce fil pour savoir quelle balise utiliser : http://forum.openoffice.org/fr/forum/su ... html#27295

Un titre accrocheur vous permettra d'une part d'être aidé plus rapidement et d'autre part, d'enrichir notre base de connaissances.
"problème" est inutile puisque toutes les questions sur ce forum sont forcément des problèmes.

Nous l'avons fait pour vous cette fois-ci mais lors de votre prochaine question, nous vous remercions de le faire vous-même sous peine de voir votre sujet verrouillé.

Merci de votre collaboration.
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: [Calc] Classement binomes par paire

Message par jeanmi2403 »

Bonjour,
Avec toute cette mise en page et toutes ces cellules fusionnées, difficile de faire un travail simple par macro.
Il faudrait aussi un descriptif pas-à-pas de l'épreuve pour comprendre de quoi il s'agit.
Cordialement.
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
anto80
NOOuvel adepte
NOOuvel adepte
Messages : 13
Inscription : 07 déc. 2016 10:51

Re: [Calc] Classement binomes par paire

Message par anto80 »

bonjour jeanmi2403 que veux tu comme informations supplémentaire exactement?
openOffice 4.1.3 sous windows 10
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: [Calc] Classement binomes par paire

Message par jeanmi2403 »

Bonjour,
Je me suis penché plus sérieusement sur le truc, et je pense avoir compris qu'il s'agit d'un concours de pêche :tesfou:
Je n'avais pas compris
-dans un premier temps rassembler les binômes par paire dans la colonne binôme
Comme ils sont numérotés ça serait facile, mais pour éviter des extractions fastidieuses, ce serait mieux si le numéro était dans une autre cellule, quitte à concaténer das une autre pour avoir
"1 Machin Albert / Truc André"
Comme ils sont par paire bien identifiés, ce serait plus pratique s'il étaient sur la même ligne pour les additions, et ensuite pour faire un tri, car comme tes totaux sont dans cellules fusionnées, ça ne fonctionne pas si les cellules fusionnées sont formatées.
On a toujours tendance à faire une présentation mais il est plus simple d'avoir des feuilles brutes, quitte à recopier les données utiles dans une autre feuille mieux présentés pour les résultats finaux.

Tu devrais anonymiser ton fichier, je ne suis pas sûr que tous tes concurrents seraient ravis d'avoir leur nom sur internet....
Bonne soirée
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
anto80
NOOuvel adepte
NOOuvel adepte
Messages : 13
Inscription : 07 déc. 2016 10:51

Re: [Calc] Classement binomes par paire

Message par anto80 »

jeanmi2403 a écrit :Bonjour,
Je me suis penché plus sérieusement sur le truc, et je pense avoir compris qu'il s'agit d'un concours de pêche :tesfou:
Je n'avais pas compris
-dans un premier temps rassembler les binômes par paire dans la colonne binôme
Comme ils sont numérotés ça serait facile, mais pour éviter des extractions fastidieuses, ce serait mieux si le numéro était dans une autre cellule, quitte à concaténer das une autre pour avoir
"1 Machin Albert / Truc André"
Comme ils sont par paire bien identifiés, ce serait plus pratique s'il étaient sur la même ligne pour les additions, et ensuite pour faire un tri, car comme tes totaux sont dans cellules fusionnées, ça ne fonctionne pas si les cellules fusionnées sont formatées.
On a toujours tendance à faire une présentation mais il est plus simple d'avoir des feuilles brutes, quitte à recopier les données utiles dans une autre feuille mieux présentés pour les résultats finaux.

Tu devrais anonymiser ton fichier, je ne suis pas sûr que tous tes concurrents seraient ravis d'avoir leur nom sur internet....
Bonne soirée

je vois bien ce que tu veux dire pour ce qui est des lignes mais c'est beaucoup plus dure a gérer je trouve car la si tu as regardé sur la dernière page je prend toutes les infos sur les pages précédentes. :fou:
est ce que tu pense que si jamais on fais 2 macros ou 3 par exemple ce serait possible?

merci pour l'info des noms c'est une chose que j'ai pas pensé vu que les noms son sur un autre document
openOffice 4.1.3 sous windows 10
Avatar de l’utilisateur
CBresso
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 19 oct. 2012 09:24
Localisation : Toulouse

Re: [Calc] Classement binomes par paire

Message par CBresso »

Bonjour Anto80,
Avant de se lancer dans l'écriture de macro, est-il possible de modifier le tableau de présentation du classement général comme suit (si le classement par binôme n'est pas important):
 Ajout : D'ailleurs, avec un petit si on peut classer les binômes dans chaque équipe 
classement JRC 2017_V2.ods
De cette façon de présenter, plus de cellule fusionnée et le tri est possible.

Cordialement,
Christophe
 Ajout : Fichier anonymisé sauf le nom des équipes 
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par CBresso le 07 déc. 2016 18:33, modifié 1 fois.
LibreOffice 1:5.1.4-0ubuntu1
Ubuntu 16.04
Le plus difficile n'est pas de trouver la solution mais de formuler le problème
anto80
NOOuvel adepte
NOOuvel adepte
Messages : 13
Inscription : 07 déc. 2016 10:51

Re: [Calc] Classement binomes par paire

Message par anto80 »

CBresso a écrit :Bonjour Anto80,
Avant de se lancer dans l'écriture de macro, est-il possible de modifier le tableau de présentation du classement général comme suit (si le classement par binôme n'est pas important):
classement JRC 2017_V2.ods
De cette façon de présenter, plus de cellule fusionnée et le tri est possible.

Cordialement,
Christophe
bonjour christophe, merci de ta réponse, c'est vrais que ta solution me semble pas mal j'y avais bien pensé ( enfin quelque chose du genre lol ) mais le problème que j'ai rencontré sur cette idée c'est comment aller rechercher mes deux binomes 1 ( qui ne seront pas sur la même page )

après on peux toujours faire un classement par binome sur une autre page si besoin
openOffice 4.1.3 sous windows 10
Avatar de l’utilisateur
CBresso
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 19 oct. 2012 09:24
Localisation : Toulouse

Re: [Calc] Classement binomes par paire

Message par CBresso »

C'est l'idée.
Lors du tirage au sort tu affectes un binôme à un secteur ?
LibreOffice 1:5.1.4-0ubuntu1
Ubuntu 16.04
Le plus difficile n'est pas de trouver la solution mais de formuler le problème
anto80
NOOuvel adepte
NOOuvel adepte
Messages : 13
Inscription : 07 déc. 2016 10:51

Re: [Calc] Classement binomes par paire

Message par anto80 »

CBresso a écrit :C'est l'idée.
Lors du tirage au sort tu affectes un binôme à un secteur ?
voila en faite il y a 2 tirages le premier pour le secteur et le second pour le poste sur le secteur tiré auparavant
openOffice 4.1.3 sous windows 10
Avatar de l’utilisateur
CBresso
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 19 oct. 2012 09:24
Localisation : Toulouse

Re: [Calc] Classement binomes par paire

Message par CBresso »

Ok, mais si je comprend bien, une équipe n'est pas nécessairement sur le même secteur ?
LibreOffice 1:5.1.4-0ubuntu1
Ubuntu 16.04
Le plus difficile n'est pas de trouver la solution mais de formuler le problème
anto80
NOOuvel adepte
NOOuvel adepte
Messages : 13
Inscription : 07 déc. 2016 10:51

Re: [Calc] Classement binomes par paire

Message par anto80 »

CBresso a écrit :Ok, mais si je comprend bien, une équipe n'est pas nécessairement sur le même secteur ?
non du tout il peut y avoir le premier binome sur le secteur 1 et le second binome sur le secteur 6
openOffice 4.1.3 sous windows 10
Avatar de l’utilisateur
CBresso
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 19 oct. 2012 09:24
Localisation : Toulouse

Re: [Calc] Classement binomes par paire

Message par CBresso »

Deux autres questions
  • Que représente la colonne ordre de passage sur la feuille tirage au sort ?
  • Le tirage au sort peut-il être fait par l'ordinateur (une macro par exemple) ?
LibreOffice 1:5.1.4-0ubuntu1
Ubuntu 16.04
Le plus difficile n'est pas de trouver la solution mais de formuler le problème
anto80
NOOuvel adepte
NOOuvel adepte
Messages : 13
Inscription : 07 déc. 2016 10:51

Re: [Calc] Classement binomes par paire

Message par anto80 »

CBresso a écrit :Deux autres questions
  • Que représente la colonne ordre de passage sur la feuille tirage au sort ?
  • Le tirage au sort peut-il être fait par l'ordinateur (une macro par exemple) ?
la colonne ordre de passage c'est plus pour info pour l'organisation
le tirage au sort ne peux pas ce faire par ordinateur, les binome doivent tirer une boule devant tout le monde pour assurer aucune tricheries
openOffice 4.1.3 sous windows 10
anto80
NOOuvel adepte
NOOuvel adepte
Messages : 13
Inscription : 07 déc. 2016 10:51

Re: [Calc] Classement binomes par paire

Message par anto80 »

anto80 a écrit :
CBresso a écrit :Bonjour Anto80,
Avant de se lancer dans l'écriture de macro, est-il possible de modifier le tableau de présentation du classement général comme suit (si le classement par binôme n'est pas important):
classement JRC 2017_V2.ods
De cette façon de présenter, plus de cellule fusionnée et le tri est possible.

Cordialement,
Christophe
bonjour christophe, merci de ta réponse, c'est vrais que ta solution me semble pas mal j'y avais bien pensé ( enfin quelque chose du genre lol ) mais le problème que j'ai rencontré sur cette idée c'est comment aller rechercher mes deux binomes 1 ( qui ne seront pas sur la même page )

après on peux toujours faire un classement par binome sur une autre page si besoin
voila chrisophe j'ai suivi ton idée mais j'aurais besoin d'aide quand meme afin de facilité le classement, j'aurais a faire sur la page " classement individuel" une macro pour faire un ordre croissant des binomes et une autre macro sur la meme page pour faire un ordre croissant sur les points mais aussi descroissant sur les poids.

et sur la page classement équipe il faudrait que j'arrive a faire une macro pour classé en ordre croissant les points et descroissant les poids.

est ce que tu peux me dire comment écrire cette macro? je te met le doc modifié
merci d'avance
La modération vous a écrit: Pour répondre à un message, utilisez le bouton RÉPONDRE et non le bouton CITER ce qui évite de citer l'ensemble du message précédent rendant la lecture très difficile.

Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
openOffice 4.1.3 sous windows 10
Avatar de l’utilisateur
CBresso
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 19 oct. 2012 09:24
Localisation : Toulouse

Re: [Calc] Classement binomes par paire

Message par CBresso »

Voilà une première macro qui écrit chaque binôme dans les feuilles du secteurs où il aura l'immense plaisir de ramener de beaux poissons.

Code : Tout sélectionner

Sub affecte_binome_secteur
dim oDoc as object
dim fSecteur as object, fTirage as object
dim secteur%, nbBinomes%, i%, j%, poste%, nbSecteurs%, nbPostes%
dim binome$
oDoc = ThisComponent

fTirage = oDoc.Sheets.GetByName("tirage au sort")

nbBinomes= oDoc.Sheets.GetByName("liste des équipes").getCellByPosition(6,4).value
nbSecteurs= oDoc.Sheets.GetByName("liste des équipes").getCellByPosition(6,5).value

dim tabSecteurs(nbSecteurs,40) '40 postes max

' Ici on classe dans un tableau les binômes par secteur et par poste
for i = 0 to nbBinomes -1
	binome = fTirage.getCellByPosition(1,9+i).string
	secteur = fTirage.getCellByPosition(3,9+i).value
	poste = fTirage.getCellByPosition(4,9+i).value
	tabSecteurs(secteur,poste) = binome
	print tabSecteurs(secteur,poste)
next i
' maintenant on les écrit sur chaque feuille de secteur
for i = 1 to nbSecteurs
	fSecteur = oDoc.Sheets.getByName("secteur " & i)
	nbPostes = fSecteur.getCellByPosition(15,1).value
	
	'on boucle tous les postes
	for j = 1 to nbPostes
		fSecteur.getCellByPosition(4,j+9).string=tabSecteurs(i,j)
		fSecteur.getCellByPosition(5,j+9).value = j
	next j
next i
	
End Sub
Elle est affectée à un bouton sur la feuille "tirage au sort". Elle s'utilise donc après les tirages au sort. Il faut corriger deux noms de feuille ("liste des équipes" et "secteur 12") en supprimant les espaces inutiles à la fin.
J'utilise cette macro car je ne vois pas comment tu peux faire fonctionner les fonctions que tu utilises pour remplir les feuilles secteur.
classement JRC 2017_V2.1.ods
@anto80 Anonymise tes fichiers!!!

La suite : les classements :marto:
J'aimerai comprendre. moins tu as de points, meilleur est ton classement ET en cas d'égalité plus tu as de poids meilleur est ton classement, c'est ça ? Je n'y connais rien en concours de pêche.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 1:5.1.4-0ubuntu1
Ubuntu 16.04
Le plus difficile n'est pas de trouver la solution mais de formuler le problème
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: [Calc] Classement binomes par paire

Message par jeanmi2403 »

Bonjour,
Il y a aussi des liens vers d'autres fichiers, que le logiciel nous demande d'actualiser.
Que représentent-t-ils ?
Bonne journée
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
anto80
NOOuvel adepte
NOOuvel adepte
Messages : 13
Inscription : 07 déc. 2016 10:51

Re: [Calc] Classement binomes par paire

Message par anto80 »

le liens vers l'autre document me permet de rappeller les noms des participant car il y a une autre personne qui s'occupe des inscriptions donc comme ca il me renvoie ce fichier et le classement peut directement pomper les infos pas besoin de tout réecrire
openOffice 4.1.3 sous windows 10
anto80
NOOuvel adepte
NOOuvel adepte
Messages : 13
Inscription : 07 déc. 2016 10:51

Re: [Calc] Classement binomes par paire

Message par anto80 »


La modération vous a écrit: :alerte: Merci de ne pas poster plusieurs messages à la suite !
Si vous devez ajouter un complément d'information, le bouton "Editer" à la droite du message permet d'y remédier.

En attendant une prochaine réponse, vous pouvez participer également en répondant à d'autres questions sur notre forum.

ton idée pour placer les équipes dans leur secteurs respectif est vraiment sympa :bravo:
après pour les classements tu as bien compris le principe de classement :-)

perso vu que je n'arrive pas a faire de macro pour placer les binomes j'avais trouvé une astuce lol une fois le tirage fini je classe tout le tableau tirage aux sort secteur en croissant et poste en croissant aussi et je recupère sur les secteur les premières lignes pour le premier secteur les 20 suivante pour le deuxieme ainsi de suite lol c'est un peux casse tête mais à mon niveau j'étai deja content
openOffice 4.1.3 sous windows 10
anto80
NOOuvel adepte
NOOuvel adepte
Messages : 13
Inscription : 07 déc. 2016 10:51

Re: [Calc] Classement binomes par paire

Message par anto80 »


La modération vous a écrit: :alerte: Merci de ne pas poster plusieurs messages à la suite !
Si vous devez ajouter un complément d'information, le bouton "Editer" à la droite du message permet d'y remédier.

En attendant une prochaine réponse, vous pouvez participer également en répondant à d'autres questions sur notre forum.


je viens d'essayer ta macro après avoir enlevé tout les espaces dans les titres de page mais il me met un message d'erreur quand je clique.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
openOffice 4.1.3 sous windows 10
Avatar de l’utilisateur
CBresso
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 19 oct. 2012 09:24
Localisation : Toulouse

Re: [Calc] Classement binomes par paire

Message par CBresso »

Désolé, je ne peux pas t'aider sur cette erreur, elle ne vient pas du fichier que j'ai mis : aucune trace d'une macro trier_croissant

Deux conseils pour l'utilisation du forum :
  • Suit ce que t'indique la modération, il vont finir par s'énerver, on peut être nouvel utilisateur mais il faut quand même lire les remarques et les prendre en compte. Dans tes messages il y a un bouton éditer qui permet de rajouter des points à test messages précédents.
     Ajout : Ces points tu peux les encadrer avec la balise ajout 
  • Anonymise tes fichiers et les images que tu postes
    jeanmi2403 a écrit :Tu devrais anonymiser ton fichier, je ne suis pas sûr que tous tes concurrents seraient ravis d'avoir leur nom sur internet....
LibreOffice 1:5.1.4-0ubuntu1
Ubuntu 16.04
Le plus difficile n'est pas de trouver la solution mais de formuler le problème
Avatar de l’utilisateur
CBresso
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 19 oct. 2012 09:24
Localisation : Toulouse

Re: [Calc] Classement binomes par paire

Message par CBresso »

Bon, je sais qu'il ne faut pas poster à la suite d'un de ses propres messages mais là, y a beaucoup de changement.
J'ai exploré ce projet car le problème n'est pas juste un soucis avec une macro.
J'en ai profité pour explorer les UDT, les énumérations, que j'aurai bien aimé trier autrement qu'avec l'ordre alphabétique sur la clé mais bon j'ai fait avec (à ce propos si quelqu'un a une solution elle m'intéresse) et le tri (merci Hubert Lambert)
Voilà le code du projet "Un concours de pêche" :

Code : Tout sélectionner

REM  *****  BASIC  *****
type binome
	equipe$ 'nom de l'équipe
	nom$ ' nom du binome
	secteur% ' secteur affecté
	poste% 'poste affecté
	points# 'nb de points obtenus
	poids# 'poids atteint
end type

type equipe
	nom$ 'nom de l'équipe
	binomes as variant 'tableau des binômes (pour le moment il n'y en a que deux mais qui sait si un jour...)
	points% 'points totaux de l'équipe
	poids% 'poids total de l'équipe
end type

function creerBinome(team$,nam$)
	dim b as binome
	with b
		.equipe = team
		.nom = nam
	end with
	creerBinome = b
end Function

Function creerEquipe(nam$)
	dim eq as equipe
	eq.nom = nam
	creerEquipe=eq
end Function

Function ajouteBinome(Eq as equipe,Bi as binome)
	'Ajout un binôme à une équipe
	dim tabBinomes

	tabBinomes = Eq.binomes
	if Not(isArray(tabBinomes)) then 'tableau vide
		tabBinomes = array(bi)
	else
		redim Preserve tabBinomes(UBound(tabBinomes)+1)
		tabBinomes(UBound(tabBinomes))=bi
	end if
	Eq.binomes= tabBinomes
	ajoutBinome=Eq
end Function

Function getBinomes()

	'Récupère tous les binômes inscrits
	dim oDoc as object
	dim fInscription as object
	dim binomes as object, bino as object
	dim i%
	
	oDoc = ThisComponent
	fInscription = oDoc.Sheets.GetByName("liste des équipes")
	binomes = com.sun.star.container.EnumerableMap.create("string", "any")
	
	i=0
	Do While fInscription.getCellByPosition(2,5+i).string<>""
		' creerBinome(nomEquipe,nomBinome)
		bino=creerBinome(fInscription.getCellByPosition(1,5+i).string, fInscription.getCellByPosition(2,5+i).string) 
		binomes.put(bino.nom,bino)
		i=i+1
	loop
	
	getBinomes = binomes
	
end Function

Function getEquipes()

	'Récupère toutes les équipes inscrites
	dim oDoc as object
	dim fInscription as object
	dim equipes as object, eq as object
	dim binomes as object, bi as object, enu as object
	dim i%
	
	oDoc = ThisComponent
	fInscription = oDoc.Sheets.GetByName("liste des équipes")
	equipes = com.sun.star.container.EnumerableMap.create("string", "any")
	
	i=0
	Do While fInscription.getCellByPosition(1,5+i).string<>""
		eq=creerEquipe(fInscription.getCellByPosition(1,5+i).string)
		equipes.put(eq.nom,eq)
		i=i+1
	loop
	
	'maintenant au tour des binomes
	binomes = getResultats()
	
	'Ajoutons les aux équipes
	enu = binomes.createValueEnumeration(False)
	Do While enu.hasMoreElements
  		' Binôme suivant
    	bi = enu.nextElement
    	eq = equipes.get(bi.equipe)
    	ajouteBinome(eq,bi)
    	'là on peut mettre à jour les totaux par équipe
    	eq.points = eq.points + bi.points
    	eq.poids = eq.poids + bi.poids
    loop
    
    getEquipes = equipes

end Function

Function getSecteurs()
	'Récupère les secteurs et les postes de tous les binômes
	dim oDoc as object
	dim fTirage as object
	dim championnat as object,bino as object
	dim i%

	oDoc = ThisComponent
	fTirage = oDoc.Sheets.GetByName("tirage au sort")
	'Initialisation de la variable championnat 
	' et affectation des valeurs
	championnat = getBinomes()
	
	i=9
	Do While fTirage.getCellByPosition(2,i).string<>""
		bino = championnat.get(fTirage.getCellByPosition(2,i).string)
    	bino.secteur = fTirage.getCellByPosition(4,i).string
    	bino.poste = fTirage.getCellByPosition(5,i).string
    	i=i+1 
	loop
	
	getSecteurs = championnat
	
end Function

Sub setSecteur
	'Pourrait être un tirage aléatoire des secteurs et des postes
	'si un jour l'envie de changer arrive, ah! tradition quand tu nous tiens

end Sub

Sub setFeuilleTirage
	'Pour écrire les binômes inscrits sur la feuille tirage au sort
	dim oDoc as object
	dim fTirage as object
	dim championnat as object, enu as object, elem as object
	dim i%
	
	oDoc = ThisComponent
	fTirage = oDoc.Sheets.GetByName("tirage au sort")
	' On récupère tous les binômes inscrit sur la feuille liste des équipes
	championnat= getBinomes()
	' Bouclons tous les binômes du championnat
	' en créant une énumération cf : suprème de code open office forum
	enu = championnat.createValueEnumeration(False)
	i = 9
  	Do While enu.hasMoreElements
  		' Binôme suivant
    	elem = enu.nextElement
    	' On l'écrit sur la feuille tirage au sort
    	fTirage.getCellByPosition(1,i).string=elem.equipe
    	fTirage.getCellByPosition(2,i).string=elem.nom
    	i=i+1
    loop
end Sub

Sub setFeuilleInscription
	'Pour écrire les binômes inscrits sur la feuille liste des équipes
	
end Sub

Function getInscription(cheminDuFichierInscription)
	'Pour récupérer les équipes et binômes inscrits
	'cette macro à la place d'une fonction sur la feuille
	'genre c=input(nomDuFichier)
	'en enregistrant le fichier des inscriptions dans le même répertoire que le fichier du concours

end Function

Sub affecteBinomeSecteur
	dim oDoc as object
	dim fSecteur as object
	dim secteurs as object, enu as object, elem as object
	
	oDoc = ThisComponent
	
	'Initialisation de la variable championnat 
	' et affectation des valeurs
	secteurs = getSecteurs()
	
	' Bouclons tous les binômes du championnat
	' en créant une énumération cf : suprème de code open office forum
	enu = secteurs.createValueEnumeration(False)
	
  	Do While enu.hasMoreElements
    	elem = enu.nextElement
   	   	fSecteur = oDoc.Sheets.getByName("secteur " & elem.secteur)
		fSecteur.getCellByPosition(4,elem.poste+9).string = elem.nom
	Loop

End Sub

sub setResultats

	dim oDoc as object
	dim enu as object, elem as object, b
	dim resultats as object, equipes as object
	dim fResultIndiv as object, fResultEquipe as object, zone as object
	dim trieur
	dim resBinomes$, place%, ligneDeb%, nbBinomes%, nbEquipes%
	
	oDoc = ThisComponent
	fResultIndiv = oDoc.Sheets.getByName("classement individuel")
	fResultEquipe = oDoc.Sheets.getByName("classement général")
	
	' résultats des binômes
	resultats = getResultats()
		
	'Maintenant même chose pour les équipes
	equipes = getEquipes()
	
	
	'Reste à écrire tout ça sur les feuilles
	' Classement individuel
	enu = resultats.createValueEnumeration(False)
	place = 1
	ligneDeb = 9
	Do While enu.hasMoreElements
    	elem = enu.nextElement
    	fResultIndiv.getCellByPosition(0,place+ligneDeb).value=place
    	fResultIndiv.getCellByPosition(1,place+ligneDeb).string=elem.equipe
    	fResultIndiv.getCellByPosition(2,place+ligneDeb).string=elem.nom
    	fResultIndiv.getCellByPosition(3,place+ligneDeb).value=elem.points
    	fResultIndiv.getCellByPosition(4,place+ligneDeb).value=elem.poids
    	place = place+1
    loop
    nbBinomes = place-1
    'Et trier
    
    'Créer un descripteur pour le tri merci à Hubert Lambert
    trieur = fResultIndiv.createSortDescriptor()
    for each prop in trieur
        if prop.Name = "ContainsHeader" then
            prop.Value = True
        elseif prop.Name = "SortFields" then
            dim sortfield(1) as new com.sun.star.util.SortField
            sortfield(0).Field = 2    ' la colonne points
            sortfield(0).SortAscending = True
            sortfield(1).Field = 3    ' la colonne poids
            sortfield(1).SortAscending = False
            prop.Value = sortfield()
        end if
    next prop
    'La zone à trier
    zone = fResultIndiv.getCellRangeByPosition(1, ligneDeb, 4, nbBinomes + ligneDeb)
    zone.sort(trieur)
    
    'Classement par équipe
    enu = equipes.createValueEnumeration(False)
	place = 1
	ligneDeb = 9
	Do While enu.hasMoreElements
    	elem = enu.nextElement
    	fResultEquipe.getCellByPosition(0,place+ligneDeb).value=place
    	fResultEquipe.getCellByPosition(1,place+ligneDeb).string=elem.nom
    	resBinomes=""
    	for each b in elem.binomes
    		resBinomes = resBinomes & b.nom & " : " & b.points & " points " & b.poids & " kg" & chr(10)
    	next b
    	fResultEquipe.getCellByPosition(2,place+ligneDeb).string=resBinomes
    	fResultEquipe.getCellByPosition(3,place+ligneDeb).value=elem.points
    	fResultEquipe.getCellByPosition(4,place+ligneDeb).value=elem.poids
    	place = place+1
    loop
    nbEquipes= place-1
    'Et trier
    
    'Créer un descripteur pour le tri merci à Hubert Lambert
    trieur = fResultEquipe.createSortDescriptor()
    for each prop in trieur
        if prop.Name = "ContainsHeader" then
            prop.Value = True
        elseif prop.Name = "SortFields" then
            dim sortchamp(1) as new com.sun.star.util.SortField
            sortchamp(0).Field = 2    ' la colonne points
            sortchamp(0).SortAscending = True
            sortchamp(1).Field = 3    ' la colonne poids
            sortchamp(1).SortAscending = False
            prop.Value = sortchamp()
        end if
    next prop
    'La zone à trier
    zone = fResultEquipe.getCellRangeByPosition(1, ligneDeb, 4, nbEquipes + ligneDeb)
    zone.sort(trieur)
    zone.Rows.OptimalHeight=true
end sub

Function getResultats()

	dim oDoc as object
	dim feuille as object
	dim championnat as object,bino as object
	dim i%
	
	oDoc = ThisComponent
	
	championnat = getBinomes()
	'Bouclons toutes les feuilles
	for each feuille in oDoc.Sheets
		' Si c'est une feuille de secteur
		if left(feuille.name,7)="secteur" then
		
			' On récupère les résultats
			i=10
			do while feuille.getCellByPosition(5,i).value>0 ' Boucle sur les postes
				
				if feuille.getCellByPosition(4,i).string<>"" then ' Le poste est affecté à un binôme
					bino = championnat.get(feuille.getCellByPosition(4,i).string)
					bino.points = feuille.getCellByPosition(3,i).value
					bino.poids = feuille.getCellByPosition(7,i).value
					
				end if
				
				i=i+1
			loop
			
		end if
	next feuille
	
	getResultats = championnat
	
End function
Et le fichier qui va avec
classement JRC 2017_V2.2.ods
Il y a encore pas mal de points améliorables
  • Récupérer par Macro les données du fichier d'inscription
  • Pouvoir ajouter un secteur à partir d'une matrice
  • La mise en forme
  • ...
  • Et le codage bien sûr :oops:
Mais ça fait ce qui était attendu
Christophe
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 1:5.1.4-0ubuntu1
Ubuntu 16.04
Le plus difficile n'est pas de trouver la solution mais de formuler le problème
anto80
NOOuvel adepte
NOOuvel adepte
Messages : 13
Inscription : 07 déc. 2016 10:51

Re: [Calc] Classement binomes par paire

Message par anto80 »

Je te remercie de mon côté je cherche aussi et je pense être sur une piste lol.
J'ai refait 2 documents pour le classement individuel et un pour le général.
Ca marche mieux pour faire un tri par macro.
openOffice 4.1.3 sous windows 10
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12228
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Calc] Classement binomes par paire

Message par Bidouille »

anto80 a écrit :Je te remercie de mon côté je cherche aussi et je pense être sur une piste lol.
Ce qui est désolant, c'est que vous n'ayez même pas pris la peine de télécharger le document mis en ligne par CBresso.
navrant.png
Bref, voici un bel exemple de comment faire perdre du temps aux bénévoles qui vous en consacrent.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9254
Inscription : 28 août 2010 08:45

Re: [Calc] Classement binomes par paire

Message par micmac »

Bonjour,
Dernière connexion le : 04 Jan 2017 18:28
Vous avez lu semble t-il les réponses qui vous ont été faites sans y donner de suite.
N'ayant plus de nouvelles, on peut en déduire que le problème est résolu ou ne se reproduit pas.
  1. Merci de baliser par vous-même la prochaine fois.
  2. Un remerciement fait aussi plaisir aux bénévoles qui vous ont consacré de leur temps.
    La politesse fait également partie de la philosophie du logiciel libre.
  3. En cas d'erreur, contactez l'équipe de modération pour la réouverture du fil.
Sujet balisé [Résolu] et verrouillé.

Cordialement,
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac