Bonjour,
Je suis un noob en oBasic et je veux faire un truc que je crois plutôt simple, au niveau 1 de maitrise de oBasic. Seulement j'ai pas le temps d'utiliser quelques heures pour arriver à ce niveau et j'imagine que, pour certain d'entre vous, ça va prendre 30 secondes.
Je souhaite parcourir une colonne et tester si les valeurs de chacune des cellules est supérieur à 360. Si oui, changer cette valeur pour celle de la case d'au-dessus.
Je joins un mini exemple, c'est la colonne C qui est concernée.
Clément
[Résolu] [Calc] Parcourir, tester, changer valeur
Modérateur : Vilains modOOs
Règles du forum
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 !
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 !
-
- NOOuvel adepte
- Messages : 19
- Inscription : 09 mars 2016 10:09
[Résolu] [Calc] Parcourir, tester, changer valeur
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par CImb le 09 août 2016 08:52, modifié 1 fois.
LibreOffice 5.2.5.1 sous Xubuntu
-
- ManitOOu
- Messages : 3031
- Inscription : 02 juil. 2014 17:25
Re: [Calc] Parcourir, tester, changer valeur
Bonjour,
Un petit bout de code qui gère la colonne C quelque soit sa longueur, il suffit juste de coller les nouvelles données à traiter et appuyer sur le bouton GO
et le fichier qui va avec :
A+
Un petit bout de code qui gère la colonne C quelque soit sa longueur, il suffit juste de coller les nouvelles données à traiter et appuyer sur le bouton GO
Code : Tout sélectionner
Sub Main
oFeuil = thisComponent.currentController.activeSheet
lignesVides() = oFeuil.columns.GetByName("C").queryEmptyCells.RangeAddresses
For x = 1 to lignesVides(0).StartRow - 1
cell = oFeuil.GetCellByPosition(2,x)
If cell.value > 360 Then
cell.value = oFeuil.GetCellByPosition(2,x-1).value
end if
next
End Sub
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
-
- GourOOu
- Messages : 5622
- Inscription : 25 nov. 2011 18:07
- Localisation : Guyane
Re: [Calc] Parcourir, tester, changer valeur
Bonsoir
A testerPas le temps non plus pour les explications.
A+
A tester
Code : Tout sélectionner
Sub Main
Dim oDoc as Object, maFeuille as Object, maZone as Object
Dim i as Long
oDoc = thisComponent
maFeuille = oDoc.CurrentController.ActiveSheet
maZone = maFeuille.getCellRangeByName("C2:C54")
For i = LBound(maZone.DataArray) To UBound(maZone.DataArray)
If maZone.DataArray(i)(0) > 360 Then
maZone.getCellByPosition(0,i).Value = maZone.DataArray(i - 1)(0)
End If
Next i
End Sub
Ajout : Grillé par zeguedon |
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
-
- InconditiOOnnel
- Messages : 753
- Inscription : 09 avr. 2013 07:15
- Localisation : T'as pas dit bonjour, merci et à bientot !
Re: [Calc] Parcourir, tester, changer valeur
Bonjour CImb,
Un exemple, en pièce jointe.
Merci et à bientôt !
Un exemple, en pièce jointe.
Code : Tout sélectionner
REM ***** BASIC *****
Sub Main
'Quel est le nombre maximum de cellules dans une feuille de calcul LibreOffice ?
' Le nombre maximum de colonnes est de 1024 (de la colonne A à la colonne AMJ) ;
' le nombre maximum de lignes est de 1 048 576 ;
' le nombre maximum de cellules dans une feuille est de 1 073 741 824;
' le nombre maximum de feuilles dans un classeur est 256.
'ModifierMonTableau(NomFeuille As String,NumCol As Integer,NbLig As Long)
ModifierMonTableau("Feuille2",3,1048576,360)
MsgBox "Les valeurs supérieures à 360 ont été substituées dans la colonne C", 0+64, "TRANSFORMATION EFFECTUEE"
End Sub
Sub ModifierMonTableau(NomFeuille As String,NumCol As Integer,NbLig As Long,NombreLimite As Integer)
dim PysClass as object, PysFeuille as object, PysCell as object, PysUpperCell As Object, PysQuery as object, PysEnum as object
dim PysLigEnCours as long, PysColEnCours as integer
'on suppose, comme sur l'exemple que tous les champs du tableau sont remplis
const NbCol = 1
const StartRowNum=1
ColNum=CInt(NumCol)-1 'Nombre naturel de colonnes
PysClass = thiscomponent 'Le classeur courant
PysFeuille = PysClass.sheets.getByname(NomFeuille)'Dans ce classeur accès à une feuille par son nom
for PysLigEnCours = StartRowNum to NbLig ' parcours des lignes
PysCell = PysFeuille.getCellByPosition(ColNum, PysLigEnCours) 'Accès à la cellule
If PysLigEnCours > 1 Then
PysUpperCell = PysFeuille.getCellByPosition(ColNum, PysLigEnCours-1)
'traitement à partir de la ligne 2 uniquement
If Len(PysCell.String)>1 Then
'Dans notre cas, 360 est de type variant, pouvant être évalué avec un opérateur mathématique.
If CLng(PysCell.String) >=NombreLimite Then
PysCell.String = PysUpperCell.String
End If
End if
'on choisit d'abréger le parcours
If Len(PysCell.String)=0 Then Exit For
EndIf
next PysLigEnCours
End Sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par martinbrait le 09 août 2016 18:19, modifié 1 fois.
LibreOffice version 5.4.7.2.M6 (x64)
Windows 10
+
LibreOffice version 5.4.7.2.M6 (x64)
Windows 7
#HSQL Database Engine 1.8.0
version=1.8.0
Locale : fr-FR (fr_FR)
Obligation de version
Bonjour, merci et à bientôt !
Windows 10
+
LibreOffice version 5.4.7.2.M6 (x64)
Windows 7
#HSQL Database Engine 1.8.0
version=1.8.0
Locale : fr-FR (fr_FR)
Obligation de version
Bonjour, merci et à bientôt !
-
- NOOuvel adepte
- Messages : 19
- Inscription : 09 mars 2016 10:09
Re: [Calc] Parcourir, tester, changer valeur
Merci beaucoup,
Vos solutions fonctionnent. C'est intéressant de voir les différentes façons de résoudre un même problème, ça me servira quand je voudrai m'y connaitre plus en oBasic.
A+
Vos solutions fonctionnent. C'est intéressant de voir les différentes façons de résoudre un même problème, ça me servira quand je voudrai m'y connaitre plus en oBasic.
A+
LibreOffice 5.2.5.1 sous Xubuntu
-
- Membre enthOOusiaste
- Messages : 467
- Inscription : 10 nov. 2012 17:05
Re: [Résolu] [Calc] Parcourir, tester, changer valeur
LibreOffice 6.1.3.2 x64 / AOO 4.1.5 (x86) sous Windows 8.1 (x64)
Java 8.x (x64 et x86), Firefox, Thunderbird,....
“Celui qui aime à apprendre est bien près du savoir.” (Confusius)
Comment baliser Résolu
Java 8.x (x64 et x86), Firefox, Thunderbird,....
“Celui qui aime à apprendre est bien près du savoir.” (Confusius)
Comment baliser Résolu