[Calc] Chiffre arrondi et recherche chaîne de texte

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 !
Happy19
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 06 juil. 2023 17:43

[Calc] Chiffre arrondi et recherche chaîne de texte

Message par Happy19 »

Bonjour

suite à mon post précédent viewtopic.php?t=68059 j'essai de comparer un chiffres avec plus de deux décimales avec un autre qui n'en a que deux.

Sur ma cellule j'applique la formule =ARRONDI.SUP(185,5468;2) dans mon exemple ce qui me donne 185.55 dans ma cellule (ou ARRONDI tout court ca fait pareil)

Au début je passais par un for en comparant if cellule1 = cellule2 et ca fonctionnait mais je souhaite plutôt utiliser la deuxième méthode avec with SearchString et la ça ne fonctionne plu.
Avec la 2eme méthode si je cherche 185.55 ca je trouve pas le chiffre mais je mets 185.54 la ca le trouve, comment puis je régler le problème ?
Sans nom 2.ods
Merci pour votre aide
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Oukcha le 06 déc. 2023 05:11, modifié 1 fois.
Raison : TO : "[Calc] Probléme arrondi et with SearchString" / Titre explicite, merci d'éviter les termes implicites ("problème")
Libreoffice 7.5.4.2 (X86_64) Linux
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 692
Inscription : 20 déc. 2017 14:45

Re: [Calc] Chiffre arrondi et recherche chaîne de texte

Message par rollmops »

Bonjour,
Happy19 a écrit : 05 déc. 2023 22:36 suite à mon post précédent
Oui et je vous ai posé une question à laquelle vous n'avez pas répondu.
Arrondir n'est pas tronquer
capture.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 4.1.15 - Windows 10
Happy19
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 06 juil. 2023 17:43

Re: [Calc] Chiffre arrondi et recherche chaîne de texte

Message par Happy19 »

Bonjour

Je ne veux pas tronquer mais bel et bien arrondir, comme spécifié dans l'exemple =ARRONDI(185,5468;2) me donne 185.55 or quand je cherche avec la fonction with searshstring ben ca me trouve pas 185.55 pourtant c'est bien la valeur marquée dans la cellule.

Je n'ai pas répondu car le post est résolu et donc fermé
Libreoffice 7.5.4.2 (X86_64) Linux
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 639
Inscription : 09 août 2017 22:15

Re: [Calc] Chiffre arrondi et recherche chaîne de texte

Message par Jurassic Pork »

Hello,
Happy19 a écrit : 05 déc. 2023 22:36 Avec la 2eme méthode si je cherche 185.55 ca je trouve pas le chiffre mais je mets 185.54 la ca le trouve, comment puis je régler le problème ?
Effectivement je constate le problème que ce soit sous LibreOffice ou OpenOffice. Un moyen de contournement consiste à utiliser la recherche en employant une expression régulière qui cherche le nombre avec un nombre à une seule décimale suivi d'un chiffre quelconque :

Code : Tout sélectionner

	oSearch = oRange.createSearchDescriptor
 
	With oSearch
	        .SearchString = "185,5\d{1}"
		.SearchCaseSensitive = false 
		.SearchWords = false
		.SearchRegularExpression = true
	End With
	oFound = oRange.findFirst(oSearch)

if NOT (isNull(oFound)) then
		Msgbox(Val &" Trouvé " & oFound.String)
		else
		msgbox("non trouvé")
		
		end if
Avec ce code la recherche fonctionne.

[EDIT] En plus précis :

Code : Tout sélectionner

       Dim DerCar As String
	Val = "185,55"
	DerCar = Right(Val,1)		
	Val = Left(Val,len(Val) - 1)	
	'Méthode2
	oSearch = oRange.createSearchDescriptor
 
	With oSearch
	    .SearchString = Val & "[" & CStr(Cint(DerCar)-1) & "," & CStr(Cint(DerCar)) & "]{1}"
	    .SearchCaseSensitive = false 
	    .SearchWords = false
	    .SearchRegularExpression = true
	End With
	oFound = oRange.findFirst(oSearch)

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
Jeff
GourOOu
GourOOu
Messages : 9806
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: [Calc] Chiffre arrondi et recherche chaîne de texte

Message par Jeff »

Bonjour,

Étant néophyte en macro, ce qui suit n'est peut-être pas applicable, mais il n'y aurait pas moyen de chercher directement l'arrondi ?

Un truc du genre :

Code : Tout sélectionner

With oSearch
	        .SearchString = cdbl(format(185,5468 , "0.00"))
		.SearchCaseSensitive = false 
		.SearchWords = false
		.SearchRegularExpression = true
End With
A +
Happy19
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 06 juil. 2023 17:43

Re: [Calc] Chiffre arrondi et recherche chaîne de texte

Message par Happy19 »

Bonjour et merci pous vos reponses mais hélas il est important pour moi que les 2 décimales soients gérées, ca ne me laisse pas d'autre choix que d'utiliser une boucle for

Je ne mets pas le post en résolu vu qu'il ne l'est pas, cela semble être une sorte de bug
Libreoffice 7.5.4.2 (X86_64) Linux
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 692
Inscription : 20 déc. 2017 14:45

Re: [Calc] Chiffre arrondi et recherche chaîne de texte

Message par rollmops »

Re,

Je ne vois pas pourquoi cela serait un bug
Basic fait la comparaison avec ce que vous lui fournissez.
Si vous voulez comparer deux chaînes, il faut l'indiquer :

Code : Tout sélectionner

	Nomfeuille="M"
	oFeuille=thisComponent.Sheets.getbyname(Nomfeuille)
	oPlageRecherche = "F3:F50"

	oRange = thisComponent.Sheets.getbyname(Nomfeuille).getCellRangeByName(oPlageRecherche)
	oCell = thisComponent.Sheets.getbyname(Nomfeuille).getCellRangeByName("F37")
	
	Val = "185,55"
	
	'Méthode1
	if oCell.string = Val then
		msgbox ("egaux")
		else
		msgbox("pas egaux")
	end if 
	
Le fait de nommer une chaîne (string) avec le nom "Val" me semble inaproprié
OpenOffice 4.1.15 - Windows 10