[Résolu][Calc] Copier plage selon date dans une autre feuille

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 !
Happy19
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 06 juil. 2023 17:43

[Résolu][Calc] Copier plage selon date dans une autre feuille

Message par Happy19 »

Bonjour tout le monde je suis nouveau sur le forum

Je souhaiterai copier une plage de cellule (feuille Liste) dans une autre feuille (Recapitulatif) mais que j'ai une boite de dialogue quand je lance la macro qui me demande le numéro du trimestre, et si par exemple je saisi 1, cela correspond à janvier à fin mars (le 1er trimestre) et que ca me copie donc les lignes de la feuille "Liste" dont la date est spécifiée en colonne B corresponde au trimestre selectionné.

Et que quand je relance la macro je puisse choisir par exemple le second trimestre et que ca m'ajoute les résultats quelques lignes en dessous sous le résultat du 1er trimestre dans la feuille Recapitulatf

Vous trouverez le fichier en piéce jointe
Copierplage.ods
j'ai bien essayé quelques formules mais je suis bloqué

merci d'avanc pour votre aide
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libreoffice 7.5.4.2 (X86_64) Linux
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Dude »

Salut,
Happy19 a écrit : 06 juil. 2023 18:00 j'ai bien essayé quelques formules mais je suis bloqué
Si tu n'y arrives pas via formule, pourquoi vouloir t'orienter vers des macros ?
Ce sera autrement plus complexe.

Le plus simple est d'utiliser un filtre et d'en copier le résultat sur une autre feuille.
Comme cette question est passée au moins 1.000 fois en 15 ans...
Image
viewtopic.php?f=29&t=47388
Avatar de l’utilisateur
njhub
PassiOOnné
PassiOOnné
Messages : 516
Inscription : 18 juin 2017 05:43
Localisation : 976

Re: [Calc] Copier plage selon date dans une autre feuille

Message par njhub »

Bonjour Happy19, le forum

Voyez dans le fichier joint, si la solution par formule peut vous convenir

Choisissez le trimestre à afficher en "Recapitulatif.F1"
Happy19_Copierplage.ods
:wink:
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.5.9.2.M3 (x64) FR-YT 01/06/24
OS : Windows 11.0
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Calc] Copier plage selon date dans une autre feuille

Message par zeguedon »

Bonjour,

T'as changé de pseudo ?

Je t'ai proposé une solution clé en main dans ce fil : viewtopic.php?p=368384#p368384

Tu nous présentes exactement le même fichier :roll: :? curieux.

Ton fichier :
Capture d’écran du 2023-07-07 06-39-20.png
Et celui de l'autre fil :
Capture d’écran du 2023-07-07 06-40-33.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
Happy19
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 06 juil. 2023 17:43

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Happy19 »

Bonjour

et merci à tous pour vos réponses, j'avais déja fait quelque chose de similaire avec les formules mais c'est plus pratique avec les macros car je voudrais à la fin du 1er trimestre lancer la macro et pouvoir modifier les valeurs dans la feuille Récapitulatif sans que ca impacte la feuille Liste et surtout que quand je relance la macro à la fin du 2eme trimestre ca me rajoute le résultat aprés et ainsi de suite pour les autres trilestres

Je vais étudier le fichier de psylo24 pour voir si j'arrive à en faire quelque chose mais ce qu'il a demandé parait beaucoup plus complexe car c'est sur plusieurs feuilles et la macro est assez complexe pour un débutant comme moi
je vous tiens informé si j'arrive à faire quelque chose...ou si je n'y arrive vraiment pas
Libreoffice 7.5.4.2 (X86_64) Linux
Happy19
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 06 juil. 2023 17:43

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Happy19 »

bobjour

aprés avoir regardé et essayé d'adapter la macro je n'y arrive pas, quelqu'un pourrait m'aider ?

merci à vous
Libreoffice 7.5.4.2 (X86_64) Linux
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12457
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Bidouille »

Bonjour,
Happy19 a écrit : 09 juil. 2023 20:11 je n'y arrive pas
Cette seule phrase n'aide pas à vous aider.
Image
Comment joindre un fichier au format ODS
Pensez également à dépersonnaliser le fichier joint.
Happy19
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 06 juil. 2023 17:43

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Happy19 »

Bonjour

