[Résolu][Calc] Position sur la 1ere ligne vide d'un tableau

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 !
maclode1950
Membre hOOnoraire
Membre hOOnoraire
Messages : 125
Inscription : 23 janv. 2017 18:18

[Résolu][Calc] Position sur la 1ere ligne vide d'un tableau

Message par maclode1950 »

Bonjour,

je suis actuellement entre train de faire une macro via un bouton qui va me permettre de copier coller une ligne dans un tableau (sur la même feuille mais plus bas).
L'utilisateur clique, la ligne 2 (par exemple) est copiée une première fois à la ligne 22, mais je voudrais qu'ensuite si l'utilisateur reclique sur le bouton, la ligne 2soit collée sous celle déjà colléesoit, dans la ligne 23, et ce autant de fois qu'on appuie sur le bouton ...
Une piste ?

Actuellement j'arrive à copier coller mais évidemment, ça copie colle toujours sur la ligne 22 ...
Je pense qu'il me faut récupérer le numéro de ligne de la première colonne par exemple qui est vide (dans la palge de cellules où je commence à coller), et rajouter 1 mais bon ...

Code : Tout sélectionner

Sub Test_copie() 
Dim Args(),Opts()
Dim i as integer
Dim k as string
Dim monDocument As Object
Dim maFeuille As Object
Dim maCellule As Object

    

i=9
if 
maCellule = maFeuille.getCellByPosition(i,1)   
' Classeur courant
Doc = ThisComponent
SheetCopy = Doc.Sheets().getByName("Gestion")
' on copie la plage de cellules source
oRange = SheetCopy.getCellRangeByName("A2:G2")
da = oRange.getDataArray
' on choisit la feuille de destination


SheetPaste = Doc.Sheets().getByName("Gestion")
' on colle la plage de cellules source dans la plage destination
oRange = SheetPaste.getCellRangeByName("A" & i & ":G" & i) 'la plage doit être de même taille que celle de la source


oRange.setDataArray(da)
End Sub

Merci !
Dernière modification par maclode1950 le 09 oct. 2017 08:43, modifié 1 fois.
LibreOffice 7.3.6.2, Windows 11
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25172
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Se positionner sur la première ligne vide d'un tab

Message par Dude »

maclode1950
Membre hOOnoraire
Membre hOOnoraire
Messages : 125
Inscription : 23 janv. 2017 18:18

Re: [Calc]Se positionner sur la première ligne vide d'un tab

Message par maclode1950 »

Merci mais il me semble qu'il ne s'agit pas du même langage d'écriture dans le post cité
LibreOffice 7.3.6.2, Windows 11
Avatar de l’utilisateur
TheHache
PassiOOnné
PassiOOnné
Messages : 653
Inscription : 02 déc. 2009 09:43

Re: [Calc]Se positionner sur la première ligne vide d'un tab

Message par TheHache »

Bonjour,

Fournis nous ton classeur dépersonnalisé, le code que tu fournis contient des erreurs ( if seul sans then !! à la 11ème ligne).

Et cela évitera de créer nous même le classeur.

@+
LibO 7.4.4.2 - Windows 10 Pro
AOO 4.1.13 - Windows 10 Pro
maclode1950
Membre hOOnoraire
Membre hOOnoraire
Messages : 125
Inscription : 23 janv. 2017 18:18

Re: [Calc]Se positionner sur la première ligne vide d'un tab

Message par maclode1950 »

le voici, après c'est un simple fichier
Le code "propre"

Code : Tout sélectionner

Sub Test_copie() 
Dim Args(),Opts()
Dim i as integer
Dim k as string
Dim monDocument As Object
Dim maFeuille As Object
Dim maCellule As Object

    

i=9
 
' Classeur courant
Doc = ThisComponent
SheetCopy = Doc.Sheets().getByName("Gestion")
' on copie la plage de cellules source
oRange = SheetCopy.getCellRangeByName("A2:G2")
da = oRange.getDataArray
' on choisit la feuille de destination


SheetPaste = Doc.Sheets().getByName("Gestion")
' on colle la plage de cellules source dans la plage destination
oRange = SheetPaste.getCellRangeByName("A" & i & ":G" & i) 'la plage doit être de même taille que celle de la source


oRange.setDataArray(da)
End Sub

Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.3.6.2, Windows 11
Avatar de l’utilisateur
TheHache
PassiOOnné
PassiOOnné
Messages : 653
Inscription : 02 déc. 2009 09:43

Re: [Calc]Se positionner sur la première ligne vide d'un tab

Message par TheHache »

Juste avant ton collage, écris ceci :

Code : Tout sélectionner

Do while SheetPaste.getCellRangeByName("A" & i).STRING <> "" 
	i = i + 1
Loop
Cela te permets de boucler sur les lignes, à compter de la 9, jusqu'à la prochaine vide en colonne A.

@+
 Ajout : Tu n'as pas corrigé ton code dans ton fichier joint !!! 
LibO 7.4.4.2 - Windows 10 Pro
AOO 4.1.13 - Windows 10 Pro
maclode1950
Membre hOOnoraire
Membre hOOnoraire
Messages : 125
Inscription : 23 janv. 2017 18:18

Re: [Calc]Se positionner sur la première ligne vide d'un tab

Message par maclode1950 »

Merci !
LibreOffice 7.3.6.2, Windows 11
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc]Se positionner sur la première ligne vide d'un tab

Message par Piaf »

Bonjour
Pour éviter la boucle tu peux faire une recherche sur queryEmptyCells
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64