Macro : Vérouiller deux cellules en fonction d'une autre et ensuite activer une liste déroulante

Bonjour à toutes et a tous,

J’utilise quotidiennement LibreOffice mais je suis un débutant sur la partie macro Basic.

Problématique :
Je veux verrouiller “B2” et “C2” en affichant “Attention ! P0” dans ces deux cellules si “A2” contient strictement la valeur “0” et non pas une cellule vide. Car une cellule vide ou contenant la valeur “0” est la même chose.
Les cellules “B2” et “C2” contiennent des validités. La cellule “C2” a une liste déroulante.
Si “A2” ne contient pas de valeurs alors j’active la liste déroulante de “B2” et je peux écrire dans “C2”.

Je souhaite effectuer cette action sur la plage “A2:C31”.

J’ai commence ce code ci-joint mais je suis bloqué sur l’activation de la liste déroulante.

Sub ValeurCellule
 
Dim oDoc, Feuille As Object 
Dim P0, Motif, TypeC As Object
 
	oDoc = ThisComponent 
	Feuille = oDoc.getSheets.getByName("Modèle") 
	 
	P0 = Feuille.getCellRangeByName("A2")
	Motif = Feuille.getCellRangeByName("B2")
	TypeC = Feuille.getCellRangeByName("C2")
	
	If P0.Type <> com.sun.star.table.CellContentType.EMPTY Then
		Motif.String = "Attention P0 !" 
		TypeC.String = "Attention P0 !" 
	 	
	Else TypeC.clearContents(com.sun.star.sheet.CellFlags.STRING) 
  			Motif.clearContents(com.sun.star.sheet.CellFlags.STRING)
  			
  	End If

End Sub

Agri.ods (37.8 KB)

D’avance merci pour votre aide.

Nazée

Bonjour Nazée, le forum

J’avoue ne rien comprendre à votre fichier ci-dessus (Agri.ods)
et n’être d’aucun secours au sujet des macros.

:confused: Désolé de ne pouvoir vous venir en aide avant d’avoir reçu toutes les infos utiles au fonctionnement du fichier précité.

Pourquoi la macro ValeurCellule?
Quels résultats attendus, en fonction des valeurs entrées…

Ne perdez pas courage avec des éléments supplémentaires quelqu’un pourra vous aider à résoudre ce PB d’affichage en B2:C31 au vu du contenu de A2:A31 si je vous ai bien compris

Bonsoir njhub, le Forum

Merci de ton retour.

Ce fichier me permets d’automatiser un certain nombre de fruits pour un inventaire périodique.

  • La colonne “P0” pour indiquer que le fruit n’est plus commercialisé dans le magasin,
  • La colonne “Motif” pour la couleur du fruit,
  • TypeC pour combien de types sont commercialisés.

Si je saisie la valeur “0” dans “P0” alors je verrouille les cellules “Motif” et “TypeC”.
S’il n’y a pas de valeur “0” dans “P0” alors je peux utiliser la liste déroulante et écrire dans “TypeC”.
Bien entendu “P0”, “Motif” et “TypeC” contiennent des validités:

  • P0 pour écrire que la valeur “0”,
  • Motif pour la liste déroulante,
  • TypeC pour des valeurs comprises entre 0 et 22.

Quand j’efface la valeur de “P0”, impossible de pouvoir utiliser la liste déroulante et pourtant elle est bien visible. Cependant j’ai constaté que je peux écrire dans la cellule “Motif”.

Une fois cette activation de la liste déroulante résolue car c’est sur ce point que je suis bloqué, une boule sera effectuée pour chaque ligne de la plage "A2:C31.

Bonne soirée.

Bonjour Nazée, le forum

Testez si après avoir basculé les valeurs en colonne PO, puis enregistré le fichier et rechargé (par le menu fichier) les valeurs des listes déroulantes deviennent utilisables.

Auquel cas il faudrait introduire cette procédure dans votre macro…

Bonsoir njhub, le Forum

Pourras-tu joindre le fichier.

Justement c’est cette procédure qui me manque.
Si tu peux faire une macro cela m’aiderait énormément.
De mon coté je continue à effectuer des tests et des recherches.

Merci beaucoup.

Nazée

Bonjour Nazée, le forum

Avez vous testé ce que je vous proposais?
Quel est le résultat?

Je n’ai aucune prétention au sujet des macros
en partageant les informations on arrivera peut être à quelque chose de fonctionnel

Je pense que le tableau que vous avez mis à disposition est incomplet, faire une macro pour quelques lignes est démesuré, partagez votre vrai tableau svp

Bonsoir njhub, le forum

Oui j’ai fait le test.
Cela n’a pas fonctionner car Calc me demande de réactiver la macro. Cela est tout à fait logique car la macro effectue cette tâche.

Ce n’est pas ce que je voudrais faire puisque la macro va permettre d’automatiser cette tâche d’alerte. Ce tableau sera dupliqué plusieurs fois dans la même feuille par une autre macro que je n’ai pas encore commencée.
Agri.ods (40.4 KB)

Bonjour Nazée, le forum

  • Je ne voie pas d’identification de l’item inventorié
  • Seule la ligne 5 est gérée par la macro, alors que la table fait trente lignes
  • 1 seule valeur (0) active en colonne PO
  • La cellule C5 réagit au 0 dans la cellule B5, qui contenant 0 désactive la liste déroulante en la vidant, mais ne fait pas apparaître “Attention P0 !”
  • La cellule D5 réagit au 0 dans la cellule B5, qui contenant 0 désactive la liste déroulante, mais ne fait pas apparaître “Attention P0 !”
  • La colonne E (Etat) n’est pas gérée par la macro, la liste déroulante est toujours disponible
    :confused:

Bonjour njhub, le forum

Désolé pour ces derniers jours car j’étais un peu malade.

Tes remarques sont justes, cependant je cherche en premier lieu à activer la liste déroulante de la première ligne par la macro ensuite choisir une valeur de la liste.
Une fois cela est fait alors cette méthode sera propagée sur toute une plage bien sûr avec une boucle.