[Résolu][Calc] Incrémenter le nom d'une variable

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] Incrémenter le nom d'une variable

Messagepar boulauventre » 25 Juil 2018 22:09

Bonjour,

J'ai une feuille dans mon fichier calc, ou j'ai des numéros de série par rapport à une lettre de l'alphabet. Le problème est que ce numéro de série peux être amené à changer.

Je souhaiterais ne devoir modifier que le numéro dans la feuille et non tous les numéros dans mes macros.

J'ai fait un fichier exemple ou en G1, il y a le numéro de série recherché.

Lorsque je clique sur le bouton, il faudrait que ca m'affiche la variable Txt2.

Voici le code :

Code : Tout sélectionner   AgrandirRéduire
Sub NomVariables




      monDocument3 = ThisComponent
       lesFeuilles3 = monDocument3.Sheets
       maFeuille3 = lesFeuilles3.getByName("Feuille1")
       maCellule3 = maFeuille3.getCellRangeByName("G1")
       Txt = maCellule3.String
       '-----------------------------------------------------------------------------------------------
       'Nous commencons une boucle
       '---------------------------------------------------------------------------------------------------
       u = 1
       For t = 6 to 13
       
       maCellule3 = maFeuille3.getCellRangeByName("A" & t)

       Coug & u = maCellule3.String
       
       u = u + 1
       Next u

   
                                 Select case Txt

                              
                              case "252627", "282930", "313233", "343536", "373839", "404142"
                                  Txt2 = "ALPHA"

                              case "616263", "646566", "676869", "707172", "737475", "767778"
                                 Txt2 = "BRAVO"                                  

                              case "434445", "464748", "495051", "525354", "555657", "585960"
                                  Txt2 = "CHARLIE"

                              case  Coug1, Coug2, Coug3, Coug4, Coug5, Coug6, Coug7, Coug8
                                  Txt2 = "DELTA"

                              case  "858687" , "888990" , "919293"
                                  Txt2 = "ECHO"


                               case  "959697" , "9899100" , "101102103" , "104105106"
                                  Txt2 = "GOLF"

                              Case 1

                              Txt2 = InputBox ("Quelle lettre de l'alphabet ?")
                              
                              Case 0
                                    Exit Sub
                              End Select
                              
Print Txt2
End Sub



Je souhaiterais que dans ma boucle, la variable Coug s'incrémente par rapport à la colonne A

exemple : Coug1 = A6, Coug2 = A7, Coug3 = A8 etc...

Ainsi je pourrais remplacer la saisie des numéros de série par des variables.

Code : Tout sélectionner   AgrandirRéduire
                                                                      case "434445", "464748", "495051", "525354", "555657", "585960"
                                  Txt2 = "CHARLIE"

                              case  Coug1, Coug2, Coug3, Coug4, Coug5, Coug6, Coug7, Coug8
                                  Txt2 = "DELTA"



Merci d'avance de votre aide :super:
Pièces jointes
essai-forum.ods
(13.94 Kio) Téléchargé 9 fois
Dernière édition par boulauventre le 30 Juil 2018 12:38, édité 1 fois.
libre office 5.4 sous Windows 10
boulauventre
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 64
Inscrit le : 06 Juin 2016 21:23

Re: [Calc] Incrémenter le nom d'une variable

Messagepar JacquesF » 27 Juil 2018 20:42

Bonjour,

Je ne vois pas très bien le but de la manip, mais comme je n'ai pas trouvé dans l'aide de fonction capable d'évaluer une variable dont le nom serait composé de deux parties (équivalent de eval en shell pash par exemple), je pense qu'il serait plus simple de passer par les fonctions de recherche de Calc (ou via le DataArray de la plage si tu veux le faire en macro).
Une fois la position de la cellule récupérée en A (dans ton fichier exemple), tu peux rechercher la position de la cellule correspondante en B, en traitant le cas des cellules fusionnées (possible aussi par macro) pour récupérer le contenu.
A mon avis, il serait préférable de réorganiser un peu le classeur, peut-être y ajouter une colonne avec le contenu de la réponse voulue (DELTA, etc...) en face de chaque référence et de masquer la colonne, plutôt que de tenter d'évaluer une variable.

Maintenant, comme je n'ai probablement pas tout compris à ton problème, je me doute que ma réponse ne solutionnera pas tout. C'est peut-être juste une piste à explorer.

Jacques
LibreOffice 5.4.7.2 Linux (et parfois Windows 7)
JacquesF
Membre lOOyal
Membre lOOyal
 
Message(s) : 37
Inscrit le : 08 Oct 2012 13:40

Re: [Calc] Incrémenter le nom d'une variable

Messagepar Eric Villeneuve (11) » 28 Juil 2018 17:11

salut, pas trop compris ton besoin mais la variable s'incrémente et on y stocke le contenu de la cellule
si ca peut t'aider
++
Pièces jointes
essai-forum corrigé.ods
(13.97 Kio) Téléchargé 8 fois
Windows 10 - LibreOffice Version: 5.2.5.1 (x64)
Avatar de l’utilisateur
Eric Villeneuve (11)
Fraîchement OOthentifié
 
Message(s) : 5
Inscrit le : 01 Juil 2013 17:14

Re: [Calc] Incrémenter le nom d'une variable

Messagepar boulauventre » 30 Juil 2018 12:37

Bonjour,

Merci de vos réponse, j'ai finalement opté pour déclarer chaque variable correspondant à chaque cellule, ca doit me prendre grosso modo 400 lignes de codes mais au moins ça fonctionne. :super:

Merci encore

Boulauventre
libre office 5.4 sous Windows 10
boulauventre
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 64
Inscrit le : 06 Juin 2016 21:23

Re: [Résolu][Calc] Incrémenter le nom d'une variable

Messagepar Hubert Lambert » 30 Juil 2018 14:08

Bonjour,

Quand on ne connaît pas d'avance le nombre de valeurs à mémoriser, on utilise en général un tableau de données. Basic est assez limité (les "array" sont une structure obsolète et peu commode), mais il existe des alternatives comme les EnumerableMap... ou utiliser un langage plus évolué, comme python.
Je joins un exemple de ce qu'il est possible de faire avec la première solution.
Cordialement.
Pièces jointes
essai-forum.ods
(15.67 Kio) Téléchargé 9 fois
AOOo 4.1.2 sur Win7
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 946
Inscrit le : 06 Avr 2016 08:26


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Google [Bot] et 1 invité