XL 2010 Macro et fichier .csv

papypog

XLDnaute Occasionnel
Bonjour la communauté,

Je viens vers vous pour m’aider à résoudre un problème qui me prend la tête depuis quelques jours.

Afin d’équilibrer les phases d’une installation électrique en triphasé je relève chaque jour les données transmises par un éco-compteur.

Ce dernier génère deux fichiers au format .csv

- echantillonage_jour_22.10.2021.csv

- echantillonage_heure_22.10.2021.csv

La dernière partie du nom change donc tous les jours.

Le format csv ne permettant pas de faire des calculs j’ai réalisé une macro qui dans le répertoire de téléchargement, renomme les fichiers en j.csv et h.csv puis converti ces fichiers du format texte au format numérique afin de permettre les calculs.

Une seconde macro met en forme les documents (suppression des colonnes inutiles, formules diverses).

Le problème se situe au niveau de la première macro, tout fonctionne parfaitement sur le poste en W7 et Excel 2010 alors que sur le poste en W10 et Excel 2010 le code ne fonctionne parfaitement que pour le fichier « jour », le fichier « heure » est lui amputé d’un nombre important de lignes.

Que ce soit pour le fichier « jour » et le fichier « heure » les deux codes sont strictement identiques (hormis les variables évidemment).

Voici le code :
VB:
Sub heur()

