Bonjour,
Via une macro, j'aimerais transfert le contenue de certaine cellule vers un autre classeur (Et nom une autre feuille)
Il s'agit ici de facturation avec les taxes et tout
Je voudrais transféré 5 information
Colonne A: Numero de facture (Simplement basé: AAMMJJHHMMSS)
Colonne B: Sous-total
Colonne C: TPS (Taxe de Produit et Service)
Colonne D: TVQ (Taxe de Vente du Québec)
Colonne E: Total
But: Pouvoir faire nos rapports d'impôt sans avoir a ouvrir chacune des factures.
Ensuite, une fois les info transféré, lors du prochain transfert, ne pas écraser les donnés existante mais bien placé dans la ligne du dessous, etc etc
Je cafouille pas mal disons...
Merci!
EDIT: Ajout bonjour et merci, je l'avais oublier
[Résolu][Calc] Transfert d'information entre 2 classeurs
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 !
-
- Membre lOOyal
- Messages : 25
- Inscription : 29 août 2010 20:56
[Résolu][Calc] Transfert d'information entre 2 classeurs
Dernière modification par shadowseb le 13 janv. 2012 16:28, modifié 2 fois.
OpenOffice 3.0.0
Windows XP Pro SP3
Windows XP Pro SP3
-
- IdOOle de la suite
- Messages : 25171
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Calc] Transfert d'information entre 2 classeurs
Salut,
Direction le classique suprême de code : http://user.services.openoffice.org/fr/ ... =15&t=6371
Et tout, et tout... Un classeur illustrant le problème et tout, c'est encore mieux.shadowseb a écrit :Il s'agit ici de facturation avec les taxes et tout
Direction le classique suprême de code : http://user.services.openoffice.org/fr/ ... =15&t=6371
-
- Membre lOOyal
- Messages : 25
- Inscription : 29 août 2010 20:56
Re: [Calc] Transfert d'information entre 2 classeurs
J'en ai fait l'essai, et malheureusement ça ne convient pas. Je cherche vraiment a faire tel que décrit dans mon premier messsage. Cette macro ouvre un nouveau classeur et fait un copier coller. Je cherche a faire un archivage dans un classeur enregistrer et qui copiera le contenue des cellules à la suite des lignes les unes après les autres
OpenOffice 3.0.0
Windows XP Pro SP3
Windows XP Pro SP3
-
- Membre lOOyal
- Messages : 25
- Inscription : 29 août 2010 20:56
Re: [Calc] Transfert d'information entre 2 classeurs
Re salut!
Étant donné que ce que je veux faire ne semble pas être possible ou en dehors de mes compétences et/ou introuvable, en jouant avec mes fichiers, j'ai découvert le mode "Enregistrer une macro" et j'y ai découvert certaine chose intéressante. J'ai découvert entre autre le collage spécial - Lier. J'ai donc ouvert mon fichier de "destination" et enregistrer une macro qui donne ceci:
Je sais comment affecter une macro a l'ouverture, voici donc ma nouvelle question:
Est-il possible de faire ouvrir ce fichier, le faire enregistrer puis le fermer, que se soit transparent à l'exécution et que cette macro démarre tout de même?
Étant donné que ce que je veux faire ne semble pas être possible ou en dehors de mes compétences et/ou introuvable, en jouant avec mes fichiers, j'ai découvert le mode "Enregistrer une macro" et j'y ai découvert certaine chose intéressante. J'ai découvert entre autre le collage spécial - Lier. J'ai donc ouvert mon fichier de "destination" et enregistrer une macro qui donne ceci:
Code : Tout sélectionner
REM ***** BASIC *****
sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$A$1:$E$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 1
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args4())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertRows", "", 0, Array())
rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "ToPoint"
args6(0).Value = "$A$3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args6())
rem ----------------------------------------------------------------------
dim args7(5) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Flags"
args7(0).Value = "SV"
args7(1).Name = "FormulaCommand"
args7(1).Value = 0
args7(2).Name = "SkipEmptyCells"
args7(2).Value = false
args7(3).Name = "Transpose"
args7(3).Value = false
args7(4).Name = "AsLink"
args7(4).Value = false
args7(5).Name = "MoveMode"
args7(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args7())
end sub
Est-il possible de faire ouvrir ce fichier, le faire enregistrer puis le fermer, que se soit transparent à l'exécution et que cette macro démarre tout de même?
OpenOffice 3.0.0
Windows XP Pro SP3
Windows XP Pro SP3
-
- InconditiOOnnel
- Messages : 936
- Inscription : 27 nov. 2010 00:17
- Localisation : gâtine deux-sèvrienne
Re: [Calc] Transfert d'information entre 2 classeurs
bonjour,
En suivant le lien donné par le Dude et en modifaint les lignes suivante dans la macro "ActionCopieColle :
par
J'ouvre mon classeur archivage ...
Et en rajoutant ces deux lignes à la fin
J'enregistre mon classeur archive avec le nouveau contenu et je le ferme.
Ce qui pourrait donner en reprenant ton code et en l'introduisant dans le classeur d'origine, c'est à dire celui qui contient les données que tu veux archiver et non pas celui qui doit contenir l'archivage:
Mais tu peux aussi avoir une partie du code dans ton classeur d'origine pour l'ouverture du document et faire comme tu l'écris mettre le reste du code dans le classeur archivage, éxécuter la macro à l'ouverture, ce qui t'éviteras d'avoir à la répeter dans tout les classeurs qui contiennent des données.
En souhaitant t'avoir aidé à résoudre ton problème...
cordialement
Luke
P.S. : je n'ai pas testé , il est l'heure de passer à table
En suivant le lien donné par le Dude et en modifaint les lignes suivante dans la macro "ActionCopieColle :
Code : Tout sélectionner
cURL = ConvertToURL( "private:factory/scalc" )
oDoc = oDesktop.loadComponentFromURL(cURL , "_blank", 0, args() )
Code : Tout sélectionner
cURL = ConvertToURL("/le chemin/de mon/classeur archivage.ods")
oDoc = oDesktop.loadComponentFromURL(cURL , "_blank", 0, args() )
Et en rajoutant ces deux lignes à la fin
Code : Tout sélectionner
destdispatcher.executeDispatch(destDocument, ".uno:Save", "", 0, Array())
destDocument.close(True)
Ce qui pourrait donner en reprenant ton code et en l'introduisant dans le classeur d'origine, c'est à dire celui qui contient les données que tu veux archiver et non pas celui qui doit contenir l'archivage:
Code : Tout sélectionner
sub ActionCopieColle
Dim oDoc as object
Dim origDocument as object
Dim destDocument as object
Dim origDispatcher as object
Dim destDispatcher as Object
dim oDesktop as Object
Dim args(0) as new com.sun.star.beans.PropertyValue
Dim props(0) as new com.sun.star.beans.PropertyValue
Dim cURL as String
Dim origLigne as Integer
Dim destLigne as Integer
origDocument = ThisComponent.CurrentController.Frame
origDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oDesktop = createUnoService( "com.sun.star.frame.Desktop" )
cURL = ConvertToURL("/le chemin/de mon/classeur archivage.ods") ' le chemin à modifier
oDoc = oDesktop.loadComponentFromURL(cURL , "_blank", 0, args() )
destDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
destDocument = oDoc.CurrentController.Frame
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 2
origdispatcher.executeDispatch(origdocument, ".uno:JumpToTable", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$A$1:$E$1"
origdispatcher.executeDispatch(origdocument, ".uno:GoToCell", "", 0, args2())
rem ----------------------------------------------------------------------
origdispatcher.executeDispatch(origdocument, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 1
destdispatcher.executeDispatch(destdocument, ".uno:JumpToTable", "", 0, args4())
rem ----------------------------------------------------------------------
destdispatcher.executeDispatch(destdocument, ".uno:InsertRows", "", 0, Array())
rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "ToPoint"
args6(0).Value = "$A$3"
destdispatcher.executeDispatch(destdocument, ".uno:GoToCell", "", 0, args6())
rem ----------------------------------------------------------------------
dim args7(5) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Flags"
args7(0).Value = "SV"
args7(1).Name = "FormulaCommand"
args7(1).Value = 0
args7(2).Name = "SkipEmptyCells"
args7(2).Value = false
args7(3).Name = "Transpose"
args7(3).Value = false
args7(4).Name = "AsLink"
args7(4).Value = false
args7(5).Name = "MoveMode"
args7(5).Value = 4
destdispatcher.executeDispatch(destdocument, ".uno:InsertContents", "", 0, args7())
destdispatcher.executeDispatch(destDocument, ".uno:Save", "", 0, Array()) 'enregistrement du document archivage
destDocument.close(True) ' et la fermeture du document
end sub
En souhaitant t'avoir aidé à résoudre ton problème...
cordialement
Luke
P.S. : je n'ai pas testé , il est l'heure de passer à table
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
-
- Membre lOOyal
- Messages : 25
- Inscription : 29 août 2010 20:56
Re: [Calc] Transfert d'information entre 2 classeurs
Merci infiniment! J'avais abandonné l'idée de le faire de cette façon, mais ça marche parfait! J'ai fait quelque modif mais dans son ensemble, c'est parfait! Dans la foulé j'ai même réussi a généré un numero de facture basé sur le nombre de facture faite au lieu AAAAMMJJHHMMSS. Merci!
OpenOffice 3.0.0
Windows XP Pro SP3
Windows XP Pro SP3