Pour être plus précis, je n'arrive pas à faire la partie ou ca me copie uniquement les lignes dont la date fait parti du X trimestre.

Cela vous aide plus à la compréhension de mon probméme ?

merci d'avance pour votre aide
Libreoffice 7.5.4.2 (X86_64) Linux
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Calc] Copier plage selon date dans une autre feuille

Message par zeguedon »

Bonjour à tous

Monsieur PsyloHappy, ton fichier exemple contient une feuille source avec des entêtes de colonnes différents de la feuille récapitulatif :fou: :marto: :alerte:
Capture d’écran du 2023-07-11 09-59-18.png
Capture d’écran du 2023-07-11 09-58-58.png
C'est quoi le résultat attendu ?
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
Happy19
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 06 juil. 2023 17:43

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Happy19 »

Bonjour

J'ai modifié la 1ere ligne qui en effet ne correspondait pas au niveau nom.

J'ai mis dans la feuille Récapitulatif le résultat attendu une fois qu'on a lancé la macro pour chaque trimestre

Merci du temps pris en tout cas
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libreoffice 7.5.4.2 (X86_64) Linux
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Dude »

Il n'y a aucune macro dans le 2nd document que tu fournis.
Comme dit plus haut, si tu ne veux pas t'investir dans la programmation, mieux vaut ne pas en faire.

En utilisant l'extension zBasic, tu auras un code plus simple à comprendre :

Code : Tout sélectionner

Sub Main
  GlobalScope.BasicLibraries.loadLibrary("zBasic")
  Dim oFiltre as variant
  oFiltre = zFiltre.Demarre("Liste", "A1:E7")
  zFiltre.Parametre(oFiltre, "entete", "O")
  'Le 1er trimestre va du 01/01/2023 au 31/03/2023
  zFiltre.Colonne(oFiltre, 2, "", 5, "O", DateSerial(2023, 01, 01))
  zFiltre.Colonne(oFiltre, 2, "ET", 7, "O", DateSerial(2023, 03, 31))
  zFeuille.Cree("Résultat")
  zFiltre.Execute(oFiltre, "Résultat", "A1")
End sub
Happy19
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 06 juil. 2023 17:43

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Happy19 »

Salut,

Merci beaucoup pour ton aide, cependnant j'ai les erreurs suivantes :
  • Cette feuille existe déjà
    Aucun critère déclaré via zFiltre.Colonne
J'essai de me mettre dans le ooBasic mais c'est pas toujours simple (pour moi )

encore merci
Libreoffice 7.5.4.2 (X86_64) Linux
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Dude »

Happy19 a écrit : 13 juil. 2023 11:00Cette feuille existe déjà
Forcément, si la feuille existe déjà, il faut la supprimer.
Voir la commande zFeuille.Supprime
Si tu n'arrives même pas à comprendre ça, il vaut mieux renoncer. :roll:
Happy19 a écrit : 13 juil. 2023 11:00Aucun critère déclaré via zFiltre.Colonne
Le 2nd document que tu fournis fonctionne avec le code que je publie.
Donc, j'émets des doutes sur ce que tu boutiques réellement.
Happy19
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 06 juil. 2023 17:43

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Happy19 »

Ben oui mais meme si la feuille n'existe pas ya une erreur (Aucun critère déclaré via zFiltre.Colonne) donc bon .

Je fais juste un copier coller de ton code et je te partage mon résultat, je n'ai rien fait de plus....
Libreoffice 7.5.4.2 (X86_64) Linux
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Dude »

Ici, on n'a pas de boule de cristal donc bon.
Fournis un 3e document avec la macro.
no_problemo.gif
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Happy19
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 06 juil. 2023 17:43

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Happy19 »

Bonjour

Voici le document avec la macro, si d'autres personnes peuvent me dire si ca marche ou non chez eux....

J'ai également testé un autre code zBasic et j'ai la meme erreur, comme si ca venait de mon OS ou libreoffice

Sinon j'avais essayé de faire la macro direct en ooBasic, mais je n'arrive pas à faire mon filtre de date comprise entre X date et X date, voici la macro

Code : Tout sélectionner

