[Résolu][Calc] Détection doublons

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 !
BERNO
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 09 mai 2022 19:33

[Résolu][Calc] Détection doublons

Message par BERNO »

Bonjour

J'ai un tableau avec 3 colonnes. Je cherche un code VBA pour repéré un éventuel doublon dans ces colonnes et lui adapter un style.
J'ai commencé bien sur en entrant une formule dans la gestion du formatage conditionnel = NB.SI(($E$11:$E$24~$I$11:$I$24~$M$11:$M$24);E11)>1 ....elle fonctionne très bien.
Cependant je dois souvent faire des glissés de cellule d'un tableau vers un autre et je perds la mise en forme conditionnelle de la cellule concerné , raison pour laquelle je souhaiterais intégrer un code VBA.

Merci pour l'aide apportée....

Cdlt

No
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par BERNO le 10 mai 2023 11:58, modifié 1 fois.
7.3.6.2 libre Office Community Mac OS 12.6.5
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Détection doublons

Message par Dude »

Salut,

Programmer nécessite un minimum d'investissement.
On t'a déjà dit, me semble t-il, d'utiliser XRay pour comprendre les propriétés/méthodes d'un objet.

Pour ton problème qui est assez complexe, voici quelques pistes pour démarrer...

Tu définis la plage concernée :

Code : Tout sélectionner

$E$11:$E$24~$I$11:$I$24~$M$11:$M$24
L'objet com.sun.star.sheet.SheetCellRanges contient l'interface ConditionalFormat.
Il faut traduire ta formule en anglais et l'insérer par la méthode addNew.

Tu branches ta macro sur l'évènement de feuille "Sélection modifiée".

Tu as cet exemple pour démarrer : viewtopic.php?t=49964
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 669
Inscription : 20 déc. 2017 14:45

Re: [Calc] Détection doublons

Message par rollmops »

Bonjour,

Je vous ai répondu ici : viewtopic.php?t=67162
En faisant bien les choses, vous vous passerez de macro. :)
OpenOffice 4.1.15 - Windows 10
BERNO
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 09 mai 2022 19:33

Re: [Calc] Détection doublons

Message par BERNO »

Bonjour Rollmops
Je vous ai répondu sur l'autre fil
Merci , mais cette solution ne me convient par rapport à ce que je souhaiterais .

Cdlt
7.3.6.2 libre Office Community Mac OS 12.6.5
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 669
Inscription : 20 déc. 2017 14:45

Re: [Calc] Détection doublons

Message par rollmops »

BERNO a écrit : 26 avr. 2023 15:07 mais cette solution ne me convient par rapport à ce que je souhaiterais .
Pourquoi donc ? Cette solution permet de continuer à conserver les MFC.

Sinon, il vous reste à programmer la macro de dude.
OpenOffice 4.1.15 - Windows 10
BERNO
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 09 mai 2022 19:33

Re: [Calc] Détection doublons

Message par BERNO »

Bjr
Parce que je souhaite quelque chose de plus simple au quotidien , beaucoup de glissé et plusieurs manipulateurs
Oui je préfèrerais une macro mais comme l'écrit Dude
"Pour ton problème qui est assez complexe,"
Donc vu mon niveau, je galère.......
7.3.6.2 libre Office Community Mac OS 12.6.5
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12230
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Calc] Détection doublons

Message par Bidouille »

BERNO a écrit : 19 avr. 2023 19:32faire des glissés de cellule d'un tableau vers un autre et je perds la mise en forme conditionnelle de la cellule concerné
Le titre de la question est incorrect et ne reflète pas le problème décrit.
Il s'agit de : conserver une MFC si contenu glissée à la souris

Merci de corriger en ce sens.

On rappelle qu'un titre explicite n'est pas pour vous mais pour tous ceux effectuant des recherches.
BERNO
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 09 mai 2022 19:33

Re: [Calc] Détection doublons

Message par BERNO »

Non, non, il s'agit bien de trouver un code VBA pour détecter le doublon
7.3.6.2 libre Office Community Mac OS 12.6.5
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12230
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Calc] Détection doublons

Message par Bidouille »

Dans votre document, la détection de doublons est faite par une MFC.
Et VBA = Microsoft donc rien à voir avec le Basic.
BERNO
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 09 mai 2022 19:33

Re: [Calc] Détection doublons

Message par BERNO »

oui en effet, c'est que j'explique tes bien dans mon premier message...
"j'ai un document avec une formule qui détecte le doublon...."

Et j'ajoute ensuite :
mais j'aimerais que cette détection passe avec un code VBA"
7.3.6.2 libre Office Community Mac OS 12.6.5
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12230
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Calc] Détection doublons

Message par Bidouille »

BERNO a écrit : 27 avr. 2023 13:09 oui en effet
Et donc, il ne s'agit pas de décrire le contenu d'un document mais l'objectif à atteindre.
Ce que vous avez formulé dans votre 1er message :
BERNO a écrit : 19 avr. 2023 19:32 faire des glissés de cellule d'un tableau vers un autre et je perds la mise en forme conditionnelle de la cellule concerné
BERNO
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 09 mai 2022 19:33

Re: [Calc] Détection doublons

Message par BERNO »

j'explique ce que je recherche (objectif à atteindre )
Je cherche un code VBA pour repéré un éventuel doublon dans ces colonnes et lui adapter un style.

