[Résolu][Calc] insérer plage de cellules (format conservé)

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] insérer plage de cellules (format conservé)

Message par ZEK4 »

[calc] insertion plage de cellules (valeur,et/ou format et/ou formule ...)

je suis DEBUTANT !

Bonjour,
je souhaite copier une plage de cellules ("B10:I10") et l'insérer sur la ligne du dessous ("B11:I11') dans les "même" colonnes de façon à ce que le contenu existant , ex ("B11:I11"), se décale vers le bas et devienne("B12:I12").

merci pour votre aide .
Dernière modification par ZEK4 le 04 avr. 2021 16:28, modifié 1 fois.
libre office calc ver 7.1.1.2 WIN 7(X64)
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9255
Inscription : 28 août 2010 08:45

Re: [Calc]inserer une plage de cellule ( text,nombre et form

Message par micmac »

Bonjour et bienvenue,

Merci de respecter la syntaxe des balises ; la première lettre en majuscule, le reste en minuscules, le tout entre crochets.
Nous avons corrigé pour vous.
Dans votre signature il y a écrit : libre office calc ver 3.0.1.3 WIN 7(X64)
Cette version de LibO est obsolète.
Si c'est une obligation, mentionnez-le dans votre signature en ajoutant Obligation de version.

Afin de profiter des dernières améliorations, il est fortement recommandé d'être à jour de la dernière version stable
Accès direct à votre signature pour la corriger.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Calc]inserer une plage de cellule ( text,nombre et form

Message par zeguedon »

Bonsoir,
ZEK4 a écrit :je souhaite copier une plage de cellules ("B10:I10") et l'insérer sur la ligne du dessous ("B11:I11') dans les "même" colonnes de façon à ce que le contenu existant , ex ("B11:I11"), se décale vers le bas et devienne("B12:I12").
Normalement il n'y a pas besoin de macro pour faire ça. Tu sélectionnes à la souris tes cellules de B10 à I10, puis clic droit sur une des cellules de la plage sélectionnée==>Insérer==>Déplacer vers le bas.
Si il s'agit vraiment de conserver ligne 10 le contenu qui se trouve désormais ligne 11, il faut faire Copier avant le clic droit puis Coller après le déplacement.@+
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 17:46