Sub Copier ()
 Dim monDocument As Object
 'Pour désigner les feuilles
 Dim mesFeuilles As Object
 'Pour désigner la feuille source
 Dim feuilleSource As Object
 'Pour désigner la feuille destination
 Dim feuilleDestination As Object
 'Pour désigner les cellules sources
 Dim celluleSource As Object
 'Pour désigner la cellule destination
 Dim zoneDestination As Object
 'Pour désigner la feuille active
 Dim FeuilleActive As Object
 
 monDocument = thisComponent
 mesFeuilles = monDocument.Sheets
 'Feuille source qui contient les connées à copier
 feuilleSource = mesFeuilles.getByName("Liste")
 'Zone des cellules à copier
 celluleSource = feuilleSource.getCellRangeByName("A1:E7")
 
 'Désignation de la feuille destination
 feuilleDestination = mesFeuilles.getByName("Recap")
 
 'Je désigne la cellule où la copie va commencer
 zoneDestination = feuilleDestination.getCellRangeByName("A1")
 'Là je procéde à la copie
 feuilleDestination.copyRange(zoneDestination.CellAddress, celluleSource.RangeAddress)
 
End Sub
Merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libreoffice 7.5.4.2 (X86_64) Linux
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Dude »

Happy19 a écrit : 14 juil. 2023 08:41 J'ai également testé un autre code zBasic et j'ai la meme erreur, comme si ca venait de mon OS ou libreoffice
Fournis donc le document avec ce code que je l'examine.
Parce que chez moi, ça fonctionne parfaitement.
no_problemo.gif
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Happy19
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 06 juil. 2023 17:43

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Happy19 »

Bonjour

avec un peu de retard voici le fichier, mais comme j'ai spécifié dans un message plus haut, j'ai essayé les exemples qu'il y a sur leur site et les commandes de base zBasic ne fonctionne pas sur mon libre office

Voici la version d'ailleurs
Version: 7.5.5.2 (X86_64) / LibreOffice Community
Build ID: 50(Build:2)
Calc: threaded

Je ne sais pas comment tu arrives à faire des petites vidéos dans tes messages, je pourrais te montrer en live l'erreur que je rencontre

merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libreoffice 7.5.4.2 (X86_64) Linux
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Dude »

Happy19 a écrit : 06 août 2023 19:41et les commandes de base zBasic ne fonctionne pas sur mon libre office
A priori, tu n'es même pas capable de recopier du code correctement.
Il est donc normal que cela ne fonctionne pas. :roll:
Happy19
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 06 juil. 2023 17:43

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Happy19 »

Ahh quelle bonne humeur sur ce forum, j'adore ^^ c'est dingue d'être aussi peu aimable et agressif. :tesfou:

En effet le code n'était pas le même sur le dernier fichier que je t'ai envoyé car j'ai essayé de tester des choses, essayé de comprendre pourquoi ca ne marchait pas, désolé je m'en excuse !
Tu sais je ne me suis pas amusé à recopier le code, on m'a appris le copier coller à l'école :roll:

Mais je te joins le fichier avec la macro zBasic que vous m'avez fourni, tu trouveras le fichier en piéce jointe de ce message. Mais il n’empêche que chez moi ça ne fonctionne pas.

En te souhaitant une bonne journée
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libreoffice 7.5.4.2 (X86_64) Linux
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Copier plage selon date dans une autre feuille

Message par Dude »

Happy19 a écrit : 07 août 2023 10:31 Mais il n’empêche que chez moi ça ne fonctionne pas.
Cette phrase n'aide pas à comprendre. Mets nous des copies écran de ce qui s'affiche.
Une avant et une après l'exécution de la macro.

Autre chose :
Happy19 a écrit : 06 août 2023 19:41 Voici la version d'ailleurs
Version: 7.5.5.2
Cette version est donnée comme expérimentale et non recommandée sur ce forum.
Lire ceci : viewtopic.php?t=49867
Fais déjà le test avec une version stable.

Et sans doute que si tu faisais un minimum d'effort, ce serait moins agaçant de t'aider pour un problème qui ne nous concerne pas.
Par exemple, ta signature indique Linux qui n'est pas assez précis. Il faut donner a minima la distribution que tu utilises.
Happy19
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 06 juil. 2023 17:43

[Résolu][Calc] Copier plage selon date dans une autre feuille

Message par Happy19 »

Bonjour

