[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 !
boulauventre
Membre OOrganisé
Membre OOrganisé
Messages : 80
Inscription : 06 juin 2016 20:23

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

Message par boulauventre »

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

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

                                                                      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:
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par boulauventre le 30 juil. 2018 11:38, modifié 1 fois.
libre office 6.4.4 sous Windows 10
JacquesF
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 08 oct. 2012 12:40

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

Message par JacquesF »

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)
Avatar de l’utilisateur
Eric Villeneuve (11)
Fraîchement OOthentifié
Messages : 6
Inscription : 01 juil. 2013 16:14

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

Message par Eric Villeneuve (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
++
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Windows 10 - LibreOffice Version: 5.2.5.1 (x64)
boulauventre
Membre OOrganisé
Membre OOrganisé
Messages : 80
Inscription : 06 juin 2016 20:23

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

Message par boulauventre »

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 6.4.4 sous Windows 10
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

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

Message par Hubert Lambert »

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.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOOo 4.1.7 sur Win10
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)