[Résolu][Calc] sélectionner la dernière cellule non vide

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 !
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 17:46

[Résolu][Calc] sélectionner la dernière cellule non vide

Message par ZEK4 »

bonjour,

je voudrais changer la couleur du contenu de la dernière cellule NON VIDE dans une plage (une colonne, plusieurs ligne)=( "B12:B18"), en commençant par le haut ("B12")


merci
Dernière modification par ZEK4 le 10 avr. 2021 07:32, modifié 1 fois.
libre office calc ver 7.1.1.2 WIN 7(X64)
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 669
Inscription : 20 déc. 2017 14:45

Re: [Calc] sélectionner la dernière cellule non vide d'une p

Message par rollmops »

Bonjour,

Il n'y a pas besoin de macro pour faire ça. Tu utilises un formatage conditionnel.
OpenOffice 4.1.15 - Windows 10
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 17:46

Re: [Calc] sélectionner la dernière cellule non vide d'une p

Message par ZEK4 »

bonjour,
certes mais je veux l'intégrer dans une suite d'action se trouvant dans une macro.
merci
libre office calc ver 7.1.1.2 WIN 7(X64)
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 669
Inscription : 20 déc. 2017 14:45

Re: [Calc] sélectionner la dernière cellule non vide d'une p

Message par rollmops »

Je ne vois pas le rapport, c'est indépendant.
Nomme ta plage et fais ta MFC, la cellule se colorera automatiquement.
OpenOffice 4.1.15 - Windows 10
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 17:46

Re: [Calc] sélectionner la dernière cellule non vide d'une p

Message par ZEK4 »

cherche derniere cellule non vide.jpg
en en fonction des lignes insérées plus haut en "B10", les lignes se trouvant dessous se décalent et ma derniere cellule non vide ( ici "B12") peut se trouver en B11 ou B12, B13, B14 etc.

je ne vois pas comment par un format conditionnel, trouver cette cellule .

merci pour ton aide.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
libre office calc ver 7.1.1.2 WIN 7(X64)
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 09:55

Re: [Calc] sélectionner la dernière cellule non vide d'une p

Message par markotxe »

