[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 !

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

Messagepar boulauventre » 24 Mai 2018 08:37

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   AgrandirRéduire
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é 14 fois
Dernière édition par boulauventre le 24 Mai 2018 16:55, édité 1 fois.
libre office 5.4 sous Windows 10
boulauventre
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 64
Inscrit le : 06 Juin 2016 21:23

Re: [Calc] Recherche avec Occurrences multiples

Messagepar DLE » 24 Mai 2018 11:14

Bonjour,

Une proposition de solution à valider.
Code : Tout sélectionner   AgrandirRéduire
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
AOO 4.1.5 sous Windows 10 64 bits, FireFox, Thunderbird, ORB 1.2.1
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
 
Message(s) : 1140
Inscrit le : 30 Déc 2007 19:56
Localisation : Lille

Re: [Calc] Recherche avec Occurrences multiples

Messagepar boulauventre » 24 Mai 2018 11:56

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 5.4 sous Windows 10
boulauventre
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 64
Inscrit le : 06 Juin 2016 21:23

Re: [Calc] Recherche avec Occurrences multiples

Messagepar DLE » 24 Mai 2018 12:20

Re,

Dans le msgBox tu veux le N° de ligne ou la valeur de la colonne "B" ou les deux?
AOO 4.1.5 sous Windows 10 64 bits, FireFox, Thunderbird, ORB 1.2.1
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
 
Message(s) : 1140
Inscrit le : 30 Déc 2007 19:56
Localisation : Lille

Re: [Calc] Recherche avec Occurrences multiples

Messagepar boulauventre » 24 Mai 2018 12:48

Re,

Plutôt la Valeur de la colonne B :bravo: :bravo:
libre office 5.4 sous Windows 10
boulauventre
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 64
Inscrit le : 06 Juin 2016 21:23

Re: [Calc] Recherche avec Occurrences multiples

Messagepar Piaf » 24 Mai 2018 14:24

Bonjour
A tester
Code : Tout sélectionner   AgrandirRéduire
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: 5.4.7 et Apache OpenOffice 4.1.5 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5357
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Calc] Recherche avec Occurrences multiples

Messagepar boulauventre » 24 Mai 2018 16:54

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 5.4 sous Windows 10
boulauventre
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 64
Inscrit le : 06 Juin 2016 21:23

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

Messagepar Piaf » 24 Mai 2018 17:16

Re
boulauventre a écrit:je ne comprends pas comment la variable Txt s'incrémente dans la boite de dialogue.
Code : Tout sélectionner   AgrandirRéduire
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: 5.4.7 et Apache OpenOffice 4.1.5 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5357
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

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

Messagepar boulauventre » 24 Mai 2018 19:41

Super c'est clair maintenant merci Piaf :super:

Bonne soirée

Boulauventre
libre office 5.4 sous Windows 10
boulauventre
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 64
Inscrit le : 06 Juin 2016 21:23


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 4 invité(s)