UTF8/ANSI & Requêtes et connexions

Bonjour
Je me présente, je suis infographiste dans une boîte d'archi.
Actuellement je travaille sur un outil me permettant d'exploiter des données issues d'un logiciel tiers de modélisation. (Sketchup)

Les données arrivent en *.csv.

Je me heurte pour l'instant à deux problèmes:

-Le premier:

Les données *.csv sont encodées en UTF-8 et lorsque j'écris mes formules(des recherchesV), ce que je tape est en ANSI, donc la reconnaissance ne se fait pas, je suis contraint d'aller copier dans mon tableau importé le nom de cellule puis de le coller dans la formule dans mon autre feuillet, sympa.
Ce n'est pas du VBA mais si quelqu'un s'est déjà trouvé face à ce genre de situation et qu'il a trouvé la solution ou une piste, je suis preneur.

-Le second, j'ai créé une macro pour simplifier l'import du fichier *.csv. Cependant vu que c'est un fichier que je révise régulièrement, les requêtes et connexions sont présentes. Or dans ma macro, j'ai tenté d'intégrer la suppression du dernier fichier dans l'onglet "requêtes & connexions". Malheureusement ça ne foncitonne pas.
En clair, si je supprime les requêtes manuellement, la macro fonctionne, mais si je laisse les requêtes, la macro ne les élimine pas.
Est il possible d'insérer une "purge" de l'onglet requêtes et connexions"?
Je suis un noob total en la matière donc navré s'il y a des énormités :-)

Merci pour la lecture

Ci joint le code VBA de la macro

Sub Import()
'
' Import Macro
'

'
ActiveWorkbook.Queries.Add Name:="2023-02-07", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Csv.Document(File.Contents(""NOM DU DOSSIER DU FICHIER""),[Delimiter="","", Columns=7, Encoding=65001])," & Chr(13) & "" & Chr(10) & " #""En-têtes promus"" = Table.PromoteHeaders(Source, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Type modifié"" = Table.TransformColumnTypes(#""En-têtes promus"",{{""Name"", type text}, {""Hidden"", Int64.Type}, {" & _
"""LenX"", type text}, {""LenY"", type text}, {""Tag"", type text}, {""usage"", type text}, {""Quantity"", Int64.Type}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Type modifié"""

ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=2023-02-07;Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [2023-02-07]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "_2023_02_07"
.Refresh BackgroundQuery:=False
End With
Sheets(1).Select
Sheets(1).Name = "IMPORT"
Sheets("Traitement 2").Select
Cells.Select
Selection.Replace What:="#REF", Replacement:="IMPORT", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
Application.CommandBars("Queries and Connections").Visible = False
End Sub

Bonjour

Créer une requête PowerQuery par VBA n'est pas souhaitable

On peut créer une requête paramétrée et lui passer le nom du fichier à traiter
Une fois les données dans la classeur peu importe le format initial donc ton explication ne tient pas...

J'ai l'impression que tu ne comprends pas trop ce que tu manipules...

Bonsoir,

Je n’ai pas dit que j’y comprenais grand chose. C’est d’ailleurs un peu pour cela que je poste sur ce forum, cependant si c’est réservé aux initiés uniquement on peut m’en informer je me désinscrirai si c’est souhaité.

Pour ce qui est du format, Utf-8 et Ansi, malheureusement je ne vois pas d’autre piste, pourtant j’ai fait pas mal de recherche et elle reste la seule hypothèse, je peux le prouver en vidéo si besoin, pas de soucis.

Donc non en effet je ne comprends pas ce que je manipule, mais je veux bien qu’on m’explique.

RE

Pour t'aider il ne faut pas que tu postes un code qui ne fonctionne pas mais un CSV et une explication sur le résultat attendu...

Bonjour,

J'ai réglé le souci des références externes, dans l'onglet "Requêtes et Connexions" en substituant la partie en rouge dans le code que j'avais envoyé par celle ci:

For Each cn In ActiveWorkbook.Connections
cn.Delete
Next

