OVH Cloud OVH Cloud

querytables.name ???

2 réponses
Avatar
Pascal16
Bonjour

J'ai cr=E9er une requ=EAte, qui marche bien, avec le code suivant :

With ActiveSheet.QueryTables.Add(Connection:=3D _
"TEXT;K:\PROD\Import_SAP\BOM_FP03.TXT",
Destination:=3DRange("A1"))
.Name =3D "BOM_FP0381"
.FieldNames =3D True
.RowNumbers =3D False
.FillAdjacentFormulas =3D False
.PreserveFormatting =3D True
.RefreshOnFileOpen =3D False
.RefreshStyle =3D xlInsertDeleteCells
.SavePassword =3D False
.SaveData =3D False
.AdjustColumnWidth =3D True
.RefreshPeriod =3D 0
.TextFilePromptOnRefresh =3D False
.TextFilePlatform =3D 437
.TextFileStartRow =3D 1
.TextFileParseType =3D xlFixedWidth
.TextFileTextQualifier =3D xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter =3D False
.TextFileTabDelimiter =3D True
.TextFileSemicolonDelimiter =3D False
.TextFileCommaDelimiter =3D False
.TextFileSpaceDelimiter =3D False
.TextFileColumnDataTypes =3D Array(1, 9, 1, 1, 9, 1, 9, 1, 1, 1,
9, 1, 1, 1)
.TextFileFixedColumnWidths =3D Array(10, 8, 4, 12, 6, 2, 2, 8,
12, 8, 5, 11, 3)
.TextFileTrailingMinusNumbers =3D True
.Refresh BackgroundQuery:=3DFalse
End With

Mon soucis est que j'utilise les donn=E9es retourn=E9es par la requ=EAte
sur une autre feuille avec la formule suivante :

=3DRECHERCHEV(B2;BOM!BOM_FP03_1;3;0)

hors malgr=E9s le fait que j'impose =E0 ma requ=EAte le nom BOM_FP03_1,
celle ci n'en fait qu'=E0 sa t=EAte et me fait =E9voluer constament le nom
BOM_FP03_2, BOM_FP03_3 ....

comment forcer le nom ?

Merci d'avance

pascal

2 réponses

Avatar
michdenis
Bonjour Pascal16,

La résultante de l'exécution de ton code provoque la création
d'une plage nommée (menu / insertion / nom / définir) ayant
le même nom que ton QueryTable.

Comme tu sais, il n'est pas possible d'avoir 2 plages nommées
ayant le même nom dans un classeur.

Si tu veux pouvoir rebaptiser le QueryTable d'un nom particulier
à chaque exécution, utilise une cellule particulière d'une feuille de
ton classeur pour enregistrer le nom d'un QueryTable particulier.

La seconde fois que tu exécuteras ton code, tu pourras supprimer
le nom de ta plage nommée en utilisant l'information de cette cellule
qui contient l'ancien nom du QueryTable et ce, en utilisant ce type
de syntaxe -> Exemple :
ThisWorkbook.Names(Range("Feuil5.H50")).Delete
Cette ligne de code doit être utilisé avant de rebaptiser ton QueryTable
avant de définir la propriété Name du QueryTable.


Salutations!




"Pascal16" a écrit dans le message de news:

Bonjour

J'ai créer une requête, qui marche bien, avec le code suivant :

With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;K:PRODImport_SAPBOM_FP03.TXT",
Destination:=Range("A1"))
.Name = "BOM_FP0381"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = False
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 9, 1, 1, 9, 1, 9, 1, 1, 1,
9, 1, 1, 1)
.TextFileFixedColumnWidths = Array(10, 8, 4, 12, 6, 2, 2, 8,
12, 8, 5, 11, 3)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:úlse
End With

Mon soucis est que j'utilise les données retournées par la requête
sur une autre feuille avec la formule suivante :

=RECHERCHEV(B2;BOM!BOM_FP03_1;3;0)

hors malgrés le fait que j'impose à ma requête le nom BOM_FP03_1,
celle ci n'en fait qu'à sa tête et me fait évoluer constament le nom
BOM_FP03_2, BOM_FP03_3 ....

comment forcer le nom ?

Merci d'avance

pascal
Avatar
Pascal16
Là c'est vrai que je comprends mieux .... Et en plus ça marche.
Merci beaucoup

Pascal