[Résolu][Calc] Recherche avec Occurrences multiples

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 !
boulauventre
Membre OOrganisé
Membre OOrganisé
Messages : 80
Inscription : 06 juin 2016 22:23

[Résolu][Calc] Recherche avec Occurrences multiples

Message par boulauventre »

Bonjour à tous :wink:


Je me tourne vers vous après multiples recherches sans résultat.

Je souhaite faire une recherche selon un critère et que le resultat me sorte toutes les occurences de ce critère. Je pensais utiliser la fonction macro recherche avec une boucle mais le resultat n'est pas au rendez vous. Auriez vous une piste à me donner ?

Merci d'avance !!

Voici le code

Code : Tout sélectionner

Sub NumVide
Dim oFuncAcces As Object
Dim Matrice As variant, Valeur As String
Dim Recherche As variant
Dim Args1 as variant
Dim i as Variant

		monDocument = ThisComponent
    	lesFeuilles = monDocument.Sheets
    	maFeuille = lesFeuilles.getByName("StockA")
    	maCellule = maFeuille.getCellRangeByName("A20")
    	i = maCellule.Value	
    	
    For x = 1 to i

	oFuncAcces = CreateUnoService("com.sun.star.sheet.FunctionAccess")
		Valeur = ThisComponent.sheets.getByName("StockA").GetCellRangeByName( "G1" ).String
		Matrice = ThisComponent.sheets.getByName("StockA").GetCellRangeByName("A" & x & ":B10")
		Args1 = array(Valeur,Matrice,2,0)
		Recherche = oFuncAcces.callFunction("VLOOKUP",Args1 )
	
		ThisComponent.sheets.getByName("StockA").GetCellRangeByName("E" & x).Value = Recherche & x
		
		Print "Les numéros vides sont " & Recherche & x
		
	Next x
End Sub
Et le fichier test en PJ :super:
Pièces jointes
essai-forum.ods
(12.45 Kio) Téléchargé 97 fois
Dernière modification par boulauventre le 24 mai 2018 17:55, modifié 1 fois.
libre office 6.4.4 sous Windows 10
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 19:56
Localisation : Lille

Re: [Calc] Recherche avec Occurrences multiples

Message par DLE »

Bonjour,

Une proposition de solution à valider.

Code : Tout sélectionner

Sub Main
Dim oDoc As Object
Dim oFeuilles As Object
Dim oStockA As Object

	oDoc = ThisComponent
	oFeuilles = oDoc.sheets
	oStockA = oFeuilles.getByName("StockA")
	
	oPlage = oStockA.getCellRangeByName("A1:B10")
	oCherche = oPlage.createSearchDescriptor
	with oCherche
		.SearchString = oStockA.getCellRangeByName("G1").string
		.SearchWords = False
	end with
	resultat = oPlage.findFirst(oCherche)
	x = 0
	do until isNull(resultat)
		oStockA.getCellByPosition(4, x).value = resultat(x).RangeAddress.startRow + 1 ' pour  N° ligne
		oStockA.getCellByPosition(5, x).value = oStockA.getCellByPosition(1,resultat(x).RangeAddress.startRow).value 'pour valeur colonne "B"		
		resultat = oPlage.findNext(resultat, oCherche)
		x = x + 1
	loop

End Sub
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
boulauventre
Membre OOrganisé
Membre OOrganisé
Messages : 80
Inscription : 06 juin 2016 22:23

Re: [Calc] Recherche avec Occurrences multiples

Message par boulauventre »

Salut DLE et Merci pour ton aide.

Ta solution est presque parfaite :mrgreen:

Je souhaiterais juste pouvoir afficher par une PrintBox les resultats.

Du genre :

Les numéros vides sont :

1 7

3 8

5

.

Je pourrais faire une selection pour chaque case mais si il y a 150 numéros VIDE, ce serait imbuvable.
libre office 6.4.4 sous Windows 10
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 19:56
Localisation : Lille

Re: [Calc] Recherche avec Occurrences multiples

Message par DLE »

Re,

Dans le msgBox tu veux le N° de ligne ou la valeur de la colonne "B" ou les deux?
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
boulauventre
Membre OOrganisé
Membre OOrganisé
Messages : 80
Inscription : 06 juin 2016 22:23

Re: [Calc] Recherche avec Occurrences multiples

Message par boulauventre »

Re,

Plutôt la Valeur de la colonne B :bravo: :bravo:
libre office 6.4.4 sous Windows 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Calc] Recherche avec Occurrences multiples

Message par Piaf »

Bonjour
A tester

Code : Tout sélectionner

Sub Main
Dim oDoc As Object
Dim oFeuilles As Object
Dim oStockA As Object

   oDoc = ThisComponent
   oFeuilles = oDoc.sheets
   oStockA = oFeuilles.getByName("StockA")
   
   oPlage = oStockA.getCellRangeByName("A1:B10")
   oCherche = oPlage.createSearchDescriptor
   with oCherche
      .SearchString = oStockA.getCellRangeByName("G1").string
      .SearchWords = False
   end with
   resultat = oPlage.findFirst(oCherche)
   x = 0
   do until isNull(resultat)
      oStockA.getCellByPosition(4, x).value = resultat(x).RangeAddress.startRow + 1 ' pour  N° ligne
      txt = txt & oStockA.getCellByPosition(1,resultat(x).RangeAddress.startRow).value & Chr(13) 'pour valeur colonne "B"      
      resultat = oPlage.findNext(resultat, oCherche)
      x = x + 1
   loop
MsgBox("Valeur Colonne B Correspondant à VIDE dans la Colonne A" & Chr(13) & txt)
End Sub
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
boulauventre
Membre OOrganisé
Membre OOrganisé
Messages : 80
Inscription : 06 juin 2016 22:23

Re: [Calc] Recherche avec Occurrences multiples

Message par boulauventre »

Salut Piaf,

Merci pour ton aide, c'est exactement ce que je cherchais !! :bravo: :super:

Pour ma compréhension, je ne comprends pas comment la variable Txt s'incrémente dans la boite de dialogue. Car la variable Txt ne peux valoir qu'un nombre à la fois non ?

( Je ne sais pas si je suis clair :tesfou: :tesfou: )

Merci à vous deux en tout cas ;)


Bonne soirée
libre office 6.4.4 sous Windows 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Résolu][Calc] Recherche avec Occurrences multiples

Message par Piaf »

Re
boulauventre a écrit :je ne comprends pas comment la variable Txt s'incrémente dans la boite de dialogue.

Code : Tout sélectionner

txt = txt & ..... & Crh(13
On reprend le texte existant et l'on ajoute les nouvelles valeurs au fur et à mesure de l'itération de la boucle.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
boulauventre
Membre OOrganisé
Membre OOrganisé
Messages : 80
Inscription : 06 juin 2016 22:23

Re: [Résolu][Calc] Recherche avec Occurrences multiples

Message par boulauventre »

Super c'est clair maintenant merci Piaf :super:

Bonne soirée

Boulauventre
libre office 6.4.4 sous Windows 10
Répondre