J'ai besoin d'intimité. Non pas parce que mes actions sont douteuses, mais parce que votre jugement et vos intentions le sont.
5158 links
Macros de tiddlywiki pour générer l’emplacement des images/liens vers des documents externes.
Parce que je ne le retiens jamais...
Avec LibreOffice, si l'on veut dupliquer un champ permettant de choisir un élément dans une liste déroulante, il y a deux étapes à réaliser :
Pour créer le champ de liste, cliquer sur Insertion/Champ/Autre champ/Fonctions/Liste de saisie
.
Dans Élément
, saisir les termes du premier élément et cliquer sur le bouton Ajouter
. Refaire la manipulation autant de fois qu'il y a d'éléments dans la liste.
Dans Nom
, donner un nom au champ.
Cliquer sur Insérer
et fermer la boite de dialogue.
Sélectionner le champ ainsi créé et cliquer sur Insertion/Repère de texte
. Saisir un nom pour le marque page que l'on veut créer.
Se déplacer dans le texte à l'endroit où l'on veut dupliquer la valeur de notre champ.
Cliquer sur Insertion/Renvoi...
.
Dans la boite de dialogue qui s'affiche, dans le menu Type
, cliquer sur Repères de texte
et sélectionner notre marque page précédent.
Dans le menu Référer en utilisant
, sélectionner Texte référencé
.
Cliquer sur Insérer
.
Le texte sera dupliqué et chaque changement dans le premier champ se répercutera sur le(s) champ(s) dupliqué(s).
Les procédures sont évidement stockées dans le module ThisWorkbook du projet VBA, j'ai ici choisi d'utiliser mon classeur (.xlsb) de macros personnelles.
Sub resetmenu()
Application.CommandBars("cell").Reset
End Sub
'**********************************************************
Private Sub Workbook_Open()
resetmenu
'appel la macro qui effacera la commande du menu contextuel
'crée lors de la session précédente
Dim Cpop1 As CommandBarPopup
Dim Cbut As CommandBarButton
Dim MaBarre As CommandBar
Set MaBarre = Application.CommandBars("cell")
Set Cpop1 = MaBarre.Controls.Add(msoControlPopup)
'on ajoute le popup qui va comporté tout les boutons
With Cpop1
.Caption = "Modifier la casse" 'label du sous-menu
End With
'on ajoute un bouton au sous-menu contextuel
Set Cbut = Cpop1.Controls.Add(Type:=msoControlButton)
With Cbut
.FaceId = 403 ' bouton avec icône (référence à une table)
.Caption = "MAJUSCLE" ' label du bouton
.OnAction = "majuscule" 'appel de la macro associée
End With
'on répéte l'opération pour les deux autres boutons
Set Cbut = Cpop1.Controls.Add(Type:=msoControlButton)
With Cbut
.FaceId = 404
.Caption = "minuscule"
.OnAction = "minuscule"
End With
Set Cbut = Cpop1.Controls.Add(Type:=msoControlButton)
With Cbut
.FaceId = 306
.Caption = "Nom Propre"
.OnAction = "nompropre"
End With
End Sub
Les procédures sont stockées dans une feuille de module de code du projet VBA, du même classeur (.xlsb) de macros personnelles.
Dim Ch As Range
Sub majuscule()
For Each Ch In Selection
'Pour chaque cellule Ch de ma sélection Selection
'Selection permet de renvoyer l'objet sélectionné dans la fenêtre active
If Not Ch.HasFormula Then
'la propriété HasFormula de l'objet range permet de tester qu'aucune
' cellules de la plage ne contiennent de formule, dans ce cas la conversion est ignorée
Ch.Value = UCase(Ch.Value) 'Upper Case = MAJUSCULE
End If
Next Ch
End Sub
'*************************************************************
Sub minuscule()
For Each Ch In Selection
If Not Ch.HasFormula Then
Ch.Value = LCase(Ch.Value) 'Lower Case = minuscule
End If
Next Ch
End Sub
'*************************************************************
Sub nompropre()
For Each Ch In Selection
If Not Ch.HasFormula Then
Ch.Value = Application.Proper(Ch.Value)
'si une fonction Excel n'a pas d'équivalent en VBA
'utiliser le la fonction Excel (anglais) comme une méthode de l'objet application
End If
Next Ch
End Sub