Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.
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 !
dans une feuille je fais la copie d'une ligne via une boite de dialogue. Cette ligne comporte une case à cocher qui est ancrée à la cellule (A1)
le coller reprends bien ma ligne sans la case à cocher, j'ai essayé beaucoup de solutions. voici mon dernier code, qui ne fonctionne pas plus.
sub derniereligne
Dim zoneVide As Variant
Dim maZone As Object
Dim celluleVide As Integer
dim dernierNumero as integer
'Dim heure as string
Document = ThisComponent
maFeuille1 = Document.getSheets.getByName("Courant")
maZone = maFeuille1.getCellRangeByName("B1:B1500")
zoneVide = maZone.queryEmptyCells.RangeAddresses
'Je trouve la dernière ligne utilisée
if (zoneVide(0).StartRow) < 2 then
celluleVide = 1
dernierNumero = 1
else
celluleVide = zoneVide(0).StartRow
' Je recupère le dernier numéro d enregistrement
dernierNumero = maFeuille1.getCellRangeByName("B" & celluleVide).string
'J'ajoute 1 pour le futur numéro d'enregistrement
dernierNumero = dernierNumero + 1
end if
'J'ajoute 1 pour obtenir la ligne vide
if celluleVide > 0 then
celluleVide = celluleVide + 1
vLigne = celluleVide
Else
vLigne = celluleVide
End if
maFeuille1.getCellRangeByName("A" & celluleVide).rows.Height = 1000
'Je copie la premiere ligne, soit la ligne 1
maCellule1 = maFeuille1.getCellRangeByName("A2:I2")
maCellule2 = maFeuille1.getCellRangeByName("A" & celluleVide)
maFeuille1.copyRange(maCellule2.CellAddress,maCellule1.RangeAddress)'la copie
' J'insere le nouveau numéro
maFeuille1.getCellRangeByName("B" & celluleVide).setValue(dernierNumero)
end sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par rapha_d le 16 nov. 2016 14:41, modifié 2 fois.
rapha_d a écrit :le coller reprends bien ma ligne sans la case à cocher
C'est normal puisque les contrôles de formulaire d'une feuille sont localisés sur sa couche de dessin (propriété DrawPage).
Accède à celle-ci et tu pourras déplacer ta case à cocher.
Le problème est que je ne veux pas la déplacer mais en créer une à chaque nouvelle ligne et qui plus est avec sa propriété ancrage cellule pour pouvoir effectuer un traitement ultérieurement. Je suis preneur de toutes les pistes.
merci d avoir repondu
rapha_d a écrit :mais en créer une à chaque nouvelle ligne et qui plus est avec sa propriété ancrage cellule pour pouvoir effectuer un traitement ultérieurement.
Bonsoir
Le résultat de ta macro sous LibO 5.1.5.2 ou AOO 4.1.3
Macro.png
La case à cocher est bien recopiée.
Je présume donc que la recopie sans la case à cocher provient de la version que tu utilises.
Peux-tu tester avec ta version
sub derniereligne
Dim zoneVide As Variant
Dim maZone As Object
Dim celluleVide As Integer
Dim dernierNumero as integer
Document = ThisComponent
maFeuille1 = Document.getSheets.getByName("Courant")
maZone = maFeuille1.getCellRangeByName("B1:B1500")
zoneVide = maZone.queryEmptyCells.RangeAddresses
'Je trouve la dernière ligne utilisée
If (zoneVide(0).StartRow) < 2 Then
celluleVide = 1
dernierNumero = 1
Else
celluleVide = zoneVide(0).StartRow
' Je recupère le dernier numéro d enregistrement
dernierNumero = maFeuille1.getCellRangeByName("B" & celluleVide).string
'J'ajoute 1 pour le futur numéro d'enregistrement
dernierNumero = dernierNumero + 1
End If
'J'ajoute 1 pour obtenir la ligne vide
If celluleVide > 0 Then
celluleVide = celluleVide + 1
vLigne = celluleVide
Else
vLigne = celluleVide
End If
maFeuille1.getCellRangeByName("A" & celluleVide).rows.Height = 1000
'Je copie la premiere ligne, soit la ligne 1
maZone = maFeuille1.getCellRangeByName("A2:I2")
Document.CurrentController.select(maZone)
aCopier = Document.CurrentController.getTransferable()
maCellule2 = maFeuille1.getCellRangeByName("A" & celluleVide)
Document.CurrentController.select(maCellule2)
Document.CurrentController.insertTransferable(aCopier)
'maFeuille1.copyRange(maCellule2.CellAddress,maCellule1.RangeAddress)'la copie
' J'insere le nouveau numéro
maFeuille1.getCellRangeByName("B" & celluleVide).setValue(dernierNumero)
End Sub
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
Vous avez ajouté la balise [Résolu] dans votre fil de discussion signifiant que votre question a été résolue et nous vous en remercions.
Cependant pour des questions de lisibilité et d'homogénéité, il est demandé de faire cet ajout dans le titre de votre premier message. Il faut également cocher la case de l'icône de sujet (le V vert). Notre forum est plus lisible avec ce balisage comme vous avez pu vous en rendre compte en le parcourant.