IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

Difficultés d utilisation de la fonction Macro avec enregistreur [LibreOffice][Tableur]


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2012
    Messages : 145
    Points : 65
    Points
    65
    Par défaut Difficultés d utilisation de la fonction Macro avec enregistreur
    Bonjour, je fais de nouveau appel a vous, toujours sur le même fichier ma foi bien complexe
    Mon fichier est composé d'une vingtaine de feuille (vide sur l'original)
    L'objectif est de chercher dans un dossier de stockage clairement identifié sur "C" les vingt tableaux qui viendront se coller respectivement dans chacune des feuilles.
    Comme je ne sais pas écrire de code, je fais appel à l'enregistreur de macro
    A partir de mon fichier de destination j'enregistre les opérations suivantes :
    -1 - fichier ouvrir (recherche du répertoire de stockage)
    -2- ouvrir le fichier 1
    -3- sélectionner et copier le tableau 1
    -4- fermer le fichier 1
    -5- retour su le fichier de destination dans la feuille 1 copier le fichier 1
    -6- fichier ouvrir
    -7- ouvrir le fichier 2
    -8- sélectionner et copier le tableau 2
    -9- fermer le fichier 2
    -10- retour sur le fichier de destination dans la feuille 2 copier le fichier 2
    ...... et ainsi de suite

    Seulement voila, au lancement de la macro je colle le dernier enregistrement
    Est ce que la méthode est bonne ?
    Pour votre info actuellement toute ces manipulations sont faites manuellement !!!!
    Merci de votre aide et de vos conseils Ciao Fransix

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    La méthode devrait être la suivante, si l'on considère que le fichier (fichier de synthèse) où doivent être copiées les données est ouvert :
    1. ouvrir le fichier 1
    2. copier le tableau 1
    3. aller dans le fichier de synthèse
    4. coller le tableau 1
    5. fermer le fichier 1
    6. etc.

    Il faut coller les données avant de fermer le fichier.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2012
    Messages : 145
    Points : 65
    Points
    65
    Par défaut
    Slt Désolé, j'ai suivi tes conseils, mêmes résultats. La macro prend en compte le dernier copier/coller

    J'ai réinstallé JRE (version 1.8.0.101, lorsque je lance la macro le message suivant s'affiche :
    "LibreOffice nécessite un environnement d'exécution java (JRE) pour réaliser cette tâche. Le JRE sélectionné est défectueux. Veuillez sélectionner une autre version ou installer un nouveau JRE et le sélectionner sous Outils - Options - LibreOffice - Avancé."
    En passant outre j'atteins la macro et je l'exécute avec le résultat cité ci dessus

    Ou est l'erreur ???
    Fichier de synthèse ouvert je fais les manips suivantes :
    1- "ouvrir le fichier" 1
    2- sélectionner et copier le tableau
    3- retour su le fichier de destination dans la feuille 1 copier le fichier 1
    4- retour sur le fichier 1 fermer
    5- "fichier ouvrir" le fichier 2
    6- sélectionner et copier le tableau
    7- retour su le fichier de synthèse dans la feuille 2 copier le fichier 2
    ........

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    Es-tu sur que le "copie" est bien passé pris en compte ? Cela ressemble beaucoup à un problème de copie.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2012
    Messages : 145
    Points : 65
    Points
    65
    Par défaut
    L'opération de collage s'effectue bien lors de l'enregistrement de la macro (je vois effectivement les tableaux collés en feuille 1 et 2)
    1-j'enregistre la macro
    2-je vide mon document de synthèse
    3-j'exécute la macro sur le fichier vide et c'est malheureusement le dernier document enregistré qui se colle en feuille 1 et en feuille 2

    J'ai enregistré la macro de 2 façon avec la souris et au clavier => même résultat

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2012
    Messages : 145
    Points : 65
    Points
    65
    Par défaut
    Je viens de faire plusieurs tests :
    1- enregistrement d'une macro uniquement pour ouvrir un fichier se trouvant dans un autre dossier sur C: échec la macro ne fonctionne pas
    2- sur le même fichier de synthèse enregistrement de 2 macros une pour coller un tableau sur le fichier de synthèse en feuille 1 une seconde pour coller un autre tableau en feuille 2 => résultat seule la dernière copie est collé sur les deux feuilles
    3- sur une même fichier (document de synthèse) macro copiant le contenu de la feuille 1 en feuille 3 et feuille 2 en 4 => pas de problème ça fonctionne

    En cas de changement de dossier, manifestement l'enregistreur de macro ne prend en compte que la fonction que la dernière fonction coller
    Est ce que l'enregistreur n'aime pas le changement de fenetre !
    Une idée ! sur le dysfonctionnement ou une mauvaise manip de ma part.

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2012
    Messages : 145
    Points : 65
    Points
    65
    Par défaut
    Je viens de faire plusieurs tests :
    1- enregistrement d'une macro uniquement pour ouvrir un fichier se trouvant dans un autre dossier sur C: échec la macro ne fonctionne pas
    2- sur le même fichier de synthèse enregistrement de 2 macros une pour coller un tableau sur le fichier de synthèse en feuille 1 une seconde pour coller un autre tableau en feuille 2 => résultat seule la dernière copie est collé sur les deux feuilles
    3- sur une même fichier (document de synthèse) macro copiant le contenu de la feuille 1 en feuille 3 et feuille 2 en 4 => pas de problème ça fonctionne

    En cas de changement de dossier, manifestement l'enregistreur de macro ne prend en compte que la fonction que la dernière fonction coller
    Est ce que l'enregistreur n'aime pas le changement de fenetre !
    Une idée ! sur le dysfonctionnement ou une mauvaise manip de ma part.

  8. #8
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    Serait-il possible d'avoir le code que tu utilises ?
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2012
    Messages : 145
    Points : 65
    Points
    65
    Par défaut
    Slt Zoom, je sais ce n'est pas correct de te transmettre le code de cette façon, mais je ne sais pas comment faire pour obtenir la bonne présentation
    Je te joins également le fichier test ou j'essaie vainement de coller mes tableaux sur 2 feuilles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     sub essai
    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 ----------------------------------------------------------------------
    rem dispatcher.executeDispatch(document, ".uno:OpenFromCalc", "", 0, Array())
     
    rem ----------------------------------------------------------------------
    dim args2(0) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "ToPoint"
    args2(0).Value = "$A$1"
     
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
     
    rem ----------------------------------------------------------------------
    dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
     
    rem ----------------------------------------------------------------------
    dim args4(0) as new com.sun.star.beans.PropertyValue
    args4(0).Name = "ToPoint"
    args4(0).Value = "$H$4"
     
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())
     
    rem ----------------------------------------------------------------------
    dim args5(0) as new com.sun.star.beans.PropertyValue
    args5(0).Name = "Nr"
    args5(0).Value = 2
     
    dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args5())
     
    rem ----------------------------------------------------------------------
    rem dispatcher.executeDispatch(document, ".uno:OpenFromCalc", "", 0, Array())
     
    rem ----------------------------------------------------------------------
    dim args7(0) as new com.sun.star.beans.PropertyValue
    args7(0).Name = "ToPoint"
    args7(0).Value = "$A$1"
     
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())
     
    rem ----------------------------------------------------------------------
    dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
     
    rem ----------------------------------------------------------------------
    dim args9(0) as new com.sun.star.beans.PropertyValue
    args9(0).Name = "ToPoint"
    args9(0).Value = "$B$8"[ATTACH]222570[/ATTACH]
     
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args9())
     
    rem ----------------------------------------------------------------------
    dim args10(0) as new com.sun.star.beans.PropertyValue
    args10(0).Name = "ToPoint"
    args10(0).Value = "$B$12"
     
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args10())
     
     
    end sub

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2012
    Messages : 145
    Points : 65
    Points
    65
    Par défaut
    Oups ! je crois que je n'ai pas transmis la Pièce jointe
    Fichiers attachés Fichiers attachés

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2012
    Messages : 145
    Points : 65
    Points
    65
    Par défaut
    Bonjour, bon là il faut se rendre à l'évidence que je suis arrivé au bout du bout avec l'enregistreur de macro
    Sauf erreur de ma part, je constate que l'enregistreur de macro n'enregistre pas le changement de fenêtre et quant elle est enregistrée la macro ne fait en réalité que coller ce que contient la dernière action de copier coller enregistrée dans le le presse-papier .
    Je crois qu'il faut donc passer par une programmation sans l'aide de l'enregistreur. L'idée serait a partir d''un fichier de synthèse (qui se trouve dans le dossier C://FAS) qui comprend plusieurs feuilles, de disposer d'une macro qui puisse automatiser les actions suivantes :
    1- ouvrir un fichier A (qui se trouve dans le même dossier que le fichier de synthèse C://FAS)
    2- procéder à une sélection de la zone à copier (A1:Y200)
    3- revenir dans le fichier de synthèse
    4- coller la sélection dans la feuille 1
    5- fermer le fichier A
    6- ouvrir le fichier B ((qui se trouve également dans le même dossier que le fichier de synthèse C://FAS)
    7- procéder à une sélection de la zone à copier (A1:Y200)
    8- revenir dans le fichier de synthèse
    9- coller la sélection dans la feuille 2
    10- fermer le fichier B
    et ainsi de suite .... pour les fichiers C, D, E, F, .....
    Terminer par l'enregistrement du fichier de synthèse.

    Je ne suis pas un as de la programmation, et j'essaye de comprendre. J'ai déja trouvé un début de macro pour ouvrir un fichier, mais j'ai beaucoup de mal avec la suite
    Qu'en pensez vous ? est ce que je dois abandonner l'enregistreur de macro ?
    Merci de vos conseils et de votre aide
    Fransix

  12. #12
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2012
    Messages : 145
    Points : 65
    Points
    65
    Par défaut
    Slt à tous, je poursuis petitement mon objectif
    J'ai trouvé sur le forum deux macro, une pour ouvrir un fichier et l'autre pour copier/coller entre deux classeurs, ces macro me permettrait de faire un bout de chemin dans mon projet, seulement voilà, la première fonctionne bien, mais sans aucun doute je ne sais pas modifier la seconde pour l'adapter à ma configuration.
    Pour le test je lance la macro dans un fichier de destination que j'ai nommé pour le test macro essai, je vais ouvrir le ficher 312 local.ods (ça fonctionne) et dois copier la zone A1 H220 pour la coller dans la feuille 1 du fichier de destination, le must serait également de fermer le fichier 312 local après copie.
    Quelqu'un pourrait m'éclairer ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Sub ouverture
      dim Chemin as String, URL as String
      Chemin = "C:\fas\312 local.ods"
      URL = ConvertToUrl(Chemin)
      Document1 = StarDesktop.LoadComponentFromURL(URL,"_blank",0, array())
     
    Copy ZoneMemeClasseur()
    Dim oDoc as Object, oRange as Object, aCopier as Object
       oDoc = thisComponent
       oRange = oDoc.Sheets(0).getCellRangeByName("A1:h220") ' la zone à copier du classeur 312 local ods
       oDoc.CurrentController.select(oRange) 'Sélection de la zone
       aCopier = oDoc.CurrentController.getTransferable() 'Copie
       oRange = oDoc.Sheets(0).getCellRangeByName("A1") 'Première cellule pour recopie de la zone
       oDoc.CurrentController.select(oRange) 'Selection de la cellule dans le classeur essai macro contenant la macro
       oDoc.CurrentController.insertTransferable(aCopier) 'Transfert des données
    End Sub

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2012
    Messages : 145
    Points : 65
    Points
    65
    Par défaut
    Slt à tous, comme j'ai du abandonner l'enregistreur de macro puisqu'il n'autorise pas les actions réalisées dans une fenêtre autre que celle dans laquelle l'enregistreur a été démarré, auriez vous quelques pistes concernant ma problématique et notamment le semblant de macro de mon précédent message qui me permettrait de réaliser mon projet.
    J'arrive à ouvrir le fichier distant, à sélectionner la zone, à priori à copier, mais pas à revenir dans le fichier de destination pour le coller !!!! Merci pour votre aide, ce n'est pas manque de chercher mais là, même si je comprend bien l'articulation du langage et de la macro, je pense avoir atteint mes limites.

  14. #14
    Membre du Club
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Octobre 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise

    Informations forums :
    Inscription : Octobre 2016
    Messages : 41
    Points : 64
    Points
    64
    Par défaut
    une légère adaptation de ton code, non encore abouti, avec des noms de variables un peu plus parlant (histoire de bien distinguer le fichier à ouvrir du fichier à remplir).
    J'ai ajouté une option pour ouvrir le fichier en mode invisible (c'est mieux).

    Maintenant il faudra préciser comment tu souhaites procéder pour définir les fichiers à copier. Auront-ils toujours les mêmes numéro, On peut décider de passer en revue tous les fichiers contenu dans un répertoire dédié par exemple, dans ce cas ce n'est plus nécessaire de définir les noms dans la macro. Il suffit de déplacer les fichiers à traiter dans le répertoire dédié et de lancer la macro. On peut aussi définir le premier et le dernier numéro à traiter sous réserve que tous les numéros se suivent. Les solutions sont multiples, c'est à toi de dire comment tu comptes procéder. C'est aussi possible de sélectionner par clic de souris tous les fichiers à ouvrir.

    Ton code modifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub copier_coller
    Chemin = "C:\fas\312 local.ods"
    URL = ConvertToUrl(Chemin)
     
    'Propriété d'ouverture du fichier en mode invisible
    Dim propFich(0) As New com.sun.star.beans.PropertyValue
    propFich(0).Name = "Hidden"
    propFich(0).Value = True 
     
    'ouverture du fichier à copier
    doc_a_copier = StarDesktop.LoadComponentFromURL(URL,"_blank",0, propFich())
     
    'Définition de la zone à copier
    zone_a_copier = doc_a_copier.Sheets(0).getCellRangeByName("A1:H220")
    'Sélection de la zone à copier
    doc_a_copier.CurrentController.select(zone_a_copier)
    aCopier = doc_a_copier.CurrentController.getTransferable()
     
    'doc à remplir
    doc_a_remplir = thisComponent
    'définition de la cellule de destination
    celluleDestination = doc_a_remplir.Sheets(0).getCellRangeByName("A1")
    'sélection de la cellule de destination  
    doc_a_remplir.CurrentController.select(celluleDestination)
    'insertion des données
    doc_a_remplir.CurrentController.insertTransferable(aCopier)
    'fermeture du doc à copier  
    doc_a_copier.close(True)
    'enregistrement du doc à remplir
    doc_a_remplir.store
    End Sub

  15. #15
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2012
    Messages : 145
    Points : 65
    Points
    65
    Par défaut
    Slt Z662
    Merci infiniment, je commençais sérieusement à me prendre la tête.
    Effectivement dans le dossier c:/fas j'archiverai les 20 fichiers (feuilles) qui devront être collés dans les onglets 3 à 23 (dans notre exemple de macro le 312 local est en feuille 7, en feuille 6 se trouvera le fichier 212 local ....
    Ce seront toujours les mêmes fichiers qui seront archivés dans ce dossier dans lequel se trouvera également le fichier de synthèse auquel la macro sera attachée.
    J'ai testé ta macro, elle fonctionne parfaitement avec un seul fichier à coller
    Pour la suite, si je comprend bien je dois copier cette macro en suivant et en changeant le nom du fichier à ouvrir et a copier (exemple 212 local) et en changeant le numéro de feuille ? en faisant ainsi il me mets l'erreur suivante : => La variable propFich est déjà définie.
    Merci encore pour ton aide précieuse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    Sub copier_coller
    Chemin = "C:\fas\312 local.ods"
    URL = ConvertToUrl(Chemin)
     
    'Propriété d'ouverture du fichier en mode invisible
    Dim propFich(0) As New com.sun.star.beans.PropertyValue
    propFich(0).Name = "Hidden"
    propFich(0).Value = True 
     
    'ouverture du fichier à copier
    doc_a_copier = StarDesktop.LoadComponentFromURL(URL,"_blank",0, propFich())
     
    'Définition de la zone à copier
    zone_a_copier = doc_a_copier.Sheets(0).getCellRangeByName("A1:H220")
    'Sélection de la zone à copier
    doc_a_copier.CurrentController.select(zone_a_copier)
    aCopier = doc_a_copier.CurrentController.getTransferable()
     
    'doc à remplir
    doc_a_remplir = thisComponent
    'définition de la cellule de destination
    celluleDestination = doc_a_remplir.Sheets(7).getCellRangeByName("A1")
    'sélection de la cellule de destination  
    doc_a_remplir.CurrentController.select(celluleDestination)
    'insertion des données
    doc_a_remplir.CurrentController.insertTransferable(aCopier)
    'fermeture du doc à copier  
    doc_a_copier.close(True)
    'enregistrement du doc à remplir
    doc_a_remplir.store
    rem
    'Sub copier_coller
    Chemin = "C:\fas\212 local.ods"
    URL = ConvertToUrl(Chemin)
     
    'Propriété d'ouverture du fichier en mode invisible
    Dim propFich(0) As New com.sun.star.beans.PropertyValue
    propFich(0).Name = "Hidden"
    propFich(0).Value = True 
    'ouverture du fichier à copier
    doc_a_copier = StarDesktop.LoadComponentFromURL(URL,"_blank",0, propFich())
     
    'Définition de la zone à copier
    zone_a_copier = doc_a_copier.Sheets(0).getCellRangeByName("A1:H220")
    'Sélection de la zone à copier
    doc_a_copier.CurrentController.select(zone_a_copier)
    aCopier = doc_a_copier.CurrentController.getTransferable()
     
    'doc à remplir
    doc_a_remplir = thisComponent
    'définition de la cellule de destination
    celluleDestination = doc_a_remplir.Sheets(6).getCellRangeByName("A1")
    'sélection de la cellule de destination  
    doc_a_remplir.CurrentController.select(celluleDestination)
    'insertion des données
    doc_a_remplir.CurrentController.insertTransferable(aCopier)
    'fermeture du doc à copier  
    doc_a_copier.close(True)
    'enregistrement du doc à remplir
    doc_a_remplir.store
    end sub

  16. #16
    Membre du Club
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Octobre 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise

    Informations forums :
    Inscription : Octobre 2016
    Messages : 41
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par fransix Voir le message
    Slt Z662
    Effectivement dans le dossier c:/fas j'archiverai les 20 fichiers (feuilles) qui devront être collés dans les onglets 3 à 23 (dans notre exemple de macro le 312 local est en feuille 7, en feuille 6 se trouvera le fichier 212 local ....
    Dans ce cas merci de donner la liste des numéros des fichiers et le numéro de feuille à remplir pour chacun d'eux.
    Citation Envoyé par fransix Voir le message
    Pour la suite, si je comprend bien je dois copier cette macro en suivant et en changeant le nom du fichier à ouvrir et a copier (exemple 212 local) et en changeant le numéro de feuille ? en faisant ainsi il me mets l'erreur suivante : => La variable propFich est déjà définie
    Non surtout pas ! Il existe des instructions qui permettent de répéter plusieurs fois le même programme au lieu de le récrire autant de fois que nécessaire. Donne moi la liste des numéros et je regarde ça ce soir.

    A+

  17. #17
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    Citation Envoyé par Z_662 Voir le message
    Non surtout pas ! Il existe des instructions qui permettent de répéter plusieurs fois le même programme au lieu de le récrire autant de fois que nécessaire. Donne moi la liste des numéros et je regarde ça ce soir.
    Effectivement, tu peux adapter ce code pour faire une boucle.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  18. #18
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2012
    Messages : 145
    Points : 65
    Points
    65
    Par défaut
    Slt Merci à vous pour vos réponses et désolé de répondre tardivement déplacement oblige !
    les fichiers qui seront placés dans le dossier c:\fas seront :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    131 Local dans la feuille 5 (si je considère qu'en programmation la feuille 1 est = 0, feuille 2 = 1 .....°
    212 Local dans la feuille 6
    312 Local dans la feuille 7
    4001 Local dans la feuille 8
    PTS Local dans la feuille 9
    Séc routière local  dans la feuille 10
    131 National dans la feuille 11
    212 National dans la feuille 12
    312 National dans la feuille 13
    4001 National dans la feuille 14
    PTS National dans la feuille 15
    Séc routière National dans la feuille 16
    131 PANEL dans la feuille 17
    212 PANEL dans la feuille 18
    312 PANEL dans la feuille 19
    4001 PANEL dans la feuille 20
    SR PANEL dans la feuille 21
    Par contre les zones à copier sont différentes mais je pense qu'on peu prendre comme référence de copie pour toute les feuilles la zone la plus grande relevée soit colonne : X - ligne 330 ou toute la feuille si ce n'est pas trop lourd ?
    Ciao

  19. #19
    Membre du Club
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Octobre 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise

    Informations forums :
    Inscription : Octobre 2016
    Messages : 41
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par fransix Voir le message
    ou toute la feuille si ce n'est pas trop lourd ?
    C'est même encore plus simple. Peux-tu préciser si :

    1) tes feuilles de destination existent déjà dans le fichier de synthèse.
    2) tes fichiers à importer ne comportent qu'une feuille, et si non, celles à importer sont-elles toujours en première position (feuille1). Si non, donner pour chaque fichier la position de la feuille à importer.

    après ça devrait être ok.
    A+

  20. #20
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2012
    Messages : 145
    Points : 65
    Points
    65
    Par défaut
    Slt merci de ta réponse rapide

    tes feuilles de destination existent déjà dans le fichier de synthèse.
    oui les feuilles existent dans le fichier de synthèse elle sont nommées du même nom que les fichiers à importer et coller
    tes fichiers à importer ne comportent qu'une feuille,
    oui les fichiers à importer ne comportent qu'une seule feuille

    comme il s'agit d'une opération récurrente, je pensais terminer la macro avec un "enregistrer sous" histoire de garder en "modèle" le fichier de synthèse initialement vide

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/11/2009, 16h27
  2. Utilisation de la fonction replace() avec une regexp
    Par Ishizaki dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/08/2009, 17h39
  3. utilisation de la fonction "deconv" avec des inconnues
    Par tcheck_vi dans le forum MATLAB
    Réponses: 11
    Dernier message: 27/07/2009, 19h49
  4. [RegEx] Utilisation de la fonction "preg_match_all" avec des apostrophe ou des œ
    Par arnaudperfect dans le forum Langage
    Réponses: 4
    Dernier message: 16/08/2008, 23h05
  5. Utilisation de la fonction TOP avec une jointure
    Par pc75 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 06/07/2007, 08h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo