[Résolu][Calc] suppression colonnes sous condition de valeur

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 !
Melissa
Fraîchement OOthentifié
Messages : 6
Inscription : 11 oct. 2018 00:10

[Résolu][Calc] suppression colonnes sous condition de valeur

Message par Melissa »


La modération vous a écrit: Dans le titre, nous avons supprimé le terme Macro qui est implicite dans cette section, donc inutile.

Bonjour à tous !

Après avoir glaner de nombreux conseils ici en tant qu'anonyme, je poste pour la première afin je l'espère d'obtenir une réponse à ma question.

Je souhaiterais créer une macro qui me permettrait de supprimer des colonnes en fonction de la valeur d'UNE seule cellule.

Exemple :
Dans Mon_Fichier, j'ai plusieurs onglets Feuille1 et Feuille2.
Dans ma Feuille1, si ma cellule A1 =1, j'aimerais supprimer dans ma Feuille2 les colonnes entre B et E
Dans ma Feuille1, si ma cellule A1 = 2, j'aimerais supprimer dans ma Feuille2 les colonnes entre C et E, etc

J'ai passé la soirée à chercher un moyen de créer ma macro mais je n'y arrive pas du tout !

Je vous remercie d'avance
Dernière modification par micmac le 13 oct. 2018 10:59, modifié 1 fois.
Raison : Balisage
OpenOffice 4.1.5 sur Windows10
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: [Calc]Macro suppression de colonnes sous condition de va

Message par OOotremer971 »

Bonjour,

J'ai un doute sur l'exactitude de l’énoncé de ton problème :
Melissa a écrit :j'aimerais supprimer dans ma Feuille2 les colonnes entre B et E
Entre B et E il reste C et D (on supprime donc C et D)
Melissa a écrit :j'aimerais supprimer dans ma Feuille2 les colonnes entre C et E
Entre C et E il n'y a qu'une colonne ??? (la D)

A tester donc :

Code : Tout sélectionner

Option Explicit

Sub SuprimeColonnes(oEvt As Object)
Dim oDoc As Object, oFeuille2 As Object, r As Integer
oDoc = Thiscomponent
oFeuille2 = oDoc.Sheets.GetByName("Feuille2")
Select Case oEvt.Value
	Case 1
		r = MsgBox("Supprimer les colonnes C et D Feuille2", 3+32+256, "Confirmation")
		If r = 6 Then
			oFeuille2.Columns.RemoveByIndex(2,2)
		else
			exit sub
		End if
	Case 2
		r = MsgBox("Supprimer la colonne D Feuille2", 3+32+256, "Confirmation")
		If r = 6 Then
			oFeuille2.Columns.RemoveByIndex(3,1)
		else
			exit sub
		End if		
	End Select
End Sub
La valeur de Feuille1.A1 se modifie par liste déroulante. La macro est exécutée dès que le contenu de la cellule A1 est modifié, mais les colonnes ne sont supprimées qu'après confirmation pour limiter les erreurs.

A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
Melissa
Fraîchement OOthentifié
Messages : 6
Inscription : 11 oct. 2018 00:10

Re: [Calc] suppression de colonnes sous condition de valeur

Message par Melissa »

Merci beaucoup pour votre réactivité ! La macro fonctionne nickel mais je ne comprends pas comment vous avez défini "oEvt"
OpenOffice 4.1.5 sur Windows10
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: [Calc] suppression de colonnes sous condition de valeur

Message par OOotremer971 »

Bonjour,

Il correspond à l'événement de feuille "Contenu modifié" par lequel la macro est appelée (Cilc droit sur le nom de l'onglet(Feuille1)>Événement de feuille>Contenu modifié).

A+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
Melissa
Fraîchement OOthentifié
Messages : 6
Inscription : 11 oct. 2018 00:10

Re: [Calc] suppression de colonnes sous condition de valeur

Message par Melissa »

Vous êtes au top, c'est exactement ce qu'il me fallait !
Merci beaucoup :D
OpenOffice 4.1.5 sur Windows10