Récupérer cellules d'un fichier ods en VBA
roideseaux
Messages postés
260
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 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
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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")
,tu peux faire :
Les 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.