[Résolu][Calc]Ligne supprimée si la cellule est égale à zéro

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 !
Drake
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 299
Inscription : 02 févr. 2012 00:51

[Résolu][Calc]Ligne supprimée si la cellule est égale à zéro

Message par Drake »

Bonjour,

Je dois faire faire la même modification sur plusieurs feuilles Calc (une centaine).
J'aurai besoin d'aide pour écrire une macro qui fasse cela.

La modification serait la suivante:
Supprimer toutes les lignes dont une cellule est égale zéro.
Et faire en sorte que la ligne du dessous prenne la place de celle supprimée.

Les cellules testées sont les cellules de la colonne D.

Exemple: Si la cellule D21 est égale à zéro alors supprimer la ligne 21.
Afin d'être plus clair je joins 2 fichiers Calc l'un avant modif, l'autre après.
Exemple1.ods
Exemple1 modifié.ods
Par ailleurs chaque feuille est un fichier Calc (.ods).
Existe-t-il une possibilité de rassembler toutes ces feuilles dans un seul fichier Calc ?


Merci de votre aide.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Drake le 01 déc. 2014 12:36, modifié 3 fois.
LibreOffice 6.2.7.1 (x64), Java (64b), Windows 10 (64b)
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 10002
Inscription : 28 août 2010 08:45

Re: [Calc] Supression de lignes si une cellule est égale à z

Message par micmac »

Bonjour,
[b][color=#404080]Drake[/color][/b] a écrit :Par ailleurs chaque feuille est un fichier Calc (.ods).
Existe-t-il une possibilité de rassembler toutes ces feuilles dans un seul fichier Calc ?
Nous vous rappelons que la règle n° 7 stipule qu'il ne faut mettre qu'une question par fil.

Poser plusieurs questions complique la compréhension et n'encourage pas les réponses : il vaut donc mieux découper votre problème. Le titre de votre question ne peut pas refléter l'ensemble des problèmes exposés.

Afin que nous puissions avoir une base de connaissance efficace lors d'une recherche sur un seul de vos problèmes, nous vous prions de créer autant de fils que de questions.

Cordialement
Touche Ctrl de Windows = touche cmd⌘ sur Mac
OpenOffice > Outils > Options sur Windows = OpenOffice > Préférences sur macOS
joel275
InconditiOOnnel
InconditiOOnnel
Messages : 839
Inscription : 10 janv. 2009 08:05

Re: [Calc] Supression de lignes si une cellule est égale à z

Message par joel275 »

Bonsoir,

essaie le code suivant:

Code : Tout sélectionner

Sub Main
Dim LesFeuilles as Object, MaCell as Object, MaZone as Object, Lignes as Object
Dim I as Long, J as Long
	LesFeuilles = ThisComponent.Sheets
	For I = 0 To LesFeuilles.Count - 1           ' passe en revue toutes les feuilles du classeur
		For J = 1 To 200			' recherche sur les 200° lignes à modifier si nécessaire
			MaCell = LesFeuilles(I).GetCellRangeByName("D" & CStr(J))
			MaZone = LesFeuilles(I).GetCellRangeByName("D1:D200")
			If MaCell.Value = 0 And MaCell.Type = com.sun.star.table.CellContentType.VALUE Then
				Lignes = MaZone.Rows			' ne supprimera pas les lignes dont le résultat nul est obtenu par formule
				Lignes.RemoveByIndex(J-1, 1)
			End If
		Next
	Next
End Sub
A plus,
Joël
Dernière modification par joel275 le 01 déc. 2014 10:42, modifié 1 fois.
A jour de LibreOffice et de Ubuntu
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Supression de lignes si une cellule est égale à z

Message par Piaf »

Bonjour
Une autre façon à tester

Code : Tout sélectionner

Sub Main
Dim oDoc as Object, maFeuille as Object, maCellule as Object
Dim x as Integer
	oDoc = thisComponent
	maFeuille = oDoc.Sheets.getByName("Feuille1")
	maCellule = maFeuille.getCellByPosition(1,19)
	x = 19
	Do While maCellule.String <> ""
	If maFeuille.getCellByPosition(3,x).String = "0,00 €" Then
		maCellule.Rows.removeByIndex(0,1)
	End If
	x = x + 1
	maCellule = maFeuille.getCellByPosition(1,x)
	Loop
End Sub
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Drake
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 299
Inscription : 02 févr. 2012 00:51

Re: [Calc] Supression de lignes si une cellule est égale à z

Message par Drake »

Bonsoir,

Waooo! 2 pour le même prix.

Merci.

Je vais tester ça et je reviens dire.
LibreOffice 6.2.7.1 (x64), Java (64b), Windows 10 (64b)
Drake
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 299
Inscription : 02 févr. 2012 00:51

Re: [Calc] Supression de lignes si une cellule est égale à z

Message par Drake »

re,

Les 2 procédures fonctionnent très bien. Encore merci à vous.
Une question pour Joel, la 1ere boucle sert-elle à gérer plusieurs feuilles ?
Sinon peux-tu m'expliquer à quoi elle sert ?
A+
Le modérateur a écrit : 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.
LibreOffice 6.2.7.1 (x64), Java (64b), Windows 10 (64b)
joel275
InconditiOOnnel
InconditiOOnnel
Messages : 839
Inscription : 10 janv. 2009 08:05

Re: [Calc] Supression de lignes si une cellule est égale à z

Message par joel275 »

Bonjour,

elle sert à passer en revue toutes les feuilles du classeur.

A plus,
Joël
A jour de LibreOffice et de Ubuntu
Drake
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 299
Inscription : 02 févr. 2012 00:51

Re: [Calc] Supression de lignes si une cellule est égale à z

Message par Drake »

Bonjour,
elle sert à passer en revue toutes les feuilles du classeur.
Ok,merci
LibreOffice 6.2.7.1 (x64), Java (64b), Windows 10 (64b)