FAQ LibreOffice et Apache OpenOfficeConsultez toutes les FAQ

Nombre d'auteurs : 10, nombre de questions : 359, dernière mise à jour : 15 juillet 2017  Ajouter une question

 

Bienvenue sur la FAQ, elle a été réalisée pour répondre aux questions concernant les suites bureautiques Apache OpenOffice (AOO) et LibreOffice (LibO).

Si vous souhaitez participer pour l'améliorer, pour proposer vos contributions ou si vous constatez des erreurs dans cette page, n'hésitez-pas !!! Participez.


SommaireProgrammation OBasicOBasic : TableurLes feuillesLes cellulesLes cellules et plages nommées (6)
précédent sommaire suivant
 

Un nom est une chaîne de caractères (sans espace) qui représente une cellule ou une plage de cellules. Utilisez des noms lorsque vous avez besoin de faire références à des plages complexes ou pour une meilleure compréhension de votre projet.
Par exemple, vous pouvez remplacer une formule classique:
=SOMME(A1:A10)*B1par
=SOMME(A1:A10)*CoefficientCoefficient étant le nom préalablement donné à la cellule B1.

Pour ajouter un nom manuellement, utilisez le menu Insertion :

  • Noms ;
  • Définir ;
  • Complètez le champ « Nom » ;
  • Le champ « Assigné à » permet de préciser la cellule ou la plage à nommer ;
  • Cliquez sur le bouton « Ajouter » ;
  • puis sur le bouton OK pour valider.


Pour ajouter un nom par macro:
Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub AjoutNom 
  Dim oNom As Object  
  Dim oCellAdress As New com.sun.star.table.CellAddress  
  
  '-------------- 
  'La procédure renvoie une erreur si le nom existe déja  
  'dans le classeur. 
  '-------------- 
  
  'Premier exemple 
  oNom = ThisComponent.NamedRanges 
  'Nomme la plage B2:C5 dans la feuille nommée Feuille1 
  oNom.addNewByName( "TestNom1" , "$Feuille1.$B2:$C5" , oCellAdress , 0 )  
  
  'Deuxième exemple 
  'Nomme la cellule A10 dans la feuille nommée Feuille2 
  oNom.addNewByName( "TestNom2", "$Feuille2.$A10:$A10" , createUnoStruct( "com.sun.star.table.CellAddress" ) , 0 )  
End Sub

Mis à jour le 26 août 2013 SilkyRoad

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
Sub VerifierExistenceNom 
  Dim LeNom As String 
  
  LeNom = "NomTest" 
  
  If ThisComponent.NamedRanges.HasByName( LeNom ) Then 
    MsgBox "Il existe un Nom '" & LeNom & "' dans le classeur." 
    Else 
    MsgBox "Le Nom '" & LeNom & "' n'existe pas dans le classeur." 
  End If 
End Sub

Mis à jour le 31 juillet 2013 SilkyRoad

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
Sub ListeNoms 
  Dim i As Integer 
  Dim Tableau() 
  
  Tableau = ThisComponent.NamedRanges.ElementNames 
  
  For i = LBound (Tableau) To UBound (Tableau)  
    MsgBox Tableau(i)  
  Next i  
End sub

Mis à jour le 31 juillet 2013 SilkyRoad

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub RecupererInformationsNom 
  Dim Resultat As String 
  Dim oNom As Object 
  Dim Plages As Object, oEnum As Object, Cellule As Object 
  
  'Définit le premier nom dans le classeur 
  oNom = ThisComponent.NamedRanges.getByIndex(0) 
  
  Resultat = "Nom: " & oNom.Name & CHR(10) & _ 
    "Référence: " & oNom.Content & CHR(10) & _ 
    "Index feuille: " & oNom.ReferencePosition.Sheet & CHR(10) & _ 
    "Nom feuille: " & oNom.ReferredCells.SpreadSheet.Name & CHR(10) & _ 
    "Première colonne: " & oNom.ReferredCells.RangeAddress.StartColumn + 1 & CHR(10) & _ 
    "Dernière colonne: " & oNom.ReferredCells.RangeAddress.EndColumn + 1 & CHR(10) & _ 
    "Première ligne" & oNom.ReferredCells.RangeAddress.StartRow + 1 & CHR(10) & _ 
    "Dernière ligne: " & oNom.ReferredCells.RangeAddress.EndRow + 1 
  
  MsgBox Resultat 
  
  
  '--- Boucle sur les cellules du nom --- 
    ' 
    'Nota: Ne renvoie rien si les cellules sont vides. 
    ' 
  Plages = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")  
  Plages.insertByName("", oNom.ReferredCells) 
  oEnum = Plages.Cells.CreateEnumeration  
  
  While oEnum.hasMoreElements  
    Cellule = oEnum.NextElement  
    MsgBox Cellule.String  
  Wend  
  
End Sub

Mis à jour le 31 juillet 2013 SilkyRoad

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  
Sub SuppressionContenuCelluleNommee 
  Dim oNom As Object 
  
  'Définit le premier nom dans le classeur 
  oNom = ThisComponent.NamedRanges.getByIndex(0) 
  
  'Supprime le contenu de la cellule/plage nommée   
  oNom.ReferredCells.clearContents(com.sun.star.sheet.CellFlags.VALUE +_ 
    com.sun.star.sheet.CellFlags.DATETIME +com.sun.star.sheet.CellFlags.STRING +_ 
    com.sun.star.sheet.CellFlags.ANNOTATION +com.sun.star.sheet.CellFlags.FORMULA) 
  
  'Description du contenu supprimé: 
  '------------------------------- 
  'com.sun.star.sheet.CellFlags.VALUE: Valeurs numériques 
  'com.sun.star.sheet.CellFlags.DATETIME: Dates et Heures 
  'com.sun.star.sheet.CellFlags.STRING: Texte 
  'com.sun.star.sheet.CellFlags.ANNOTATION: Annotations(Commentaires) 
  'com.sun.star.sheet.CellFlags.FORMULA: Formules 
End Sub

Mis à jour le 31 juillet 2013 SilkyRoad

Pour supprimer un nom spécifique:

Code vb : Sélectionner tout
1
2
3
4
Sub SupprimerNom 
  'Supprime un nom appelé "TestNom1" 
  ThisComponent.NamedRanges.removeByName("TestNom1") 
End Sub
Pour supprimer tous les noms du classeur:
Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub SupprimerTousLesNoms 
  Dim i As Integer  
  Dim Cible As String 
  
  'Boucle sur les noms du classeur 
  For i = ThisComponent.NamedRanges.count - 1 To 0 Step -1 
    'Récupére le nom  
    Cible = ThisComponent.NamedRanges.getByIndex(i).name  
    'Suppression 
    ThisComponent.NamedRanges.removeByName(Cible) 
  next i 
  
End Sub

Mis à jour le 26 août 2013 SilkyRoad

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsable bénévole de la rubrique OpenOffice & LibreOffice : zoom61 -