Aller au contenu principal


Etude du code

Billet créé le :
12 juin 2023

Analyse de "InsertionFeuille"

Dim MonClasseur, MaFeuille As Object 
Dim Position as Integer 
-- déclaration des variables MonClasseur et MaFeuille de type objet, Position de type Entier 
MonClasseur = ThisComponent 
-- affectation de l'objet "classeur courant" à  MonClasseur 
Position = 0

If MonClasseur.Sheets.hasByName("MaBelleFeuille")= False Then 
-- S'il n'existe pas de feuille de calcul nommée "MaBelleFeuille" dans le classeur courant 
  MaFeuille = MonClasseur.createInstance("com.sun.star.sheet.Spreadsheet") 
  -- création d'un objet feuille de calcul et affectation de cet objet à l'objet MaFeuille 
  MonClasseur.Sheets.insertByName("MaBelleFeuille", MaFeuille) 
  -- insertion de l'objet MaFeuille sous le nom MaBelleFeuille dans la liste des feuilles du classeur courant 
End If                                  
If MonClasseur.Sheets.hasByName("Feuille3")= False Then  
-- S'il n'existe pas de feuille de calcul nommée "Feuille3" dans le classeur courant 
   MonClasseur.Sheets.insertNewByName("Feuille3", Position) 
    -- insertion d'un nouvel objet feuille sous le nom Feuille3 à la position 0 (en premier) dans la liste des feuilles du classeur courant 
End If         
     

Analyse de CelluleType

Dim LaCellule As Object 
-- déclaration de la variable LaCellule de type objet 
LaCellule = thisComponent.Sheets(0).getCellByPosition(0,0) 
-- affection de la cellule A1 de la 1ère feuille du classeur courant à LaCellule 
With com.sun.star.table.CellContentType  
  Select Case LaCellule.Type 
      Case .EMPTY '0 
       -- la cellule A1 est vide 
            MsgBox "La cellule est vide", MB_ICONINFORMATION 
            -- affichage du message   
      Case .VALUE '1 
       -- la cellule A1 contient une valeur numérique 
            MsgBox "La cellule contient un nombre",MB_ICONINFORMATION 
      Case .TEXT '2 
       -- la cellule A1 contient du texte 
            MsgBox  "La cellule contient du texte", MB_ICONINFORMATION 
      Case .FORMULA '3 
       -- la cellule A1 contient une formule  
            MsgBox  "La cellule contient une formule", MB_ICONINFORMATION 
  End Select 
End with    

Analyse de Copie et +

Dim MaFeuille, LaCellule as Object 
Dim NbFeuilles as Integer 
Dim nomFeuilleSource, nomFeuilleCible as String 
-- déclaration des variables maFeuille, LaCellule de type objet ; NbFeuilles de type entier ; nomFeuilleSource et nomFeuilleCible de type chaine de caractères 
NbFeuilles = thisComponent.sheets.count 
-- affection du nombre de feuilles du classeur courant à NbFeuilles 
nomFeuilleSource = inputBox ("nom de la feuille à copier ?",  Mb_OK, "Feuille1") 
-- affection à nomFeuilleSource de la saisie effectuée par l'utilisateur 
if thisComponent.sheets.hasByName(nomFeuilleSource)  then  
-- s'il existe une feuille nommée nomFeuilleSource    
 nomFeuilleCible = inputBox ("quel nom pour la copie ?", "Opération Copie", "Copie de ...") 
 -- affection à nomFeuilleCible de la saisie effectuée par l'utilisateur 
 if thisComponent.sheets.hasByName(nomFeuilleCible) = False then 
 -- s'il n'existe pas une feuille nommée nomFeuilleCible  
      thisComponent.Sheets.copyByName(nomFeuilleSource,nomFeuilleCible,NbFeuilles) 
       -- faire une copie et la placer en queue 
      MaFeuille= thisComponent.Sheets.getByName(nomFeuilleCible) 
       -- affection à maFeuille de la feuille nomFeuilleCible 
      thisComponent.currentController.setActiveSheet(MaFeuille) 
       -- rendre active MaFeuille 
 end if 
end If 
LaCellule = thisComponent.currentController.activeSheet.getCellRangeByName("A1") 
-- affection à laCellule de la cellule A1 de la feuille active du classeur courant 
LaCellule.string = "Copie effectuée" 
msgBox (" dans la cellule A1 est inscrit : copie effectuée ",MB_ICONINFORMATION, "info système", MB_ICONINFORMATION)   
-- affichage du message                                                                                                                                                       

Analyse de Sélection Courante

Dim SelCourante, Info as object 
Dim ligne, colonne as integer 
Dim nomSelection as string 
-- déclaration des variables SelCourante, Info de type objet ; ligne, colonne de type entier ; nomSelection de type chaine de caractères 
SelCourante = ThisComponent.CurrentSelection 
-- affectation de la sélection courante du classeur courant à SelCourante 
Info = ThisComponent.createInstance("com.sun.star.table.CellAddressConversion") 
--  affecter une instance de CellAddressConversion à Info
if SelCourante.supportsService("com.sun.star.sheet.SheetCell") then 
   -- si la sélection est une seule cellule 
   with SelCourante.cellAddress 
      ligne = .row 
      colonne = .column 
       -- affecter ligne et colonne avec les coordonées de SelCourante 
      msgBox ( "les coordonnées de la cellule sélectionnée sont : ("+ cStr(colonne) + " , " + cStr(ligne) + ")", MB_ICONINFORMATION) 
       -- afficher les coordonnées de selCourante 
   end with 
   Info.Address = SelCourante.cellAddress 
   'Info ressemble à feuille1.E1 
   nomSelection = split(Info.UserInterfaceRepresentation,".")(1) 
   msgBox ( "la cellule sélectionnée est :" + nomSelection , MB_ICONINFORMATION) 
   -- afficher la référence de selCourante 
elseif SelCourante.supportsService("com.sun.star.sheet.SheetCellRange") then 
  -- sinon si la sélection est une plage de cellules 
   with SelCourante.rangeAddress 
        msgBox ( "les coordonnées de la plage sélectionnée sont : ("+ .startColumn + " , " + .startRow + ") - ("  + .endColumn + " , " + .endRow + ")", MB_ICONINFORMATION) 
         -- afficher les coordonnées de selCourante (la plage) 
    end with 
   nomSelection = SelCourante.AbsoluteName 
   'nomSelection ressemble à $feuille1.$E$1:$F$15 
    nomSelection = Join(Split(nomSelection, "$"), "") 
    nomSelection = split(nomSelection,".")(1) 
    msgBox ( "la plage sélectionnée est : "+ nomSelection, MB_ICONINFORMATION) 
     -- afficher la référence de selCourante 
    else  
       msgbox ("la sélection doit être soit une cellule, soit une plage de cellules", MB_ICONINFORMATION) 
end if                                                                                                                                                       

  •