Dim Chemin As String
Dim Part As String
Dim Chem2 As String
Chemin = "C:\Users\ANDRE\Downloads\" & "\"
Part = "echantillonage_heure_"
Chem2 = Dir(Chemin & "\" & Part & "*.csv")
Workbooks.Open Filename:=Chemin & "\" & Dir(Chemin & "\" & Part & "*.csv"), Local:=True
ChDir "C:\Users\ANDRE\Downloads"
    ActiveWorkbook.SaveAs Filename:="C:\Users\ANDRE\Downloads\h.csv", FileFormat _
        :=xlCSV, CreateBackup:=False

    'ChDir "E:\"
    'Workbooks.Open Filename:="E:\heure.xlsm"
   
    'Application.Run "heure.xlsm!heur"
End Sub

Si j'effectue le "renommage" manuel du fichier dans le répertoire tout se passe bien, c'est la fonction "Enregistrer sous" qui semble poser problème, mais pourquoi uniquement sur W10 et uniquement pour le fichier "Heure".
Si une bonne âme voulait bien me tirer d'affaire avant que je perde le peu de cheveux qui me reste. Peut-être en renommant par macro le fichier au lieu de l'ouvrir puis de "l'enregistrer sous" tout cela avec des mots simples car je suis loin d'être un aigle en VBA.
D'avance MERCI à ceux qui auront la patience de me lire jusqu'au bout.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Papypog,
En m'inspirant de ce lien mais sans avoir testé :
VB:
Sub heur()
Dim Chemin$, Part$, Chem2$, AncienNom$, NouveauNom$
Chemin = "C:\Users\ANDRE\Downloads\" & "\"
Part = "echantillonage_heure_"
AncienNom = Chemin & "\" & Dir(Chemin & "\" & Part & "*.csv")
NouveauNom = "C:\Users\ANDRE\Downloads\h.csv"
Name AncienNom As NouveauNom
End Sub
A voir si ça marche.
 

papypog

XLDnaute Occasionnel
Bonsoir Papypog,
En m'inspirant de ce lien mais sans avoir testé :
VB:
Sub heur()
Dim Chemin$, Part$, Chem2$, AncienNom$, NouveauNom$
Chemin = "C:\Users\ANDRE\Downloads\" & "\"
Part = "echantillonage_heure_"
AncienNom = Chemin & "\" & Dir(Chemin & "\" & Part & "*.csv")
NouveauNom = "C:\Users\ANDRE\Downloads\h.csv"
Name AncienNom As NouveauNom
End Sub
A voir si ça marche.
Bonjour,
Merci pour la rapidité mais ça ne marche pas, blocage au niveau Name AncienNom As NouveauNom.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Je viens de faire un test rapide avec un fichier sur mon bureau et ça marche. Avec :
VB:
Sub heur()
Dim AncienNom$, NouveauNom$
AncienNom = "C:\Users\PC_PAPA\Desktop\Avant.xlsx"
NouveauNom = "C:\Users\PC_PAPA\Desktop\Après.xlsx"
Name AncienNom As NouveauNom
End Sub
Etes vous sur de votre ancien nom ? Vous avez dans votre macro :
Code:
Chemin = "C:\Users\ANDRE\Downloads\" & "\"
et
Workbooks.Open Filename:=Chemin & "\" & Dir(Chemin & "\" & Part & "*.csv"), Local:=True
Donc vous avez Filename:="C:\Users\ANDRE\Downloads\\\" & Dir ....
Un \ dans Chemin, auquel vous rajoutez un \, et dans Filename vous en rajoutez un 3ème.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Je viens de faire un test rapide avec un fichier sur mon bureau et ça marche. Avec :
Pour en avoir le coeur net, testez cet macro :
VB:
Sub VerifFichier()
Dim Chemin As String
Dim Part As String
Dim Chem2 As String
Chemin = "C:\Users\ANDRE\Downloads\" & "\"
Part = "echantillonage_heure_"
[A1] = Chemin & "\" & Dir(Chemin & "\" & Part & "*.csv")
End Sub
En A1 de la feuille courante j'écris le nom du fichier qui a été calculé.
 

papypog

XLDnaute Occasionnel
Pour en avoir le coeur net, testez cet macro :
VB:
Sub VerifFichier()
Dim Chemin As String
Dim Part As String
Dim Chem2 As String
Chemin = "C:\Users\ANDRE\Downloads\" & "\"
Part = "echantillonage_heure_"
[A1] = Chemin & "\" & Dir(Chemin & "\" & Part & "*.csv")
End Sub
En A1 de la feuille courante j'écris le nom du fichier qui a été calculé.
Re,
Voici ce que ça m'indique en A1 :

C:\Users\ANDRE\Downloads\\\echantillonage_heure_22.10.2021.csv
Effectivement il y a 3 \\\
Mais pourquoi mon code ne pose aucun problème dans 3 cas sur 4 ? et comment faut-il le corriger pour que le renommage fonctionne ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Essayez ça :
Code:
Sub VerifFichier()
Dim Chemin As String
Dim Part As String
Dim Chem2 As String
Chemin = "C:\Users\ANDRE\Downloads\"
Part = "echantillonage_heure_"
[A1] = Chemin & Dir(Chemin &  Part & "*.csv")
End Sub
Vous devriez obtenir : C:\Users\ANDRE\Downloads\echantillonage_heure_22.10.2021.csv
Vérifiez que ce chemin est correct avec l'explorateur de fichiers.

Si ça marche testez votre "vraie" macro avec :
VB:
Sub heur()
Dim Chemin$, Part$, Chem2$, AncienNom$, NouveauNom$
Chemin = "C:\Users\ANDRE\Downloads\"
Part = "echantillonage_heure_"
AncienNom = Chemin & Dir(Chemin & Part & "*.csv")
NouveauNom = "C:\Users\ANDRE\Downloads\h.csv"
Name AncienNom As NouveauNom
End Sub
 

papypog

XLDnaute Occasionnel
Sub heur() Dim Chemin$, Part$, Chem2$, AncienNom$, NouveauNom$ Chemin = "C:\Users\ANDRE\Downloads\" Part = "echantillonage_heure_" AncienNom = Chemin & Dir(Chemin & Part & "*.csv") NouveauNom = "C:\Users\ANDRE\Downloads\h.csv" Name AncienNom As NouveauNom End Sub
Re,
Toujours blocage au même stade à savoir ; Name AncienNom As NouveauNom.
En A1 j'ai bien le bon chemin.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Désolé je ne comprends pas. MS confirme bien la syntaxe :
Essayez cela, en supprimant le Dir :
VB:
Sub heur()
Dim Chemin$, Part$, Chem2$, AncienNom$, NouveauNom$
Chemin = "C:\Users\ANDRE\Downloads\"
Part = "echantillonage_heure_"
AncienNom = Chemin & Part & "*.csv"
NouveauNom = Chemin & "h.csv"
Name AncienNom As NouveauNom
End Sub
Sinon je sèche.:(
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Désolé, je pense avoir trouvé. Il y a une "*" en trop.
Essayez :
VB:
Sub heur()
Dim Chemin$, Part$, Chem2$, AncienNom$, NouveauNom$
Chemin = "C:\Users\ANDRE\Downloads\"
Part = "echantillonage_heure_"
AncienNom = Chemin & Part & ".csv"
NouveauNom = Chemin & "h.csv"
Name AncienNom As NouveauNom
End Sub
Et, ce, depuis le début. Je ne l'avais pas vu.
 

papypog

XLDnaute Occasionnel
Sub heur() Dim Chemin$, Part$, Chem2$, AncienNom$, NouveauNom$ Chemin = "C:\Users\ANDRE\Downloads\" Part = "echantillonage_heure_" AncienNom = Chemin & Part & ".csv" NouveauNom = Chemin & "h.csv" Name AncienNom As NouveauNom End Sub
Re,
toujours pareil, j'ai essayé avec des fichiers avec nom invariable et c'est la même sanction.
Allez, maintenant au dodo, la nuit portera peut-être conseil. 💤
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Dernier et ultime essai.
Vous prenez la PJ, vous la dézippez et la mettez sur le bureau.
Dans Dossier vous ouvrez "A essayer.xlsm", à chaque appui sur le bouton le fichier csv changera de nom. De cette façon :
20211022_230626.gif
 

Pièces jointes

  • Dossier.zip
    22.1 KB · Affichages: 8

Discussions similaires

Statistiques des forums

Discussions
315 091
Messages
2 116 113
Membres
112 662
dernier inscrit
lou75