[Résolu][Calc] Mon tableau ne se complète pas

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Ascortel
Fraîchement OOthentifié
Messages : 5
Inscription : 28 mai 2019 18:35

[Résolu][Calc] Mon tableau ne se complète pas

Message par Ascortel »


La modération vous a écrit: :alerte: Le titre de votre question n'est pas assez explicite ou ne reflète pas le problème que vous décrivez :
<Problème d'activation de macro>
Nous l'avons donc modifié. En effet, lors d'une recherche, ce sujet risquait de passer inaperçu et donc de ne pas aider d'autres personnes ayant le même problème que vous.
es termes implicites comme problème n'ont pas besoin d'être mentionnés.

Bonjour à tous,

Je suis actuellement en train de créer une macro me permettant de gérer mon stock de produits.

J'ai déjà créer une page d’accueil avec 3 boutons dont l'un donne accès à une boite de dialogue dont le but est de permettre le remplissage des différents tableau représentant le stock.

Mon souci est le suivant :

Lorsque je valide cette boite de dialogue j'aimerais vérifier que tout les champs sont bien remplis sinon afficher un message d'erreur.
Pour le moment le message ne s'affiche pas et si je remplis les champs avec D1 pour le premier, mon tableau ne se complète pas.

Voici le code utilisé :

Code : Tout sélectionner

Sub ActivForm

If TextField1 = "" Or TextField2 = "" Or TextField3 = "" Or TextField4 = "" Or DateField1 = "" Or NumericField1 = ""Then

msgBox ("toutes les informations ne sont pas remplies") Else

If TextField1 = "D1"Then 

If Sheets("D1").Range("B2") = ""Then 
Sheets("D1").Range("B2") = TextField2

End If
End If
End If
End Sub
Faut-il indiquer une "référence" pour tout les champs de type TextField ?

Au cas où voici le fichier dont il est question :

https://we.tl/t-Jqyl9TeXBa

En vous remerciant par avance de vos avis/conseils
La modération vous a écrit: Pour faciliter la lecture, code mis entre balises par le modérateur.

Dernière modification par micmac le 29 mai 2019 17:49, modifié 3 fois.
Raison : [Résolu] placé en début de titre (avant la balise [Calc]
LibreOffice 6.1.6 sous Windows XP
Ascortel
Fraîchement OOthentifié
Messages : 5
Inscription : 28 mai 2019 18:35

Re: [Calc] Mon tableau ne se complète pas

Message par Ascortel »

J'ai un peu progressé sur le sujet et j'ai réussi à afficher la MsgBox en remplaçant les "" par empty.

Cependant elle s'affiche dans tout les cas de figure et mon tableau ne se rempli pas :(

J'ai fait quelques essais en changeant les instructions conditionnelles mais cela ne s’améliore pas pour autant.

Auriez vous quelques conseils ?

Voici le code :

Code : Tout sélectionner

Sub ActivForm

If TextField1 = empty Or TextField2 = empty Or TextField3 = empty Or TextField4 = empty Or DateField1 = empty Or NumericField1 = empty Then

msgBox ("toutes les informations ne sont pas remplies") 

ElseIf TextField1 = "D1"Then 

	If Sheets("D1").Range("B2") = empty Then 
	Sheets("D1").Range("B2") = TextField2

End If
End If
End Sub
LibreOffice 6.1.6 sous Windows XP
Avatar de l’utilisateur
Noonours
PassiOOnné
PassiOOnné
Messages : 501
Inscription : 11 mai 2013 02:11
Localisation : Aix en Provence

Re: [Calc] Mon tableau ne se complète pas

Message par Noonours »

Bonjour Ascortel et bienvenue,

En pièce jointe ton fichier modifié pour que ton formulaire fonctionne;
J'ai modifié le nom du bouton "Terminer" qui s’appelait "End" ( :!: End est une commande Basic à ne pas utiliser pour nommer d'autres objets ou variables. Ça faisait planter le formulaire qui fermait sans être fonctionnel!)
J'ai aussi changé le "type de bouton" (onglet général) pour le type "OK", afin que la macro se poursuive. (cliquer sur la croix de fermeture par exemple ne lancera pas la macro)
Le script ci dessous est commenté pour plus de compréhension, mais je t'invite à te documenter si tu débutes en programmation Basic :wink:

Code : Tout sélectionner

Sub FormShow