Par rapport au post que j'ai précédemment créé viewtopic.php?p=374526#p374526 mais qui est vérouillé
Je tenais à vous remercier pour votre aide même si cela n'a pas résolu mon problème, je n'ai jamais réussi à faire fonctionner zBasic mais au final j'ai réussi à faire le code avec pas mal de temps et de recherches et tout ça en ooobasic.
C'est sur que beaucoup diront que mon code n'est pas optimisé mais au final il fait ce que je lui demande

Voici le code qui a résolu mon problème à savoir copier une plage de donnée en fonction du trimestre en colonne C

Code : Tout sélectionner

Sub VerifNumMoisEtCopieOK()
Dim oFeuille as Object
dim oFeuilleDest as Object
Dim sCellule as Date
Dim MoisDeb
Dim MoisFin
Dim MyDate
dim source
dim target
dim NumTriValid as Integer
dim NumTri as Integer
Dim oDoc As Object 
Dim Cellule
Dim CellSomme
Dim MyFormat

'Creation feuille temp
oDoc=ThisComponent 
  'Ajoute une feuille, la nomme et place l'onglet en 8eme position 
oDoc.GetSheets.insertNewByName("Temp",8)

oFeuille = ThisComponent.Sheets.getbyname("Fsources")
oFeuilleDest = ThisComponent.Sheets.getByName("Temp")


NumTri = InputBox("Num trimestre (1, 2, 3, 4)")

If IsNumeric(NumTri) Then
  NumTriValid = NumTri
Else
  NumTriValid = 0
  MsgBox "Saisir 1 2 3 ou 4"
End If
'  MsgBox(NumTriValid)

Select Case NumTriValid
 Case 1:
MoisDeb=1
MoisFin=3
  Case 2:
MoisDeb = 4
MoisFin = 6
  Case 3:
MoisDeb = 7
MoisFin=9
  Case 4:
MoisDeb = 10
MoisFin = 12

End Select


dim i 'num ligne -1
dim u 'num ligne dispo dans feuille dest
u=2 'num ligne de depart dans feuille dest

for i = 1 To 300 'debut ligne 

sCellule = oFeuille.getCellByPosition(2,i).Value ' colonne,ligne colonne (commence à 0) 2 = C
If Month(sCellule) >= MoisDeb And Month(sCellule) <=  MoisFin Then

    source = oFeuille.getCellRangeByName("A"& i+1 &":H" & i+1	)
    target = oFeuilleDest.getCellRangeByName("A"&u)
    oFeuille.copyRange(target.CellAddress, source.RangeAddress)
    u=u+1
'MsgBox sCellule
end if
'MsgBox (i)
Next i

'oDoc=ThisComponent 
'Supprime la feuille nommée "Temp" 
'oDoc.GetSheets.RemoveByName("Temp")
End sub
Sujet donc résolu
Dernière modification par Oukcha le 07 nov. 2023 12:17, modifié 1 fois.
Raison : Ce message est désormais fusionné avec le sujet d'origine
Libreoffice 7.5.4.2 (X86_64) Linux
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
Messages : 4117
Inscription : 06 oct. 2008 08:03

Re: [Résolu][Calc] Copier plage selon date dans une autre feuille

Message par Oukcha »

Bonjour,

Sujets fusionnés, merci de compléter également votre signature,

Cordialement
                                        
Pour tout savoir sur le fonctionnement de ce forum :arrow: À lire avant tout ! Image
Happy19
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 06 juil. 2023 17:43

Re: [Résolu][Calc] Copier plage selon date dans une autre feuille

Message par Happy19 »

Bonjour merci d'avoir fusionné le sujet mais qu'est ce qu'elle a ma signature ?!
Libreoffice 7.5.4.2 (X86_64) Linux
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
Messages : 4117
Inscription : 06 oct. 2008 08:03

Re: [Résolu][Calc] Copier plage selon date dans une autre feuille

Message par Oukcha »

Votre signature doit comporter :
1- La version exacte de AOO ou LibO (AOO 4.1.14 ou LibO 7.5.6 par exemple) ;
2- La version exacte du système d'exploitation (Windows 10, macOS Intel 13.5.2, GNU/Linux Ubuntu 22.04, par exemple).
Accès direct à votre signature pour la corriger.

Cordialement.
                                        
Pour tout savoir sur le fonctionnement de ce forum :arrow: À lire avant tout ! Image