Récupérer cellules d'un fichier ods en VBA
roideseaux
Messages postés
274
Statut
Membre
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je cherche à automatiser une mise à jour.
J'ai un classeur avec pas mal de formules et macros qui se sert d'une base de donnée. Pour le moment, je suis obligé de copier coller le contenu de cette base de donnée manuellement dans une feuille de mon classeur.
Je voudrais donc pouvoir automatiser cette action, le souci, c'est que le fichier base de donnée est au format .ods...
Est-ce que quelqu'un aurait une solution à me proposer pour copier une plage de cellule d'un document .ods fermé vers une feuille de mon classeur ?
Merci !
Edit : J'ai utilisé l'enregistreur de macro, je ne pensais pas que ce serait si simple...
Par contre, est-c que vous auriez une solution à me proposer pour ne pas passer par les .Activate ?
J'ai essayé ça mais ça ne fonctionne pas :
A la place de :
Je cherche à automatiser une mise à jour.
J'ai un classeur avec pas mal de formules et macros qui se sert d'une base de donnée. Pour le moment, je suis obligé de copier coller le contenu de cette base de donnée manuellement dans une feuille de mon classeur.
Je voudrais donc pouvoir automatiser cette action, le souci, c'est que le fichier base de donnée est au format .ods...
Est-ce que quelqu'un aurait une solution à me proposer pour copier une plage de cellule d'un document .ods fermé vers une feuille de mon classeur ?
Merci !
Edit : J'ai utilisé l'enregistreur de macro, je ne pensais pas que ce serait si simple...
Sub MAJ_Composants()
Dim DerLigne As Long, DerLigne_Base As Long
DerLigne = Worksheets("Codes composants CMS").Range("C" & Rows.Count).End(xlUp).Row
Workbooks.Open Filename:= _
"X:\Chemin\Fichier.ods"
DerLigne_Base = Range("C" & Rows.Count).End(xlUp).Row
Range("A1:C" & DerLigne_Base).Select
Application.CutCopyMode = False
Selection.Copy
Windows("Moulinette2.xlsm").Activate
Worksheets("Codes composants CMS").Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Windows("Fichier.ods").Activate
ActiveWindow.Close
End Sub
Par contre, est-c que vous auriez une solution à me proposer pour ne pas passer par les .Activate ?
J'ai essayé ça mais ça ne fonctionne pas :
Windows("Moulinette2.xlsm").Worksheets("Codes composants CMS").Range("A1") = Range("A1:C" & DerLigne_Base).Value
A la place de :
Range("A1:C" & DerLigne_Base).Select
Application.CutCopyMode = False
Selection.Copy
Windows("Moulinette2.xlsm").Activate
Worksheets("Codes composants CMS").Range("A1").Select
ActiveSheet.Paste
A voir également:
- Récupérer cellules d'un fichier ods en VBA
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
1 réponse
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
Si ta macro est dans le fichier Moulinette2.xlsm :
Range("A1:C" & DerLigne_Base).Copy _
ThisWorkbook.Worksheets("Codes composants CMS").Range("A1")
sinon (ou si tu préfères) :
Range("A1:C" & DerLigne_Base).Copy _
Workbooks("Moulinette2.xlsm").Worksheets("Codes composants CMS").Range("A1")
Workbooks.Open Filename:= _ "X:\Chemin\Fichier.ods" Windows("Fichier.ods").Activate ActiveWindow.Close,tu peux faire :dim wbods as Workbook wbods=Workbooks.Open Filename:= _ "X:\Chemin\Fichier.ods" wbods.CloseLes variables de type Workbook et Worksheet, et d'autres encore, aident à remplacer les Select et Activate, et permettent d'éviter de spécifier plusieurs fois les noms des fichiers et des feuilles.