[Résolu][Calc]Copier feuille à partir d'une liste de nom.

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 !
y.pique.ou.rien
Fraîchement OOthentifié
Messages : 2
Inscription : 01 sept. 2018 13:50

[Résolu][Calc]Copier feuille à partir d'une liste de nom.

Message par y.pique.ou.rien »


La modération vous a écrit: Pour la bonne tenue de ce forum, veillez à respecter la syntaxe des balises (première lettre en majuscule puis le reste en minuscules, le tout entre crochets). [Calc] et non [CALC]. Nous l'avons fait pour vous.

Bonjour à tous.
Mon expérience en matière de macro et de langage basic date de ce matin. Je suis dans les tutos depuis mais je rame sévère et ne suis pas sur de bien tout comprendre.

Je cherche à copier plusieurs fois une feuille à partir d'une liste. C'est à dire créer automatiquement de nouvelles feuilles identiques à celle intitulée Évaluation. Une pour chaque nom et ces feuilles portant ce nom comme titre ( et si possible reporté dans la cellule B35 ).

Il y a bien le post de seabs et de la réponse de alhazred :

https://forum.openoffice.org/fr/forum/v ... =8&t=39979

mais je n'arrive pas à bien comprendre la macro pour la modifier.

Si quelqu'un avait des idées ou pouvait me guider je me sentirais moins noyé.
Merci.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par micmac le 01 oct. 2018 08:18, modifié 3 fois.
Raison : [Calc] remplace [CALC] + Balisage
LibreOffice 5.1.6.2 sous Ubuntu 16.04 lts
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 629
Inscription : 09 août 2017 22:15

Re: [Calc]Copier une feuille à partir d'une liste de nom.

Message par Jurassic Pork »

hello,
dans la macro de jeanmimi et halazred, il suffit de remplacer l'insertion par une copie comme ceci par exemple :

Code : Tout sélectionner

Sub CopierEvaluation()
	Dim monDoc as Object, mesFeuilles as Object, maFeuille as Object
	Dim NomFeuilleDest as String, row%


	monDoc = thisComponent
	mesFeuilles = monDoc.Sheets
	maFeuille = mesFeuilles.getByName("Liste")
	
	row = 0
	Do
		row = row + 1
		'Récupère le nom du nouvel onglet
		NomFeuilleDest = maFeuille.GetCellRangeByName("A"&row).string
		If NomFeuilleDest = "" Then Exit Do 'arrêt sur cellule vide
	
		'test sur l'existence de ce nouvel onglet
		If mesFeuilles.hasByName(NomFeuilleDest) Then
			if msgbox("La feuille " & NomFeuilleDest & " figure déjà dans le classeur " & chr(13) & "Voulez-vous la supprimer" , 36) = 6 then 
				mesFeuilles.removeByName(NomFeuilleDest)
			else 
				msgbox "suppression annulée" 
			End if 
		Else
	    ' Copie de la feuille Évaluation vers nouvelle feuille
            mesFeuilles.copyByName("Évaluation",NomFeuilleDest,mesFeuilles.Count)
            ' On écrit le nom dans la cellule B35 de la nouvelle feuille
            mesFeuilles.getByName(NomFeuilleDest).getCellRangeByName("B35").setString(NomFeuilleDest)		
		End If
	Loop
End Sub 
EDIT : Je viens de m'apercevoir que dans ta feuille d'évaluation les noms et prénoms sont séparés (B35 et B36).
pour remplir les deux cellules, il faut "éclater" les noms dans la liste comme ceci par exemple :

Code : Tout sélectionner

             Dim NomPrenom(1)
            NomPrenom = Split(NomFeuilleDest," ")
            ' On écrit le nom dans la cellule B35 de la nouvelle feuille
            mesFeuilles.getByName(NomFeuilleDest).getCellRangeByName("B35").setString(NomPrenom(0))
            ' On écrit le prénom dans la cellule B36 de la nouvelle feuille
            mesFeuilles.getByName(NomFeuilleDest).getCellRangeByName("B36").setString(NomPrenom(1))				
Ami calmant, J.P
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
y.pique.ou.rien
Fraîchement OOthentifié
Messages : 2
Inscription : 01 sept. 2018 13:50

Re: [Calc]Copier une feuille à partir d'une liste de nom.

Message par y.pique.ou.rien »

Merci pour la réponse ultra-rapide et ultra efficace.
Il me reste pas mal de chemin à parcourir avant d'écrire mes premières macros. Ça a l'air simple quand tu l'expliques mais je ne comprends pas encore comment ça marche. Pas grave, je continue les tutos et les exercices pour y arriver.
EDIT : Je viens de m'apercevoir que dans ta feuille d'évaluation les noms et prénoms sont séparés (B35 et B36)
Effectivement je n'ai pas pensé à ça. C'est un détail mais ça sera plus propre.
Je n'ai pas réussi à l'intégrer dans la première macro. Après diverses tentatives variées j'ai toujours le retour : erreur de syntaxe BASIC.

Sinon pas de soucis, ça marche impeccable. Seul petit souci étrange les références de la colonne A ont glissé de feuille.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 5.1.6.2 sous Ubuntu 16.04 lts