[Résolu][Calc] Autoalimentation d'onglet à partir d'autres

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 !
noobycalc
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 06 mars 2015 09:01

[Résolu][Calc] Autoalimentation d'onglet à partir d'autres

Message par noobycalc »

Salut à tous,
J'ai un fichier comprenant 4 onglets: 3 sont remplis manuellement, et j'aimerais que le dernier soit autoalimenté par les autres.
Pour les trois premiers on remplit la date, la plage horaire le type d'actions la cob concernée et un maximum de 10 communes
J'ai rajouté une colonne Mois pour avoir le mois de la date et une colonne Concaténation pour les communes.
Bref dans le 4eme onglet on choisit en haut le mois. Et j'aimerais que pour un mois donné, le tableau se remplisse avec toutes les informations deds précédents onglets.
Si on sélectionne 1, le tableau doit aller chercher dasn les 3 onglets précédents toutes les dates de janvier et remplir ensuite automatiquement plage horaire, type d'action, cob conerncée et la concaténation.
Bref pour éclaircir tout ça je joins le fichier je pense que ce sera compréhensible...
J'imagine qu'il doit falloir faire une macro pour ça d'où mon post ici mais je dois avouer que je suis un peu... dans l'impasse là. Notamment parcequ'il y a trois onglets dans lesquels il faut aller chercher...
Merci d'avance pour votre aide
Cordialement
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par noobycalc le 16 mars 2015 15:26, modifié 1 fois.
LibreOffice 4.2
Windows XP
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Autoalimentation d'un onglet à partir des autres

Message par Piaf »

Bonjour
A tester.

Code : Tout sélectionner

Option Explicit

Sub ResultatsClasseur()
Dim oDoc As Object, monCurseur as Object
Dim FeuilleResult as Object,maFeuille As Object, maZone As Object, zoneaEffacer as Object, Effacer as Long
Dim MoisRecherche As Object, trouv As Variant, TexteRecherche as String
Dim maCellule as Object, zoneSource as Object, zoneDest as Object
Dim Intx as Integer, intY as integer
	oDoc = ThisComponent
	FeuilleResult = oDoc.Sheets.getByName("Feuille4")
	monCurseur = FeuilleResult.createCursor
	monCurseur.gotoEndOfUsedArea(False)
	intY = monCurseur.RangeAddress.EndRow + 1
	zoneaEffacer = FeuilleResult.getCellRangeByPosition(0,3, 5,intY)
	Effacer = com.sun.star.sheet.CellFlags.VALUE + com.sun.star.sheet.CellFlags.DATETIME + com.sun.star.sheet.CellFlags.STRING
	zoneaEffacer.clearContents(Effacer)
	TexteRecherche = FeuilleResult.getCellByPosition(0,0).String
	If TexteRecherche = "" Then Exit sub
	intY = 3
	For intx = 0 To oDoc.Sheets.Count -2
		maFeuille = oDoc.Sheets(intx)
		maZone = maFeuille.getCellRangeByName("B2:B1000")
		MoisRecherche = maZone.createSearchDescriptor
		With MoisRecherche
			.SearchString = TexteRecherche
			.SearchWords = True
			.SearchType = 1
		End With
		trouv = maZone.findFirst(MoisRecherche)
		Do Until isNull(trouv)
			maCellule = FeuilleResult.getCellByPosition(0,intY)
			zoneSource = mafeuille.getCellRangeByPosition(0,trouv.CellAddress.Row, 5,trouv.CellAddress.Row)
			zoneDest = FeuilleResult.getCellRangeByPosition(0,intY,5,intY)
			zoneDest.DataArray = zoneSource.DataArray
			intY = intY + 1
			trouv = maZone.findNext(trouv, MoisRecherche)
		Loop
	Next
End Sub
Je n'ai pas compris la validité pour la liste des communes, je l'ai remplacé par une liste.
Étant d'un naturel feignant :lol: , J'ai modifié la feuille de résultats, pour avoir la même structure que les feuilles où on effectue les recherches.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
noobycalc
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 06 mars 2015 09:01

Re: [Calc] Autoalimentation d'un onglet à partir des autres

Message par noobycalc »

Salut Piaf et tout d'abord merci beaucoup!
Sur le fichier test ca a l'air de marcher nickel donc c'est parfait!
Oui t'as bien fait de changer l'ordre des colonnes j'avais pas fait gaffe...
Par contre je dois t'avouer que ton code est un peu opaque pour moi :oops: et j'ai un peu de mal à l'adapter à mon vrai classeur.
En soi j'ai juste plus d'onglets, le contenu des 4 ne change pas. Mais ce sont les onglets 3,4, 5 et 6.
Et comme je ne vois pas où tu les nommes (à part pour la Feuille4) j'ai un peu de mal à l'adapter.
Surement cette ligne non?

Code : Tout sélectionner

For intx = 0 To oDoc.Sheets.Count -2
EDIT: Ok c'est bon pour moi j'ai réussi!
Merci beaucoup!!!
LibreOffice 4.2
Windows XP