Dim Rouge As Long
Dim oAdd As Object
Dim BienRempli As Boolean

	Rouge = RGB(255,0,0)

    DialogLibraries.LoadLibrary("Standard")
    oAdd = CreateUnoDialog( DialogLibraries.Standard.Formulaire ) 'création du formulaire

 Do 'on attaque une boucle qui execute les instructions suivantes:

 BienRempli = true	'on initialise un marqueur "BienRempli" sur "vrai"
    if oAdd.Execute() = com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then 'si on clique sur terminer, alors:
    	for each controle in oAdd.controls() 'pour tous les controles du formulaire,
        	if controle.supportsService("com.sun.star.awt.UnoControlEdit") then	'si c'est un champ "TextField" , alors :	
        		if controle.text = "" then 		'si le textfield est une chaîne vide, alors:
        		 controle.Model.BackGroundColor = Rouge 'on met le fond en rouge
        		 Bienrempli = False		'et le marqueur "BienRempli" devient "faux"
        		else 						'sinon
        		 controle.Model.BackGroundColor = -1 'on remet le fond en blanc (par défaut)
        		endif
        	endif
 		next controle 'on recommence pour le controle suivant dans la boucle for/each
		if not BienRempli then msgbox ("toutes les informations ne sont pas remplies") 'on fait apparaitre ce message si "BienRempli" est "faux"
    endif
 Loop Until BienRempli 'et on reprend la boucle jusqu'à ce que "Bienrempli" soit vrai

'suite du codage ici

 oAdd.dispose

End Sub
Gestion des stocks.ods
(15.47 Kio) Téléchargé 114 fois
COOordialement,
Noonours procrastinateur perfectionniste: "Je fais rien, mais demain je l'ferai mieux"

Pour obtenir la réponse la plus précise possible, VEUILLEZ JOINDRE UN FICHIER

LibO 7.6.5.2 Stable et OpenOffice 4.1.15 sous Windows 10
Ascortel
Fraîchement OOthentifié
Messages : 5
Inscription : 28 mai 2019 18:35

Re: [Calc] Mon tableau ne se complète pas

Message par Ascortel »

Bonjour Noonours,

Je te remercie de ta réponse qui m'éclaire un peu plus. J'ai cependant une question à quoi sert cette ligne

Code : Tout sélectionner

oAdd.dispose
?

Concernant le remplissage du tableau suis je sur la bonne voie avec ce code mis à la suite du tien

Code : Tout sélectionner

 If TextField1 = "D1" Then 

	If Sheets("D1").Range("B2") = empty Then 
	 Sheets("D1").Range("B2") = TextField2

	Endif
Endif
Ou faut il que je définisse un tableau ?

Merci
LibreOffice 6.1.6 sous Windows XP
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Mon tableau ne se complète pas

Message par Dude »

Salut,

Relis ce que Noonours t'écrit :

Code : Tout sélectionner

oAdd = CreateUnoDialog( DialogLibraries.Standard.Formulaire ) 'création du formulaire
oAdd est donc l'objet représentant la boîte de dialogue. La méthode dispose permet sa fermeture.

Deux choses qui me semblent importantes :
  1. Je ne sais pas où tu as pêché ton code mais il ne fonctionnera pas comme ça. Tu dois bien sûr instancier chaque objet en partant du document.
    Regarde dans les suprêmes de code, il y a des exemples pour l'accès à une feuille puis à une plage ou une cellule.
  2. Utiliser le tableur pour une gestion de stock, c'est un peu comme visser avec un marteau. Le module adapté est Base.
    Là aussi, tu trouveras en section Projets, des exemples pour t'inspirer.
Enfin, si tu es débutant, je te propose l'extension zBasic avec des fonctions plus simples à manipuler.
Ascortel
Fraîchement OOthentifié
Messages : 5
Inscription : 28 mai 2019 18:35

Re: [Calc] Mon tableau ne se complète pas

Message par Ascortel »

Merci de ta réponse Dude, je suis en effet en pleine recherche dans cette section et j'ai trouvé un document qui devrait bien m'aider.

Je suis d'accord avec toi pour ta seconde remarque. L'objectif de ce fichier et de faire une gestion de stock qui serait utilisée par plusieurs utilisateurs. Ne maîtrisant pas du tout le code pour créer une interface à partir d'une base de donnée je pensais passer par Calc en me disant qu'avec les macro cela serait plus simple. Au cas où je vais regarder cette section Projet, qui sait cela me donnera peut être des idées.
LibreOffice 6.1.6 sous Windows XP
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Mon tableau ne se complète pas

Message par Dude »

Ascortel a écrit :avec les macro cela serait plus simple.
Oxymore 8)
En plus un classeur n'est pas du tout adapté pour de l'accès conccurentiel.

Merci d'ajouter le classique [Résolu] au titre de ton 1er message.
Verrouillé