j'explique pourquoi
J'ai commencé bien sur en entrant une formule dans la gestion du formatage conditionnel = NB.SI(($E$11:$E$24~$I$11:$I$24~$M$11:$M$24);E11)>1 ....elle fonctionne très bien.
Cependant je dois souvent faire des glissés de cellule d'un tableau vers un autre et je perds la mise en forme conditionnelle de la cellule concerné ,
je souhaiterais intégrer un code VBA.
7.3.6.2 libre Office Community Mac OS 12.6.5
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Détection doublons

Message par Dude »

La détection de doublons, tu l'as déjà avec la MFC. :fou:
Donc ton objectif est bien de pouvoir conserver celle-ci après toute opération de modification.
BERNO a écrit : 27 avr. 2023 07:09 "Pour ton problème qui est assez complexe,"
Donc vu mon niveau, je galère.......
Dans ce cas, pourquoi s'obstiner à vouloir faire des macros puisqu'au final, tu ne comptes pas t'investir ?
Comme OOotremer971 te l'a dit :
OOotremer971 a écrit : 18 avr. 2023 17:40 Tes échanges demeurent obscures sur les objectifs que tu cherches à atteindre au final, nous pourrions probablement gagner du temps (temps de réflexion pas forcement utiles) si nous les connaissions en amont.

Voici un exemple qui recopie la MFC dès lors qu'un contenu est modifié dans les cellules concernées :

Code : Tout sélectionner

Sub MajMFC
	sPlage = "$E$11:$E$24;$I$11:$I$24;$M$11:$M$24"
	oFeuil = ThisComponent.CurrentController.ActiveSheet
	 
	aPlage = Split(sPlage, ";")
	for i = 0 to UBound(aPlage)
		oPlage = oFeuil.getCellRangeByName(aPlage(i))
		With oPlage
			nFeuil = .RangeAddress.Sheet
			ColDeb = .RangeAddress.StartColumn
			LigDeb = .RangeAddress.StartRow
			ColFin = .RangeAddress.EndColumn
			LigFin = .RangeAddress.EndRow
		end with
		for j = ColDeb to ColFin
			for k = LigDeb to LigFin
				Dim aCell(2)
				aCell(0) = nFeuil : aCell(1) = j : aCell(2) = k
				if not AjouteMFC(aCell, sPlage) then
					msgbox "Erreur" : exit for
				endif
			next
		next	
	next
End sub

Function AjouteMFC(aCell, sPlage)
	oCell = ThisComponent.Sheets.getByIndex(aCell(0)).GetCellByPosition(aCell(1),aCell(2))
	sAdr = oCell.AbsoluteName
	sFormule = "COUNTIF((" & sPlage & ");"& sAdr &")>1"
	Dim aMFC(3) As New com.sun.star.beans.PropertyValue
	aMFC(0).Name = "Operator"
	aMFC(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
	aMFC(1).Name = "Formula1"
	aMFC(1).Value = sFormule
	aMFC(2).Name = "StyleName"
	aMFC(2).Value = "DOUBLON2"
	aMFC(3).Name =  "SourcePosition"
	aMFC(3).value = oCell.CellAddress
	
	oMFC = oCell.ConditionalFormat
	oMFC.clear()
	oMFC.addNew(aMFC())
	oCell.ConditionalFormat = oMFC
	AjouteMFC = true
End Function
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
BERNO
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 09 mai 2022 19:33

Re: [Calc] Détection doublons

Message par BERNO »

Bonjour
Décidément , je dois mal m’expliquer …et donc mal me faire comprendre
J’ai en effet un tableau avec détection des doublons liée à une MFC.
Cependant, j’ai constaté que lorsque j’importais des cellules en les glissant dans ce tableau, je n’avais plus le repérage du doublon.
L’idée était donc de passer par une macro qui me permettrait d’éviter je pense, ce problème…

Je m’investis chaque jour, chaque soir, mais comme je démarre de loin, ce n’est pas évident pour moi….

Merci en tous les cas pour l’exemple sur lequel je vais me pencher....
7.3.6.2 libre Office Community Mac OS 12.6.5
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Détection doublons

Message par Dude »

BERNO a écrit : 27 avr. 2023 14:15 Cependant, j’ai constaté que lorsque j’importais des cellules en les glissant dans ce tableau, je n’avais plus le repérage du doublon.
On a compris et c'est cela qui doit figurer dans le titre de ta question.
Ce n'est pas un problème de détection mais de conserver la MFC
Bis repetitae :
Dude a écrit : 27 avr. 2023 13:43 Voici un exemple qui recopie la MFC dès lors qu'un contenu est modifié dans les cellules concernées
:evil:
BERNO
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 09 mai 2022 19:33

Re: [Calc] Détection doublons

Message par BERNO »

Je ne l'ai pas mis dans la question car la cellule que j'importe d'un autre tableau n'a pas de MFC, donc elle ne peut pas la conserver...
mon idée est donc bien une recherche de doublon dans un tableau défini...
7.3.6.2 libre Office Community Mac OS 12.6.5
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Détection doublons

Message par Dude »

BERNO a écrit : 27 avr. 2023 19:25 mon idée est donc bien une recherche de doublon dans un tableau défini
Les macros que je t'ai fournis font justement cela.
BERNO
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 09 mai 2022 19:33

Re: [Calc] Détection doublons

Message par BERNO »

Bonjour
Désolé pour l'absence de ces derniers jours.
Le code fonctionne parfaitement, merci
J'ai essayé de le déchiffrer pour le comprendre et j'avoue que là c'est plus difficile.
Encore merci et bonne journée.

Cdlt
7.3.6.2 libre Office Community Mac OS 12.6.5