Re: [Calc]inserer une plage de cellule ( text,nombre et form

Message par ZEK4 »

bonjour,
je souhaite créer un bouton avec macro pour réaliser cette tâche, pour que mes utilisateurs ne connaissant pas calc puissent se servir du tableur (remplir des cases et cocher des boutons..c'est tout .)
merci
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 : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]inserer une plage de cellule ( text,nombre et form

Message par Dude »

Salut,
ZEK4 a écrit :je suis DEBUTANT !
Au vu de ce que tu veux faire, passe par l'enregistreur de macro tout simplement.
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 17:46

Re: [Calc]inserer une plage de cellule ( text,nombre et form

Message par ZEK4 »

bonjour,
j'ai déjà tester cette possibilité mais problème de presse papier qui garde en mémoire le premier coller, mais une deuxieme lecture de la macros conserve le contenu du premier copier..
cdt
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 : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]inserer une plage de cellule ( text,nombre et form

Message par Dude »

ZEK4 a écrit :mais une deuxieme lecture de la macros conserve le contenu du premier copier.
Pourquoi une 2e lecture ? Ce n'est pas ce que tu demandes dans ton 1er message :
ZEK4 a écrit :copier une plage de cellules ("B10:I10") et l'insérer sur la ligne du dessous ("B11:I11')
:?

S'il s'agit de rendre indépendant le codage suivant l'emplacement de la sélection, c'est un tout autre problème.
Le même genre de question a été posé il y a 5 jours : https://forum.openoffice.org/fr/forum/v ... =8&t=63811
Il faut récupérer la cellule active via la propriété CurrentSelection.
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 09:55

Re: [Calc]inserer une plage de cellule ( text,nombre et form

Message par markotxe »

Bonjour ZEK 4
Petite suggestion à tester...

Code : Tout sélectionner

Sub FilaInserta
    Classeur     = ThisComponent
    Feuille      = Classeur.Sheets.GetByName("Test")
'__Insére file_________________________________________
    Feuille.getRows.insertByIndex(10,1)
    oRangeSource = Feuille.getCellRangeByName("B10:I10")
    oRangeDest   = Feuille.getCellRangeByName("B11:I11")
'__Copie/Colle valeurs_________________________________
    oRangeDest.dataArray = oRangeSource.dataArray
End Sub
En espèrant que cela puisse vous aider aprés-midi...

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]inserer une plage de cellule ( text,nombre et form

Message par ZEK4 »

bonjour,
merci markotxe, c'est parfait.
mais comment faire maintenant pour que le format des cellules soit conserver ?
merci
libre office calc ver 7.1.1.2 WIN 7(X64)
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 948
Inscription : 19 août 2018 05:20

Re: [Calc]inserer une plage de cellule ( text,nombre et form

Message par Dolev »

Bonsoir,
ZEK4 a écrit :mais problème de presse papier qui garde en mémoire le premier coller
Je ne reproduis pas.
Merci de fournir un document avec cette macro.
Open Office 4.1.15 sous Windows 11
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 09:55

Re: [Calc]inserer une plage de cellule ( text,nombre et form

Message par markotxe »

Bonsoir ZEK4, bonsoir forum,
je ne comprends pas trop le sens de votre question, normalement en insérant une nouvelle ligne, les formats sont automatiquement calqués sur la ligne de départ (ici la ligne 10).
Il est vrai que sans fichier exemple, il est difficile de se faire une idée.
Essayez de rajouter ceci juste avant le "End sub".

Code : Tout sélectionner

oRangeDest.NumberFormat = oRangeSource.NumberFormat
COoordialement

Markotxe
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]inserer une plage de cellule ( text,nombre et form

Message par ZEK4 »

bonjour,
rappel débutant !

voici mon projet "bourse aux vélos association sportive)
deux pages seront imprimées ( une pour le déposant, l'autre pour le club) à l'issus de la saisie d'un ou de plusieurs dépôts (vélos);
Jusque là,page de gauche, j'ai réussi à faire, outre la mise en page, les boutons zone de liste...le bouton qui commande l'ajout d'une ligne pour une nouvelle saisie d'un même déposant...les boutons radios sans macros.( les boutons ne seront pas imprimés, je sais faire maintenant ..)

Ce que je souhaite faire maintenant est que, à la fin de la dernière saisie ( dernier dépôt du même déposant ):
- les données ( texte , nombres) de la page de gauche se retrouve sur la page de droite; pour la partie identité déposant, je pense faire un collage avec liaison ( je sais pas faire en macros ! mais ça marche sur calc)
- partie depots ; copier B11:J19 en T11:AB19 avec bordures de cellules !
- la feuille soit copier/coller (uniquement les valeurs ) dans un nouvelle onglet renommé du nom prénom du déposant.
- imprime ces deux pages
- vidanger les cellules ( clearcontents ) pour une nouvelle saisie (nouveau déposant).
ci joint mon ods .
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]inserer une plage de cellule ( text,nombre et form

Message par markotxe »

ZEK4 a écrit :- les données ( texte , nombres) de la page de gauche se retrouve sur la page de droite; pour la partie identité déposant, je pense faire un collage avec liaison ( je sais pas faire en macros ! mais ça marche sur calc)
- partie depots ; copier B11:J19 en T11:AB19 avec bordures de cellules !
Pour ça un vieux copier coller des familles devrait marcher, no?(garde les bordures)

Code : Tout sélectionner

Sub test
mondocument   = ThisComponent
maFeuille1        = mondocument.Sheets.getByName("DEPOT")
oCellDest            = maFeuille1.getCellRangeByName("T11")
oRangeSource     = maFeuille1.getCellRangeByName("B11:J19")
'__Copier/Coller (bordures, formules, valeurs, textes etc...)__________________
maFeuille1.copyRange(oCellDest.CellAddress, oRangeSource.RangeAddress)
End sub
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]inserer une plage de cellule ( text,nombre et form

Message par ZEK4 »

bonjour MarKotxe,
le lecture de la macros depuis l’éditeur de macros fonctionne à merveille MAIS la macros lancer depuis mon bouton sur la feuille de calcul auquel j'ai affecté cette macro copie/colle sans les bordures !
bizard !
libre office calc ver 7.1.1.2 WIN 7(X64)
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 948
Inscription : 19 août 2018 05:20

Re: [Calc]inserer une plage de cellule ( text,nombre et form

Message par Dolev »

Bonsoir,

Je viens de tester ton document et ta macro "copie_colle" fonctionne comme ce que tu décris :
ZEK4 a écrit :copier B11:J19 en T11:AB19 avec bordures de cellules !
Capture.PNG
Bien sûr, il y a un avertissement puisque la plage T11:AB19 n'est pas vide.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Open Office 4.1.15 sous Windows 11
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 09:55

Re: [Calc]inserer une plage de cellule ( text,nombre et form

Message par markotxe »

Bonjour ZEK4,
Normalement, il faut se centrer sur une seule question par post (ça facilite la recherche).
Cependant, comme vous êtes nouveau et que j'ai un peu de temps, je me suis penché sur le reste de votre projet.
ZEK4 a écrit :l'ajout d'une ligne pour une nouvelle saisie d'un même déposant
C'était l'objet du post.
Fait. (ou du moins revu et simplifié cf macro du fichier joint).

Requêtes supplémentaires:
ZEK4 a écrit :- les données ( texte , nombres) de la page de gauche se retrouve sur la page de droite
Fait. (Voir la macro "Imprime")
ZEK4 a écrit :pour la partie identité déposant, je pense faire un collage avec liaison
Effectivement, on peut faire comme ça (par liaison j'entends un "="). Mais bon, j'ai tout de même ajouté un copier/coller (valeurs) qui s'occupe de cette opération. Ça évitera les erreurs de manipulations qui pourraient par mégarde boulverser les formules... (Ça arrive, oui,oui...)
ZEK4 a écrit :la feuille soit copier/coller (uniquement les valeurs ) dans un nouvelle onglet renommé du nom prénom du déposant.
Fait. (voir Macro Imprime)
ZEK4 a écrit :- imprime ces deux pages
Ça par contre, Pas fait...
Je vous conseille d'ouvrir un nouveau post spécialement pour traiter le sujet.
ZEK4 a écrit :vidanger les cellules ( clearcontents ) pour une nouvelle saisie (nouveau déposant).
Fait mais grisés afin de pouvoir réaliser les tests sans avoir à renter chaque fois de nouvelles données...
Voici le code de la macro "Imprime"

Code : Tout sélectionner

Sub Imprime  ' 
    MonDocument  = ThisComponent
    oFls         = MonDocument.Sheets
    oMaFeuille1  = oFls.getByName("DEPOT")
'__Processus du copier/coller________________________________________________________
    oCellDest        = oMaFeuille1.getCellRangeByName("T11")
    oRangeSource     = oMaFeuille1.getCellRangeByName("B11:J19")
    oPlageClient     = oMaFeuille1.getCellRangeByName("C6:I6")
    oPlageClientClub = oMaFeuille1.getCellRangeByName("U6:AA6")
'__Copier/Coller (bordures, formules, valeurs, textes etc...)________________________
    oMaFeuille1.copyRange(oCellDest.CellAddress, oRangeSource.RangeAddress)
'__Copier/Coller les renseignements du client (uniquement les valeurs = DataArray)___
    oPlageClientClub.DataArray = oPlageClient.DataArray
'------------------------------------------------------------------------------------
'__Localisation de la cellule qui donnera le nom du nouvel onglet de recherche_______   
    oCellOnglet = oMaFeuille1.getCellRangeByName("U6")
'__Création d'une nouvelle page puis on la nomme_____________________________________
    oNouvelOnglet = MonDocument.CreateInstance( "com.sun.star.sheet.Spreadsheet" )
    oFls.InsertByName( oCellOnglet.String, oNouvelOnglet )
'__On copie/Colle les tableaux dans la feuille nouvellement créée____________________
    oFlO               = oFls.getByName(oCellOnglet.String)
    oCellDestination   = oFlO.getCellRangeByName("B2")
    oPlage_a_Conserver = oMaFeuille1.getCellRangeByName("T3:AB19") 
    oFlO.copyRange(oCellDestination.CellAddress, oPlage_a_Conserver.RangeAddress)
'__On re-copie/Colle par dessus avec DataArray pour ne conserver que les valeurs_____
    oPlageSauvegarde       = oFlO.getCellRangeByName("B2:J16")
    oPlageFinale           = oFlO.getCellRangeByName("B2:J16")
    oPlageFinale.DataArray = oPlageSauvegarde.DataArray
'------------------------------------------------------------------------------------
'__On imprime les deux tableaux?_____________________________________________________
'...
'... Je vous conseille d'ouvrir un nouveau sujet pour traiter cette partie
'...
'------------------------------------------------------------------------------------
'__On efface les anciennes données 1+2+4 =7 (1=Valeurs, 2=Dates, 4= Textes)__________
'*NOTA: 8=Commentaires, 16=Formules etc...
     oPlage_a_EffacerClientA = oMaFeuille1.getCellRangeByName("C6:I6")
     oPlage_a_EffacerClientB = oMaFeuille1.getCellRangeByName("B11:J19")
     oPlage_a_EffacerClubA = oMaFeuille1.getCellRangeByName("U6:AA6")
     oPlage_a_EffacerClubB = oMaFeuille1.getCellRangeByName("T11:AB19")
'     oPlage_a_EffacerClientA.ClearContents(7)
'     oPlage_a_EffacerClientB.ClearContents(7)
'     oPlage_a_EffacerClubA.ClearContents(7)
'     oPlage_a_EffacerClubB.ClearContents(7) 'Grisé pour pouvoir faire des tests
'-------------------------------------------------------------------------------------     
end sub
'**NOTA: N'oubliez pas de clore le sujet par [Résolu], si vous estimez que la question 
'        a été traitée.
En espèrant que cela puisse vous aider...

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).