Macro et formatage conditionnel sous CALC

Bonjour,
Je possède un fichier avec une macro sous calc qui n'est pas de moi. Cette macro permet lorsqu'on clique dessus d'inscrire (suivant le bouton) dans des cellules sélectionnées des caractères et colore via un formatage conditionnel.
Cette macro est insérée dans un calendrier me permettant d'effectuer un prévisionnel de planning.
Le problème est que je ne connais pas le language Basic et ne comprends donc rien ou presque à la macro que j'ai récupéré sur le net (d'où de nombreuses colonnes masquées). Egalement j'avais réussi à créer un bouton ANNULER qui me permettait d'annuler la dernière action effectuée.
Voilà, je suis perdu et j'ai beau tenté de chercher les solution sur le net, je ne réussi qu'à me perdre encore plus. Je vous demande donc de l'aide. Je peux vous fournir le fichier à la demande si vous le souhaitez.
Par avance merci !!!

Configuration: Macintosh / Safari 13.1

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour

    une autre proposition avec un bouton effacer au lieu de "annuler"
    formatage conditionnel uniquement sur 1ère sem janvier

    Inspiré d'ici
    1. Voici le lien du fichier. Merci d'avance pour le coup d'oeil. Sincèrement.
      https://www.cjoint.com/c/JEpqdHqzSPB
      1. Bonsoir

        la macro fonctionne, la dernière ligne du code
        oCell.string = label 

        récupere le nom du bouton
        pour le voir :
        affichage >barre d'outil >controle de formulaire
        icône ébauche (équere)
        clik droit sur le bouton>propriété



        pour la mise en forme conditionnelle
        1. OK je vais tester ça dès que je peux. Merci beaucoup !!! Je clôture le sujet si tout est OK et avec un grand merci.
      2. Effectivement tu as raison, je n'arrivais même pas à la comprendre mais avec ton aide et une recherche sur Google j'ai pu déchiffrer.
        Reste deux hic , c'est lorsque je sélectionne plusieurs cellules cela ne fonctionne pas. Je dois le faire cellule par cellule, ce qui est assez fastidieux. Existe t il une variante permettant cela ?
        Deuxième problème: j'ai bien des lignes de commande qui permettent l'annulation des actions précédentes :

        Function MajColor(oCell, sBtn As String, oDescriptor) As String
        Dim aRet() As String, aCell() As String, sCell As String, sRet As String
        Dim oSheetData As Object, oCellData As Object, oFound
        oSheetData = thisComponent.Sheets.getByName("Donnees")

        With oCell.CellAddress
        IF .Column < 6 OR .Column > 400 OR .Row < 4 OR .row > 205 Then
        aRet = split(oCell.AbsoluteName,".$")
        MajColor = aRet(1) : Exit Function
        End IF
        End With

        IF sBtn ="ANNUL" Then
        oCell.CellBackColor = -1
        oCell.CharColor = -1
        oCell.String = ""
        Else
        oFound = oSheetData.findFirst(oDescriptor)
        IF Not IsNull(oFound) Then
        aCell = split(oFound.AbsoluteName, ".$A$")
        sCell = "$B$" & aCell(1)
        oCellData = oSheetData.getCellRangeByName(sCell)
        oCell.CellBackColor = oCellData.CellBackColor
        oCell.CharColor = oCellData.CharColor
        oCell.String = oCellData.String
        End If
        End If
        ' MajColor = ""
        End Function

        Cependant lorsque je créé un bouton et lui assigne la macro, cela m'écrit "ANNUL" dans la case respectant la première instruction.

        Désolé du retard de ma réponse, les courses le chien , le petit, le ménage... ;-)
        1. Superbe !!! Merci beaucoup !!! Bon je n'ai plus qu'à me trouver "Basic pour les nuls" ou un traducteur !!!
          Merci à tous !!