Différence [#All] et [#Tout] ?

Bonjour,

J'ai une remarque particulière que je ne comprend pas j'ai un fichier Excel qui importe les données de seconds fichiers Excel.

Les données sont stockés sous forme de tableaux (Insertion > Tableau > avec des entêtes)

Sauf que dans mon fichier principal (celui qui importe) je fais référence à ces tableaux de la façon suivante :

ThisWorkbook.Worksheets(nm).Range(nm & "[#All]")

Alors que dans mon fichier que j'importe, je dois faire référence à la française :

wb.Worksheets(nm).Range(nm & "[#Tout]")

Je voudrais donc savoir si quelqu'un savait où on paramétrait cette langue ? Comment savoir si c'est en français ou en anglais ?

J'ouvre mes fichiers de la façon suivante :

Dim app As Excel.Application, wb As Workbook, path As String, name As String
Set app = New Excel.Application
app.Visible = False
app.ScreenUpdating = False
app.Calculation = xlCalculationManual
app.EnableEvents = False
app.DisplayAlerts = False
Set wb = app.Workbooks.Open(path & "\" & name, False, True, IgnoreReadOnlyRecommended:=True)

Hello,

Via cette fonction :

Public Function LangueSysteme()
'par: https://excel-malin.com

On Error GoTo FunctionErreur

Dim CodeLangueSysteme As Single
'trouver le code de la langue
CodeLangueSysteme = Application.LanguageSettings.LanguageID(msoLanguageIDUI)

'associer le code à la langue (langues principales, les autres sont remplacées par l'anglais"
Select Case CodeLangueSysteme
Case 1036, 2060, 11276, 3084, 9228, 12300, 15372, 5132, 13324, 6156, 14348, 58380, 8204, 10252, 4108, 7180: LangueSysteme = "Français"
Case 1033, 2057, 3081, 10249, 4105, 9225, 15369, 16393, 14345, 6153, 8201, 17417, 5129, 13321, 18441, 7177, 11273, 12297: LangueSysteme = "Anglais"
Case 1031, 3079, 5127, 4103, 2055: LangueSysteme = "Allemand"
Case 2052, 4100, 1028, 3076, 5124: LangueSysteme = "Chinois"
Case 1043, 2067: LangueSysteme = "Néerlandais"
Case 1040, 2064: LangueSysteme = "Italien"
Case 3082, 1034, 11274, 16394, 13322, 9226, 5130, 7178, 12298, 17418, 4106, 18442, 22538, 2058, 19466, 6154, 15370, 10250, 20490, 21514, 14346, 8202: LangueSysteme = "Espagnol"
Case 1025, 5121, 15361, 3073, 2049, 11265, 13313, 12289, 4097, 6145, 8193, 16385, 10241, 7169, 14337, 9217: LangueSysteme = "Arabe"
Case Else: LangueSysteme = "Autre"
End Select

Exit Function

FunctionErreur:
LangueSysteme = ""
End Function

Très bien je connaissais pas cette propriété de l'application.

Mais pourquoi dans mon cas les deux applications sont en 1036 donc Français d'après ton test ?

Le fichier est en français et quand je réalise la sélection dans une cellule j'utilise bien le Tableau[#Tout]

Mais dans le VBA, j'ai toujours utilisé la lecture en anglais Feuil1.Range("Tableau[#All]")

Alors pourquoi quand je l'ouvre dans une seconde session d'application (possède le LanguageSettings 1036) je dois référencer en Français ?

Hello,

Pour moi tu n'as pas de différence entre All et Tout.

La seule différence est le support.

Dans VBA c'est le ALL qui doit être utilisé, le Tout ne fonctionne pas

Dans une feuille de calcul, et dans un environnement français, il faut utiliser le TOUT

Dans une feuille de calcul, et dans un environnement anglais, il faut utiliser le ALL

Je suis d'accord que dans une feuille de calcul cela dépend de la configuration de la langue (cas basique).

Mais ma question est justement dans un environnement VBA, qui selon tes dires devrait être "ALL", le "TOUT" ne fonctionnant pas :

Comment je peux avoir dans une même fonction un référencement par "All" (normal) mais aussi un référencement par "TOUT" (qui ne devrait pas marcher)

Le "Tout" étant pour un Workbook sur une seconde instance d'application Excel.

C'est pour cette raison que je réalise cette discussion !

Comment savoir le référencement en sachant que sur un même ordinateur les propriétés d'Excel sont identiques peut importe l'instance mais que je dois faire le distinguo entre "Tout" et "All" selon le cas.

Bonjour,
Si le nom du tableau est le nom de la feuille.

Sub Test()
Dim TD As Range
    'tableau entier( y.c. en-tetes et ligne totaux)
    Set TD = Worksheets(nm).ListObjects(nm).Range
    MsgBox TD.Address
    'plage de valeurs (sans en-tetes et ligne totaux)
    Set TD = Worksheets(nm).ListObjects(nm).DataBodyRange
    MsgBox TD.Address
End Sub
Rechercher des sujets similaires à "difference all tout"