Bonjour ZEK4,
Il y a plusieurs façons de trouver cette dernière cellule occupée.
Le curseur(

Code : Tout sélectionner

.createCursorByRange
), par exemple, peut-être un outil intéressant dans Open Office puisqu'il qui permet de se déplacer où on veut...
Mais je me demande si une simple boucle ne pourrait pas suffire (vu qu'à priori, il n'y a pas l'air y avoir trop de ligne).
Dernière modification par markotxe le 09 avr. 2021 17:35, modifié 2 fois.
LibO 7.5.2 et Open Office 4.1.14
Window11
(Obligation de version).
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 17:46

Re: [Calc] sélectionner la dernière cellule non vide d'une p

Message par ZEK4 »

bonjour Markotxe,
en pj mon fichier,
Je débute, donc c'est très désordonné.

il faut regarder dans la sub imprimer
en ligne107, je noircie une plage ("B11:J18"). qui sera imprimée, elle contient des cellules grisées et une cellule contenant une info capitale qui se trouve immédiatement sous la dernière cellule remplie de la colonne B de ladite plage ; dans le fichier joint ("b12") contient la valeur capital
l'index de cette cellule fluctue en fonction du nombre de saisie de dépôts velo faits mais est toujours la derniere cellule non vide de la colonne B de ladite plage .

merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
libre office calc ver 7.1.1.2 WIN 7(X64)
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 09:55

Re: [Calc] sélectionner la dernière cellule non vide d'une p

Message par markotxe »

Bonsoir ZEK4,
ZEK4 a écrit :Je débute, donc c'est très désordonné.
Hé,hé,hé... Ne vous inquiètez pas, on est tous passé par là.

Après c'est vrai que j'ai eu un peu de mal à m'y retrouver. J'espère ne pas m'être trop perdu.
Sur votre macro "Imprime", j'ai ajouté le code ci-dessous (avec des explications...)
Une boucle qui parcourt la colonne B depuis la 11 eme ligne et colorie en vert fluo (oui,oui) la première cellule vide qu'elle rencontre.
Vert fluo, c'est pas temps par nostalgie des années 80 que pour faire des tests. :mrgreen:
Je vous laisse choisir la couleur souhaitée.
Vous trouverez toute la palette, ici.
https://www.openoffice.org/fr/Documenta ... ettefr.pdf

Voici le code:

Code : Tout sélectionner

For i = 10 to 23
         oCellCible = oMaFeuille1.getCellByPosition(1,i)
         If oCellCible.Value = 0 and oCellCible.String = "" Then
            oCellCible.CellBackColor = RGB(124, 252, 0)
     Exit for
         End If
     Next i  
COoordialement

Markotxe
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 7.5.2 et Open Office 4.1.14
Window11
(Obligation de version).
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 17:46

Re: [Calc] sélectionner la dernière cellule non vide d'une p

Message par ZEK4 »

on s'en approche :super: ,
votre code colore en vert la dernière cellule vide, moi je veux soit changer la couleur de police (blanc à l'impression) soit vider le contenu de la cellule situé au dessus ( dernière NON VIDE), comment sélectionner cette cellule ?
merci
libre office calc ver 7.1.1.2 WIN 7(X64)
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 09:55

Re: [Calc] sélectionner la dernière cellule non vide d'une p

Message par markotxe »

Oups désolé, heureusement que c'était écrit en majuscule et souligné...
ZEK4 a écrit :la dernière cellule NON VIDE
Voici, un rectificatif...
(Mais j'ai quand même gardé le vert fluo... :mrgreen: )

Code : Tout sélectionner

For i = 10 to 23
         oCellOccupee = oMaFeuille1.getCellByPosition(1,i)
         If oCellOccupee.Value = 0 and oCellOccupee.String = "" Then
            oCursor = oCellOccupee.getSpreadSheet().createCursorByRange( oCellOccupee )     
            oCursor.gotoOffset(0,-1)
            oCellderniere               = oCursor.getCellByPosition(0,0) 
            oCellderniere.CellBackColor = RGB(124, 252, 0)
            'ThisComponent.getCurrentController.select(oCellderniere)
            Exit for
         End If
     Next i  


Avec le fichier qui va bien.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 7.5.2 et Open Office 4.1.14
Window11
(Obligation de version).
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 17:46

Re: [Calc] sélectionner la dernière cellule non vide d'une p

Message par ZEK4 »

Bonjour,

PARFAIT ! :bravo: :bravo:

merci markotxe

je clos le sujet.
libre office calc ver 7.1.1.2 WIN 7(X64)
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 09:55

Re: [Résolu][Calc] sélectionner la dernière cellule non vide

Message par markotxe »

Bonjour ZEK4,
Un plaisir...
Je sais bien que le sujet est [Résolu] mais je me permets une petite intervention pour vous soumettre quelques suggestions à tester...
(cf les macros du fichier joint).
Bonne Journée

Markotxe
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par markotxe le 10 avr. 2021 12:12, modifié 1 fois.
LibO 7.5.2 et Open Office 4.1.14
Window11
(Obligation de version).
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 17:46

[Calc] insérer plage en conservant bas de tableau

Message par ZEK4 »

bonjour,
très bonne idée d'empecher trop de saisie, mais la macros depotest ne fonctionne pas , la msgbox apparait dès l'éxécution de la macro

Code : Tout sélectionner

oPlage_saisie_depot = oFeuille.getCellRangeByName("A11:I18")
    ocellDest           = oFeuille.getCellRangeByName("A12")
    oCell_de_Control    = oFeuille.getCellRangeByName("B19")
'__Copie/Colle (Valeur,texte,Formule etc...)________________________________________
    If oCell_de_Control.Value <> 0 and oCell_de_Control.String <>"" Then
       oFeuille.copyRange(ocellDest.CellAddress, oPlage_saisie_depot.RangeAddress)
    Else
       msgBox "Il y a trop de dépot, ça va empiéter sur le texte d'en bas"
    End If
'__On efface les données inutiles____________________________________________________
    oPlageNouvelle   = oFeuille.getCellRangeByName("B11:J11")
    oCell_a_nettoyer = oFeuille.getCellRangeByName("B12")
    oPlageNouvelle.ClearContents(7)'Efface numeros, textes, dates (pas les formules)
    oCell_a_nettoyer.ClearContents(8)'Efface le commentaire     
Si je comprends,

Code : Tout sélectionner

If oCell_de_Control.Value <> 0 and oCell_de_Control.String <>""
signifie : si la valeur de la cellule nommée oCell_de_Control est différente de 0 et si elle ne contient aucun texte alors...confirmez moi , merci
les 2 conditions doivent etre réunies pour voir le copyrange se faire, sinon envoyer la msgBox
ca devrait marcher puisque b19 est VIDE ! :fou:
libre office calc ver 7.1.1.2 WIN 7(X64)
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 09:55

Re: [Résolu][Calc] sélectionner la dernière cellule non vide

Message par markotxe »

Oui c'est bien ça...
Je fais des tests et je vous reviens...
 Ajout : Ah ben oui j'suis bête.. Il faut autoriser le collage si la cellule B19 est egale à zero OU sans texte ... (et non pas linverse...

Code : Tout sélectionner

Sub DepotTest
    MonDocument = ThisComponent
    oFeuille    = MonDocument.Sheets.getByName("DEPOT")
'------------------------------------------------------
    oFeuille.UnProtect("") ' déprotège la feuille
'------------------------------------------------------ 
    oPlage_saisie_depot = oFeuille.getCellRangeByName("A11:I18")
    ocellDest           = oFeuille.getCellRangeByName("A12")
    oCell_de_Control    = oFeuille.getCellRangeByName("B19")
'__Copie/Colle (Valeur,texte,Formule etc...)________________________________________
    If oCell_de_Control.Value = 0 Or oCell_de_Control.String = "" Then
       oFeuille.copyRange(ocellDest.CellAddress, oPlage_saisie_depot.RangeAddress)
    Else
       msgBox "Il y a trop de dépot, ça va empiéter sur le texte d'en bas"
    End If
'__On efface les données inutiles____________________________________________________
    oPlageNouvelle   = oFeuille.getCellRangeByName("B11:J11")
    oCell_a_nettoyer = oFeuille.getCellRangeByName("B12")
    oPlageNouvelle.ClearContents(7)'Efface numeros, textes, dates (pas les formules)
    oCell_a_nettoyer.ClearContents(8)'Efface le commentaire     
End Sub
Et le fichier... 
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par markotxe le 10 avr. 2021 12:39, modifié 3 fois.
LibO 7.5.2 et Open Office 4.1.14
Window11
(Obligation de version).
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 17:46

Re: [Résolu][Calc] sélectionner la dernière cellule non vide

Message par ZEK4 »

quand on remplie B19 AVEC un nombre ca marche !!!
ca insere

quand on remplie avec des lettres =>msgbox !
libre office calc ver 7.1.1.2 WIN 7(X64)
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25167
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Résolu][Calc] sélectionner la dernière cellule non vide

Message par Dude »

Salut,

Il faut se servir de la propriété .Type qui renvoie ce que contient la cellule :
http://www.openoffice.org/api/docs/comm ... tType.html
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 09:55

Re: [Résolu][Calc] sélectionner la dernière cellule non vide

Message par markotxe »

Messages croisés?
Solution en édit dans post précédent...
:wink:
LibO 7.5.2 et Open Office 4.1.14
Window11
(Obligation de version).
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 17:46

Re: [Résolu][Calc] sélectionner la dernière cellule non vide

Message par ZEK4 »

Merci Dude, et Markotxe,

ce code fonctionne

Code : Tout sélectionner

  If oCell_de_Control.type = empty  Then'and oCell_de_Control.String <>""
       oFeuille.copyRange(ocellDest.CellAddress, oPlage_saisie_depot.RangeAddress)
    Else
:bravo:
libre office calc ver 7.1.1.2 WIN 7(X64)