IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Script VB echoue alors qu'il fonctionne sous excel


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 39
    Par défaut Script VB echoue alors qu'il fonctionne sous excel
    Bonjour à tous,
    Cette ligne de script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Range(beginOfRange).Select
        Selection.AutoFill Destination:=Range(beginOfRange, Range(beginOfRange).Offset(OffsetValue, 0)), Type:=xlFillDefault
    echoue à la compilation lorsqu'elle est dans un fichier .VBS exécuté depuis le système (XPPro) alors qu'elle fonctionne parfaitement sous Excel (97) en tant que macro. Vous avez une idée ?
    Message Ligne ... Caractère 36, instruction attendue, code 800A0400. le caractère 36, c'est le = du premier := de la ligne Select.AutoFill.
    Merci
    Cordialement
    Eb

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Il ne faut pas perdre de vue que VBA(Visual Basic for Application) Excel est pratiquement un outil de développement intégré qui sait gérer les bibliothèques(DLL) et les composants(OCX)
    Les éléments précités(dans ton post) sont liés à un objet "Document" géré par Excel.
    Le VBS(Visual Basic Scripting) est un outil très modeste pour le développement et qui ne sait pas gérer les bibliothèques et les composants par lui-même. Mais on peut le lui faire faire si on passe par un wrapper.

    D'où l'erreur mentionnée à l'exécution.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 39
    Par défaut
    Citation Envoyé par l_autodidacte Voir le message
    ...Les éléments précités(dans ton post) sont liés à un objet "Document" géré par Excel.
    Le VBS(Visual Basic Scripting) est un outil très modeste pour le développement et qui ne sait pas gérer les bibliothèques et les composants par lui-même. Mais on peut le lui faire faire si on passe par un wrapper...
    Bonjour,
    Merci pour ta réponse. Est-ce que le code ci-dessous correspond à ce que tu veux dire par "passer un wrapper" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set xl = CreateObject("Excel.Sheet")
    xl.Application.Workbooks.Add
    xl.Application.Workbooks(1).WorkSheets.Add
    With xl.Application.ActiveWorkbook
    .Names.Add Name="s" & tMois(0) & "NP", RefersToR1C1:="='Solde Annee precedente'!R17C7"
    Il ne marche pas plus que l'autre, le compilateur bute toujours sur le = de :=
    Cordialement
    Eb

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut

    Il me semble bien que ton := doit être interprété comme un littéral par VBScript, c'est l'objet xl (Excel.Sheet) qui lui va utiliser l'opérateur.
    Je n'ai jamais utilisé l'objet Excel, mais je pense que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With xl.Application.ActiveWorkbook
    .Names.Add Name = "s" & tMois(0) & "NP", RefersToR1C1 & ":=" & "'Solde Annee precedente'!R17C7"
    doit être une piste pour la rédaction acceptable par VBScript.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 39
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    ... je pense que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With xl.Application.ActiveWorkbook
    .Names.Add Name = "s" & tMois(0) & "NP", RefersToR1C1 & ":=" & "'Solde Annee precedente'!R17C7"
    doit être une piste pour la rédaction acceptable par VBScript.
    Bonjour,
    Merci pour la réponse.
    Si j'écris ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille.Names.Add Name="s" & tMois(0) & "NP", RefersToR1C1 & ":=" & "='Solde Annee precedente'!R17C7"
    ok, VBScript compile et le script s'exécute, mais c'est Excel qui n'aime pas : "variable non définie : name"
    Je cherche encore, mais ... le temps qui m'est imparti touche à sa flemme
    Cdlt
    Eb

  6. #6
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Si la seule variable est tMois(0), essais encor comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille.Names.Add "Name=s" & tMois(0) & "NP, RefersToR1C1 := Solde Annee precedente!R17C7"
    si les apostrophes sont utiles/nécessaires
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille.Names.Add "Name=s" & tMois(0) & "NP, RefersToR1C1 := 'Solde Annee precedente'!R17C7"
    Je me répète, je n'ai aucune connaissance dans l'utilisation d'une macro Excel depuis VBScript
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. Réponses: 12
    Dernier message: 07/09/2010, 14h54
  2. Réponses: 10
    Dernier message: 17/02/2009, 15h51
  3. [DOM] Script qui ne semble pas fonctionner sous IE 6 et 7
    Par Oluha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2007, 16h50
  4. Réponses: 4
    Dernier message: 28/12/2006, 18h42
  5. script fonctionnant sous IE pas sous FF
    Par thibotus01 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/03/2006, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo