par ex, si A1 affiche tel résultat, exécuté cette macro, si elle affiche un autre résultat, exécuté une autre
Bonjour ,
Si c’est pour affecter un format ,le mieux c’est de passer par le Menu : Format-> Conditionnel .On a le choix entre condition, Echelles de couleurs etc …et insérer les différentes conditions .
Autrement ,
Click droit sur la feuille concernée ,choisir "Evenements de la feuille "
et assigner une macro de ce type :
Sub Main(oEv as Object)
If oEv.supportsService(“com.sun.star.table.Cell”) Then
If oEv.CellAddress.Column = 3 And oEv.cellAddress.Row = 13 then
If oEv.Value = 9800 then
macro1()
Else
macro2()
End If
End If
End If
End Sub
Sub macro1
MsgBox "la Cellule d14 est égale à 9800 "
End Sub
Sub macro2
MsgBox "la Cellule d14 est différente de 9800 "
End Sub
ceci n’a pas fonctionner pour moi, sa me dit il y a des erreurs dans la macro , essaie de me la débuguer stp, il ya des erreur basic , et moi je suis novice , et aussi , dans le format conditionnel, je n’ai pas trouvé comment me faire
Re,
Il m’est difficile d’aider si vous ne dites pas ce que vous voulez faire exactement . Chez moi ,cette macro marche mais elle ne peut être exécutée qu’à partir de la table en lui assignant un évènement .(double click ou modification par ex) . Quel est le message de l’erreur et qu’avez-vous modifié à la macro ?
Pour le format conditionnel je vous renvoie à cette aide : ici
En premier lieu, j’ai copier la macro que vous avez proposé, puis je suis allé dans calc, dans le menu outils>macro> donc j’ai créé une macro que j’ai nommé module 5, dans cette macro j’ai collé celle que vous m’avez proposé toute entière comme ceci
Sub Main(oEv as Object)
If oEv.supportsService(“com.sun.star.table.Cell”) Then
If oEv.CellAddress.Column = 3 And oEv.cellAddress.Row = 13 then
If oEv.Value = 9800 then
macro1()
Else
macro2()
End If
End If
End If
End Sub
Sub macro1
MsgBox "la Cellule d14 est égale à 9800 "
End Sub
Sub macro2
MsgBox "la Cellule d14 est différente de 9800 "
End Sub
puis j’ai suivi ce que vous avez dit , je l’ai assigné a la page , et rien ne se passe , quand je change de contenu dans d14
et quand j’essaie d’executé cette macro , on me dit erreur de syntaxe basic , et sa me met en sélection cette parti de la macro oEv.supportsService(
Bonjour ,
Voici le code de ma macro avec l’arborescence .Je l’ai essayée dans plusieurs feuilles et elle fonctionne .L’évènement doit être affecté à “Main” dans votre Module 5 .(chez moi c’est Module1)
j’admire le dévouement que vous avez, pour me rendre plus intelligente, mais je sens que ça va venir, je n’ai juste pas compris comment vous avez fait, pour avoir ces trois lignes avec des flèches Vérte dans le seul module 1
===> Main
===> macro1
===> macro2
parce que moi ! je sais pas faire cela, quand je crée une macro, j’ai qu’une seule flèche verte, je sais pas comment marchent ces choses-là, svp expliquez-moi comment je peux procéder , pour avoir le résultat que vous avez dans cette image
Re,
C’est l’Edi Basic qui fait ça .Du moment que vous le lancez à partir de Outils–> Macros—> Gérer les Macros → Basic —> Nouveau ou Editer si le module est déjà créé .
Sub Main suivi de end sub s’écrit d’office et quand vous tapez sub ,automatiquement il crée end sub .
Voici un lien pour un guide pour les macros :ici
Ps :Ma macro se trouve dans “Mes macros” mais elle aurait pu se trouver directement dans l’arborescence en dessous du fichier calc concerné (sesame … -->Standard—> Module
3 jours, que j’essaie de comprendre pourquoi le bidule ne fonctionne pas chez moi, vous m’avez envoyé le lien ou je dois apprendre à coder, mais c’est le bidule qui fonctionne pas, pourtant je vous avais demandé de le débugué, donc voilà, déjà j’ai trouvé une erreur, et imaginez un peu la difficulté que j’ai à trouver une erreur quand, vous ! m’avez dit que c’est juste, donc regardez, déjà cette ligne-là est fausse
If oEv.supportsService(“com.sun.star.table.Cell”) Then
vous l’avez écrite ainsi, sauf qu’il fallait mettre des (“com.sun.star.table. Cell”) à la place de (“com.sun.star.table. Cell”) alors a cause de ces guillemets “” j’ai passé 3 jours à brasser dans le vide de pourquoi ça ne fonctionne pas, donc Svp, si vous pouvez vérifier pourquoi chez vous ça fonctionne, ou si y a d’erreurs, parce que ça ne fonctionne toujours par chez moi , la liste est écrite comme chez vous mais y a toujours une erreur de syntaxe, débuguez la macro svp, essayez de voir, si c’est parce que j’utilise linix et vous un Windows, ou je sais pas, mais j’ai besoin de cette macro;
ha j’ai compris , vous avez aussi oublié de me dir que , apres avoir choissis la feuille, je clique droit et je choisis événement de la feuille , il ya une boite de dialogue , vous avez oublié de me dir que dans cette boite de dialogue , je devais choisir “contenue modifié”, sa manque de présision pour une débutante mais merci pour tout , je vais voir ce que je pourrais faire avec cela
Bonjour ,
Je ne l’avais as dit ?
Mais ma copie d’écran était bonne et je vois que vous les tapez aussi comme ça dans votre réponse . En fait ,c’est le formulaire de ce forum qui les transforme .Il vaut mieux faire une copie écran ,comme je l’ai fait par la suite
oui c’est bon , mais toujours est il que , votre macro n’affiche qu’un messagebox , c’est le méme , qu’on écrive 9800 ou autre , le message est le méme , svp si vous pouvez la corrigé , merci
A part vous dire ,que j’ai assigné la macro à ‘Contenu modifié’ et que je l’ai assignée ensuite à ‘Double-clic’ et qu’elle fonctionne .Si votre macro est conforme à ma copie écran ça devrait donner un message différent .
Vous êtes sûre que le texte des 2 MsgBox n’est pas identique ?
Bonjour ,
Non c’est une commande “If Then Else” . Voir explication ici
J’ai Libreoffice 7.2.0.4 sous Windows et toutes les options cochées dans Options—> Edi Basic dont la suggestion de code et complétion de code . Mais je ne pense pas que ça joue dans ce cas ci Je ne vois rien d’autre pour résoudre ce problème .