Bonjour
Il faut en effet un programme qui :
- recherche dans la feuille générale le n° de contrat
- si celui-ci n’est pas vide on continue (sinon on ne fait rien)
- on recherche dans la feuille Base le contrat correspondant
- si la recherche est fructueuse on récupère l’adresse de la cellule contenant le n° de contrat
- on met Oui dans la cellule ayant le numéro de colonne suivant (col. B dans ton exemple)
Ce qui donne quelque chose comme :
Sub OnPrint
dim oSheet as object, oCell as object, oFind as object, oResult as object
oSheet = thiscomponent.sheets.getByName("Feuille1")
oCell = oSheet.getCellRangeByName("C3")
oSheet = thiscomponent.sheets.getByName("Base")
if oCell.string <> "" then
oFind = oSheet.createSearchDescriptor
with oFind
.SearchString = oCell.string
.SearchByRow = true
end with
oResult = oSheet.findFirst(oFind)
if not(isnull(oResult)) then
with oResult.CellAddress
oCell = oSheet.getCellByPosition(.Column + 1, .Row)
end with
oCell.string = "Oui"
end if
end if
End Sub
Pour que le programme soit lancé automatiquement lors de l’impression du classeur faire Outils▸Personnaliser▸onglet Événements▸sélectionner Imprimer le document dans la liste▸cliquer Macro pour sélectionner la macro.
Il faut aussi avoir autorisé l’exécution des macros dans Outils▸Options▸LibreOffice▸Sécurité▸Sécurité des macros : le niveau Moyen est un bon compromis de sécurité (la confirmation d’autoriser l’exécution est faite à l’ouverture du document)
Voir SurImpression.ods
Cordialement