Je reviens donc sur la partie traitement du *.csv de base.

Mon problème vient du fait que lorsque je fais une recherchev pour un terme, admettons "BDI-1-6-F Collaboratif" dans une colonne d'un onglet, si j'écris moi-même le terme, il y a une erreur. Avant que l'on ne me pose la question, oui j'ai tout tester en terme de façon d'écrire, le tiret du 6 remplacé par le tiret de l'alphanumérique, le 1 majuscule remplacé par celui de l'alphanumérique etc. J'ai respecté toutes les sensibilités de casse. Mais aucun résultat.
Par contre, quand je copie le terme dans l'onglet données csv, et que je le colle dans ma recherchev, ça fonctionne. D'où la piste de l'encodage UTF-8 et de l'ANSI.

Je joins le *.csv, et l'excel.

Le terme BDI-1-6-F Collaboratif est en ligne 53 de l'onglet Traitement2

Vous pouvez essayer si vous le souhaitez, de copier/coller le terme dans l'onglet IMPORT ligne 191 et le coller dans l'onglet Traitement 2, vous verrez que cela fonctionne.

Le but est de m'éviter d'une part de me refaire toutes les lignes en copier/coller, et surtout de comprendre avant toute chose l'origine du problème et la façon de le traiter.

Je suppose que la macro ne fonctionnera pas (smiley dans la barre d'accès rapide) car le fichier *.csv est rangé de façon spécifique chez moi.

Merci

132023-02-07.csv (15.48 Ko)

Bonjour,

Bonjour le fil,

L'erreur ne provient pas de la requête, mais de la colonne A de l'onglet "Traitement2"..

En effet, il y a un caractère (63) invisible juste après le F, et avant l'espace normal... Et ce, dans 105 cellules de cette colonne...

Si tu peux supprimer cette liste, et la recréer, ce serait une solution..

Pour remplacer cette valeur parasite, tu peux faire ainsi :

Dans la cellule M1 (par exemple), tu mets cette formule :

=STXT(A53;10;1)

Tu ne verras rien, et si tu mets la formule dans une autre cellule :

=CODE(M1)

Tu auras 63.

Tu copies cette cellule M1, puis la colles (collage spécial/Valeur) dans la cellule N1 (par exemple)

Tu copies cette cellule N1, tu sélectionnes la colonne A, puis Ctrl + H (Edition/Remplacer).
Dans la case "Rechercher", tu colles (tu ne verras rien)
Dans la case "Remplacer par", tu laisses vide

Puis "Remplacer tout"
Dans le fichier en ligne, il y a eu 105 remplacements

Bon courage

@cousinhub

En effet cela fonctionne.
Reste à savoir comment diantre ce caractère est venu ici.
Je présume qu'il peut s'agir du clavier qui utilise un sans fil propriétaire de Dell.

Merci beaucoup en tout cas, cela m'économisera beaucoup de temps.

Je ne voudrais pas abuser mais j'ai une autre question cependant je peux ouvrir un autre sujet. Je vais tout de même tâcher de trouver réponse avant.
Merci encore

Re-,

Reste à savoir comment diantre ce caractère est venu ici.

Je présume qu'il peut s'agir du clavier qui utilise un sans fil propriétaire de Dell.

Cette colonne n'est pas une extraction quelconque? Ni d'un copier/coller quelconque?

Tu veux dire que tu as tapé à la main toutes les cellules? Dans ce cas, vite, change de clavier...(ou tu vas vers d'autres soucis...)

Alors oui j'ai tout tapé à la main, seulement je travaille sur deux postes différents, l'un a un master bios en Anglais, l'autre en français. L'un est un portable, l'autre une workstation fixe (celui avec le clavier sans fif)
Mais je note dans l'excel le texte que tu m'as envoyé concernant l'erreur en nota afin de s'en souvenir si ça recommence.
Merci encore.

Rechercher des sujets similaires à "utf8 ansi requetes connexions"