[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 !

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

Messagepar Ascortel » 28 Mai 2019 17:54


La modération 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   AgrandirRéduire
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 a écrit:Pour faciliter la lecture, code mis entre balises par le modérateur.
Dernière édition par micmac le 29 Mai 2019 16:49, édité 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é
 
Message(s) : 5
Inscrit le : 28 Mai 2019 17:35

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

Messagepar Ascortel » 28 Mai 2019 20:20

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   AgrandirRéduire
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
Ascortel
Fraîchement OOthentifié
 
Message(s) : 5
Inscrit le : 28 Mai 2019 17:35

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

Messagepar Noonours » 29 Mai 2019 01:32

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   AgrandirRéduire
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é 12 fois


COOordialement,
Noonours

N’HÉSITEZ SURTOUT PAS À JOINDRE UN FICHIER

LibO 6.2.4.2 sous Windows 10
LibO 5.0.6.3 (obligation de version) sous Win 7
Avatar de l’utilisateur
Noonours
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 298
Inscrit le : 11 Mai 2013 01:11
Localisation : Aix en Provence

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

Messagepar Ascortel » 29 Mai 2019 06:49

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   AgrandirRéduire
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   AgrandirRéduire
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
Ascortel
Fraîchement OOthentifié
 
Message(s) : 5
Inscrit le : 28 Mai 2019 17:35

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

Messagepar Dude » 29 Mai 2019 08:19

Salut,

Relis ce que Noonours t'écrit :
Code : Tout sélectionner   AgrandirRéduire
oAdd CreateUnoDialogDialogLibraries.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.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 20778
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar Ascortel » 29 Mai 2019 11:57

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
Ascortel
Fraîchement OOthentifié
 
Message(s) : 5
Inscrit le : 28 Mai 2019 17:35

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

Messagepar Dude » 29 Mai 2019 15:55

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.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 20778
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)