Imcomprehension entre VBscript et VBA (Manipulation de 2 fichiers Excels)

Bonjour,

J'ai saisi un VBscript qui me permet d'ouvrir un 1er fichier Excel (Entree), de copier certaines données de ce fichier pour les transmettre à un second fichier (Sortie). le script fonctionne mais je ne comprend pas la restitution des données (plus accoutumé au VBA, je ne comprend pas pourquoi ce code fonctionne avec une restitution correcte sur Excel mais diffère avec le Fichier .VBS !)

Le code du script est le suivant :

Dim AppExc, tbl(889,4), tb1(12,3)
Set AppExc = CreateObject("Excel.Application")
Set wb = AppExc.Workbooks.Open("C:\Users\jean-luc\Desktop\Entree")  'adapter votre chemin pour tester
Set ws = wb.Worksheets(1)
Set wd = wb.Worksheets(2)
For i = 1 To 888
  For j = 1 To 3
    tbl(i, j) = ws.Cells(i, j)
  Next
Next
For i = 1 To 11
  For j = 1 To 2
    tb1(i, j) = wd.Cells(i + 1, j + 1)
  Next
Next
 wb.Close
Set wd = Nothing
Set ws = Nothing
Set wb = Nothing

Set wb = AppExc.Workbooks.Open("C:\Users\jean-luc\Desktop\Sortie")  'adapter votre chemin pour tester
Set ws = wb.Worksheets(2)
Set wd = wb.Worksheets(3)

 ws.range("A1").Resize(UBound(tbl, 1), UBound(tbl, 2)) = tbl
 wd.range("A1").Resize(UBound(tb1, 1), UBound(tb1, 2)) = tb1
 wb.Save
 wb.Close
 AppExc.Quit
Set wd = Nothing
Set ws = Nothing
Set wb = Nothing

Set AppExc = Nothing

Plus particulièrement, je ne comprend pas pourquoi en VBscript, je suis dans l'obligation d'augmenter les dimensions de mes tableaux lors de la déclaration pour pouvoir obtenir tous les résultats avec

Range("A1").resize...

, sans quoi il me manque tjrs une colonne et une ligne de résultat ?

Et aussi, je ne comprend pourquoi les résultats ne se copient pas en Range("A1") comme demandé mais en Range("B2") dans la réalité obtenue ? D’où viennent ces décalages

Peut-être pourriez vous svp m'aider à comprendre ? En Pj les fichiers Entree et Sortie, pour essayer vous pouvez adapter le chemin des fichiers sur script et enregistrer ce script depuis BlocNotes en .VBS

d'avance, merci...

10entree.xlsx (31.21 Ko)
7sortie.xlsx (30.43 Ko)

Bonsoir,

Je pense que ces définitions "Dim tbl(889,4), tb1(12,3)" sont inopérantes car en VBScript, , toutes les variables sont de type Variant.

Il ne faut pas oublier que VBScript a des fonctionnalités très simplifiées par rapport à VBA.

Il serait certainement mieux de positionner votre code de copie dans un des 2 fichiers et de se contenter d'appeler ce code dans votre VBScript.

Bonsoir,

S'il te manque systématiquement une ligne et une colonne lors de l'affectation de tableau, il me semble que c'est logiquement que tes tableaux sont de base 0 et le dimensionnement de la plage de réception avec UBound doit être augmenté de 1...

Cordialement.

Bjr,

Ce qui voudrait dire que les tableaux en VBscript sont par défaut en base 0.

En ajoutant 1 au limite des tableaux lors de la restitution me donne toutes les valeurs mais tjrs impossible de coller les données en "A1".

J'ai tenté, sans succès, d'adapter "Option Base 1" en début de code mais erreur de syntaxe.

Ce fichier .VBS sera intégré au planificateur de tâche pour mettre à jour automatiquement un fichier de calcul en fonction de variables modifiées quotidiennement.

Merci

Bonjour à tous,

Pour ne plus être tributaire de l'option base :

Dim tbl(1 to 889,1 to 4)

Eric

Bonjour Eriic,

Impossible de dimensionner son tableau de tel sorte en VBscript, j'obtiens une erreur de compilation : attendu '('

J'avais commencé mon code avec cette syntaxe ! Dommage...

Merci qd même.

Dans ce cas à part coller dans un nouveau tableau en décalant lignes et colonnes de 1, je ne vois pas d'autre possibilité.

Eric

Ok, je marque le sujet comme résolu depuis la réponse de MFerrand car le problème vient du fait que les tableaux s'initialisent à 0 par défaut sans possibilité de modifier cet état de fait. J'obtiens mes résultats même si ceux-ci ne se collent pas au bon endroit ! le tout c'est de le savoir...

Il est vrai que je préfère un "code juste" (optimisé et hors de méthode de contournement) à "juste un code" mais je vais m'en accommoder ! et ce autant pour parfaire ma "culture geek" que par curiosité.

Merci à vous.

Rechercher des sujets similaires à "imcomprehension entre vbscript vba manipulation fichiers excels"