XL 2016 Fichier Excel à rassembler et créer liste

a123

XLDnaute Nouveau
Bonjour,


J'ai un dossier où apparaissent une série de fichiers Temperaturestock1.xls, Temperaturestock2.xls, Temperaturestock3.xls, ... avec le numéro qui s'incrémente à chaque nouveau fichier et possédant chaque fois une valeur seulement dans A1 et B1.

J'ai un fichier général Temperaturestock.xls où je voudrais créer une liste en colonne A et B avec toutes les valeurs A1 et B1 de tous les fichiers, se mettant à jour quand un nouveau fichier apparaît.

J'ai essayé du code en VBA et avec les formules mais je n'y arrive pas vraiment, pourriez-vous m'éclairer un peu svp ?

Un tout grand merci pour votre aide :)


Antoine.
 

a123

XLDnaute Nouveau
Bonjour

Faisable par PowerQuery intégré à Excel

Joint 2 exemples de fichiers (Temperaturestock1 et Temperaturestock2) et la recap
Bonjour Chris,


Oui, j'ai vu cette possibilité mais j'aimerais une description de la fonction, je suis en train de chercher, si tu avais quelques lignes de code, cela pourrait être sympa :)

Voici les fichiers.
Temperaturestock.xls est le fichier pour compiler les données.
Les données se retrouvent dans les fichiers Temperaturestock0.xls à Temperaturestock5.xls.
nb: les fichiers xls sont créés avec un programme tiers et sotn en réalité des fichiers texte il me semble, à vérifier.

Si un nouveau fichier apparaît, les données suivantes devraient s'ajouter en dessous des précédentes.

Un tout grand merci pour l'aide !

Antoine D.
 

Pièces jointes

  • Temperaturestock.xls
    162 bytes · Affichages: 16
  • Temperaturestock0.xls
    26 bytes · Affichages: 2
  • Temperaturestock5.xls
    26 bytes · Affichages: 3
  • Temperaturestock4.xls
    26 bytes · Affichages: 2
  • Temperaturestock3.xls
    26 bytes · Affichages: 3
  • Temperaturestock2.xls
    26 bytes · Affichages: 2
  • Temperaturestock1.xls
    26 bytes · Affichages: 2

a123

XLDnaute Nouveau
Bonjour,

Ces fichiers sont créés via un programme externe qui peut les enregistrer en .csv, .xls ou .txt.
Le .xls est le seul format permettant la séparation en colonnes distinctes et facilite donc l'organisation des données.
Pour une facilité de lecture ultérieure, je préférerais conserver l'extension actuelle.

Si c'est vraiment un problème, je peux toujours la changer.

Cordialement,

Antoine D.
 
Dernière édition:

a123

XLDnaute Nouveau
Bonjour,


Pour l'instant, j'ai ce code qui permet de recopier le premier fichier.

Seulement, je ne parviens pas à rendre dynamique le nom du fichier.

Sub Datas()
Dim I As Integer
Dim SI As Variant
I = 0
Range("A1").Select 'sélectionner la cellule de début
Chemin = "U:\BE-ENG-ALL\DatasTemperatures\" 'saisir le chemin complet du dossier où se trouvent les fichiers
SI = StrConv(I, vbFromUnicode) ' Convert string.
Fichier = Dir(Chemin & "Temperaturestock0.xls") ' Premier fichier
For I = 0 To 300
SI = StrConv(I, vbFromUnicode) ' Convert string.
Fichier = Dir(Chemin & "Temperaturestock0.xls") ' Fichier suivant
Workbooks.Open Filename:=Chemin & Fichier
Range("A1:B1").Copy
ThisWorkbook.Activate
ActiveSheet.Paste
Windows(Fichier).Activate
Application.CutCopyMode = False
ActiveWorkbook.Close savechanges:=False
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
Next I
End Sub

J'essaye de remplacer lla variable fichier par

Fichier = Dir(Chemin & "Temperaturestock" & SI & ".xls") ' Premier fichier

Pour permettre l'incrémentation du nom de fichier mais il ne veut pas concaténer la chaîne vers la variable Fichier.

Pouvez-vous dire où je fais l'erreur svp ?


Je vous remercie.

Antoine.
 

a123

XLDnaute Nouveau
Bonjour,


Alors voilà, j'ai trouvé une solution.

Le code ci-après permet l'importation des données.

Toutefois, les fichiers doivent être ouverts et fermés et cela prend un certain temps.
Si vous avez une solution qui permet l'intégration des données sans l'ouverture, cela m'intéresse.

La fonction ADO le permet il me semble.


nb, fichier à renommer en .rar.


Encore merci.

Antoine.
 

Pièces jointes

  • DatasTemperatures.zip
    16.4 KB · Affichages: 4

chris

XLDnaute Barbatruc
RE

Le problème c'est que l'extension est xlsx mais pas le format : excel le notifie comme n'étant pas un format Excel
On peut passer outre en disant à Excel de considérer l'xls comme un csv, mais c'est illogique de valider un truc tordu

Je te poste néanmoins en l'état

Changer le chemin en E1 puis Données, Actualiser Tout

La synthèse n'est pas sensée être dans ce dossier, sinon il faut adapter la requête
 

Pièces jointes

  • Temperatures.xlsx
    23.2 KB · Affichages: 6
Dernière édition:

a123

XLDnaute Nouveau
Bonjour Chris,


Alors est-ce possible de lire les fichier csv ou txt en intégrant la tabulation directement dans le code ?

Sinon, ton fichier s'exécute mais je reçoit ce type de code, le fichier est enregistré dans un dossier séparé et le dossier source contient seulement les données.

1598531452616.png


Le format ADO, tu connais ?

Sltns,

Antoine.
 

chris

XLDnaute Barbatruc
RE

De toute évidence ton dossier ne contient pas que des fichiers du modèle que tu as posté

ADO est une abréviation désignant ActiveX Data Objects
c'est aussi une extension de fichiers ADOBE

en dehors de cela je ne vois pas...

des csv ayant une tabulation comme séparateur ne posent pas de problème si c'est ce que tu entends par " en intégrant la tabulation directement dans le code"

Comme je l'avais dit, j'ai du forcer en indiquant que le contenu des faux xls était du texte...
 
Dernière édition:

a123

XLDnaute Nouveau
Re bonjour !


J'espère que vous allez bien !

Dans la suite de la requête, savez-vous comment lancer une macro en ouvrant l'excel directement via un batch et pas quand le xlsm est ouvert par un utilisateur svp ?

J'ai bien le code
Private Sub Workbook_Open()
Datas
End Sub
mais cela ouvre évidemment la macro en ouvrant le fichier avec le bat ou par l'utilisateur, comment pourrais-je encoder cela svp ?

Merci pour vos commentaires :)


Cdt,

Antoine Druet.
 

Discussions similaires

Réponses
16
Affichages
875

Statistiques des forums

Discussions
311 720
Messages
2 081 917
Membres
101 839
dernier inscrit
laurentEstrées