Page 2 sur 2

Recherche d'occurrence

Posté : 19 juil. 2016 15:40
par Bidouille
La bibliothèque Tools fournit avec OpenOffice offre la fonction PartStringInArray (incluse dans le module Strings).
Elle permet de vérifier si une occurrence est trouvée dans une variable tableau.

NB : n'oubliez pas de charger la bibliothèque au départ.

Code : Tout sélectionner

Sub Main
   GlobalScope.BasicLibraries.loadLibrary("Tools")
   
   oTab = Array("Ali", "Bob", "Jim", "Joe", _
             "Léa", "Max", "Tom", "Zoé")
   
   PartStringInArray(oTab, "Léa", 1) 'Renvoie 4
   PartStringInArray(oTab, "lea", 0) 'Renvoie -1
   PartStringInArray(oTab, "LEA", 0) 'Renvoie -1
   PartStringInArray(oTab, "J", 1) 'Renvoie 2
   PartStringInArray(oTab, "Jo", 0) 'Renvoie 3
   PartStringInArray(oTab, "jo", 0)  'Renvoie -1
   PartStringInArray(oTab, "o", 1)   'Renvoie 1   
End Sub

Elimination des lignes vides

Posté : 27 oct. 2021 13:53
par Bidouille
Il s'agit de copier une plage de données sans les lignes vides.
Dans cet exemple, on teste si la cellule de la colonne A contient un nom.
On colle le résultat sous la 12e ligne du tableau.
transfert_sans_ligne_vide.png
transfert_sans_ligne_vide.png (12.66 Kio) Vu 433 fois

Code : Tout sélectionner

   nCol = 0 'Index de la colonne que l'on teste si vide
   nLigne = 12 'N° de ligne où se collera la plage
   
   oDoc = ThisComponent
   oFeuil = oDoc.Sheets(0) ' La 1ere feuille qui est indexée à 0
   oPlage = oFeuil.getCellRangeByName("A1:D11")
   oCopie = oPlage.DataArray
   maxCol = UBound(oCopie(0))
   k = 0
   for i = 0 to UBound(oCopie)
      if oCopie(i)(nCol) <> "" then
         Redim Preserve oColle(0 to k)
         Redim oLigne(0 to maxCol)
         for j = 0 to maxCol
            oLigne(j) = oCopie(i)(j)
         next
         oColle(k) = oLigne
         k = k + 1
      endif   
   next
   
   oPlage = oFeuil.getCellRangeByPosition(0,nLigne,maxCol,nLigne+k-1)
   oPlage.DataArray = oColle