[Résolu] [Calc] Récupérer numéros de ligne

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 !
footeux
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 03 sept. 2017 16:54

[Résolu] [Calc] Récupérer numéros de ligne

Message par footeux »

Bonjour,

J'ai un fichier qui m'aide à calculer des points pour un concours de pronostic.
Sur ce fichier il y a un bouton sur la feuille pronostic, qui ouvre une boite de dialogue avec des boutons à cocher, lorsque j'appuie sur enregistrer ma feuille pronostic se remplit bien selon mes conditions.
- Si le joueur n'a pas pronostiquer alors première ligne vide.
- Si le joueur à déjà pronostiquer, une demande de validation et si oui, on écrase les anciennes valeurs par les nouvelles.

Mon soucis, c'est que j'aimerais remplir la feuille score en même temps que la feuille pronostic lorsque je clic sur enregistrer.
Pour être précis, lorsque je rempli ma boite de dialogue et que je coche le banco du match 1, j'aimerais que sur la feuille score en colonne m on est la valeur =c + n °ligne, si c'est le match 2 la valeur =d+ n° ligne et ainsi de suite jusqu'au match 10 qui lui doit donner = L+n° de ligne.
Le numéro de ligne est exactement le même que celui de la feuille pronostic ( en fonction si le joueur a déjà pronostiquer ou pas).

J'aimerais donc savoir si il existe un procédé pour appliquer ce numéro de ligne sur une autre feuille (en occurrence la feuille score) ou bien si il faut refaire toute la recherche comme sur la page pronostic.

Cela fait un moment que je bute face à ce problème et c'est pourquoi je sollicite votre aide
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par footeux le 05 oct. 2017 17:11, modifié 1 fois.
LibreOffice 5.3.6.1 (x64) sous windows 10
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Calc] Récupérer numéros de ligne

Message par Hubert Lambert »

Bonjour,

Dans ta macro, la variable "llprono" correspond à l'index de la ligne en cours.
Les numéros d'index commençant à 0, il te suffit de faire "llprono+1" pour obtenir le numéro de la ligne à utiliser dans une formule.
Cordialement.
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)
footeux
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 03 sept. 2017 16:54

Re: [Calc] Récupérer numéros de ligne

Message par footeux »

bonjour,

j'ai essayé avec cette variable mais un message d'erreur s'affiche "valeur de propriété incorrect".
N'étant pas sur de moi je pensais que je faisais fausse route, si tu me dis qu'il faut creuser dans ce sens, peux tu me dires d'où vient ma faute ?
Voilà le code que je mettais pour essayer d'obtenir le résultat souhaitait.

Code : Tout sélectionner

 '--- On boucle les banco
For i = 1 To 10
   	cb = dialogue.getControl("cb" & i)
		if cb.State = True then
      
        fScore.getCellByPosition(13,llProno).FormulaLocal = "=" & fScore.getCellByPosition(i+2,llProno)  ' je fait +2 car le match en 1 est en colonne c
    End If
Next i
LibreOffice 5.3.6.1 (x64) sous windows 10
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Calc] Récupérer numéros de ligne

Message par Hubert Lambert »

Tu commets diverses erreurs :
- tu oublies que les index de colonnes et de lignes commencent à 0;
- tu inverses les arguments de la méthode getCellByPosition (il faut fournir l'index de colonne avant celui de la ligne) ;
- tu concatènes du texte ("=") avec des objets uno (fScore.getCellByPosition(i+2,llProno)).

Essaie ceci :

Code : Tout sélectionner

          adresse = split(fScore.getCellByPosition(i+1, llProno).AbsoluteName, "$")
          fScore.getCellByPosition(12, llProno).Formula = "=" & adresse(2) & adresse(3)
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)
footeux
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 03 sept. 2017 16:54

Re: [Calc] Récupérer numéros de ligne

Message par footeux »

bonjour,

Merci ta proposition fonctionne comme je le souhaite.
Les deux premières erreurs sont des erreurs bêtes que j'aurais dû éviter, a force d’essayer beaucoup de choses j'ai fini par m'embrouiller.
Je ne connaissais pas la fonction split, merci de me l'avoir fait découvert, après une recherche je comprends comment elle fonctionne.
Par contre il y a une partie que je ne comprends pas, pourquoi il faut mettre

Code : Tout sélectionner

& adresse(2) & adresse(3)
et pas simplement adresse ?
C'est peut être une question bête, mais j'aime bien comprendre le pourquoi du comment, çà pourrait m’être utile sur un autre sujet.
LibreOffice 5.3.6.1 (x64) sous windows 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Récupérer numéros de ligne

Message par Piaf »

Bonjour
Parce qu'adresse est un tableau, et Adresse(2) et Adresse(3) donnes les indexes du tableau que tu veux récupérer
Split.png
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
footeux
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 03 sept. 2017 16:54

Re: [Calc] Récupérer numéros de ligne

Message par footeux »

bonjour,

Merci pour ta réponse tout est plus clair.
Je vois que tu as utilisé xray pour me répondre. Je vois beaucoup de commentaire de novice dire que c'est compliqué à prendre en main, tu confirmes où il y a une méthode simple pour utiliser cet outil ?
LibreOffice 5.3.6.1 (x64) sous windows 10