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

Macros et VBA Excel Discussion :

Problème déclaration variable [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut Problème déclaration variable
    Bonjour,

    j'ai un problème avec la déclaration d'une variable. J'essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    chemin = "C:/Base.xls"
    chemin.range("G2").select
    ActiveCell.FormulaR1C1="Test"
    mais cela ne fonctionne pas…..

    Il est possible que c'est le qui me manque……j'ai essayé mais le code bloque sur la variable….

    J'essaye d'écrire dans un classeur fermé, j'ai bien lu le super tuto de Silkyroad, mais j'essaye si une autre "méthode" est possible……

    Merci pour votre aide…..

    A+

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,


    Je n'ai pas lu le tutoriel en question, mais à la lumière de la question, je crois déceler que tu cherches le moyen de fournir un chemin d'accès.

    Donc, tu vas sans doute devoir adapter en fonction des enseignements contenus dans le tutoriel; mais en supposant que ce soit pour ouvrir un classeur en utilisant VBA:
    Il n'est pas obligatoire d'associer le classeur à une variable objet; mais personnellement, je trouve cela bien pratique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim chemin as string
    chemin = "C:/Base.xls"
    dim leclasseur as Workbook
    set leclasseur = Workbooks(chemin).open
    ou, une variante, si le chemin d'accès est dans une cellule et que tu ne veuilles pas utiliser de variable objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim chemin as string
    chemin = range("G2").text
    workbooks.open(chemin)
    Mais, comme j'ai dit plus haut, le tutoriel ne parle probablement pas d'ouvrir le classeur, mais cela devrait quand même te donner une idée.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci clementmarcotte,

    Je te remercie pour ton aide et explications.

    Mais comme tu as pu en déduire, je ne souhaite pas ouvrir le classeur….j'essaye d'écrire dedans, et je ne trouve pas la "bonne" écriture de code….

    Merci,

    A+

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Je ne comprends pas, tu as lu le tutoriel de Silkyroad sur le sujet.
    Donc tu devrais pouvoir nous proposer un code du style (pris brut dans le tutoriel):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    Sub RequeteClasseurFerme_Excel2007()
        Dim Cn As ADODB.Connection
        Dim Fichier As String
        Dim NomFeuille As String, texte_SQL As String
        Dim Rst As ADODB.Recordset
     
        'Définit le classeur fermé servant de base de données
        Fichier = "C:\Documents and Settings\mimi\dossier\NomClasseur.xlsx"
        'Nom de la feuille dans le classeur fermé
        NomFeuille = "Feuil1"
     
        Set Cn = New ADODB.Connection
     
        '--- Connexion ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
            .Open
        End With
        '-----------------
     
     
        '
        '... la requête ...
        '
     
     
        '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing
     
    End Sub
    Donne nous plus de détails comme la version d'Excel que tu utilises, c'est dans un 1er temps ce qui va déterminer quel type de connexion choisir dans le chapitre III du tutoriel.
    Il faudra également savoir ce que tu veux faire dans ce classeur exactement (écriture, lecture, modification,...) pour savoir quelle requête tu vas devoir utiliser.

    Pour le fait de ne pas vouloir ouvrir le fichier... ma fois, il faut aussi parfois savoir commencer "petit" pour organiser un peu son code et avoir une meilleur idée de ce que l'on cherche à faire, avant de voir "grand".
    Enfin ça n'est que mon avis.
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci Qwazerty,

    Merci pour tes conseils. j'ai Excel 2003

    Mon problème est simple/compliqué….

    C'est une gestion de notes de frais : J'ai 20 collègues qui doivent faire leurs frais. J'ai un classeur "C:/Base.xls" contenant tous les frais. Ce classeur est "lourd" et ma connexion au serveur (=au boulot) est super lente….chaque collègue renseigne environ 10 données.

    J'ai essayé (grâce au super tuto de Silkyroad) :
    *je suis 1 collègue, je fais mes frais, et la macro écrit les données dans "Base", via l'exemple de Silkyroad avec "l'écriture dans la cellule G30", cela fonctionne, mais super long…(20 secondes)
    *Je suis un collègue, je fais mes frais, et la macro met à jour les données dans "Base", via l'exemple de Silkyroad avec "Mise à jour", cela fonctionne, mais toujours aussi super long..(plus de 30 secondes)

    *J'ai essayé une autre méthode en ouvrant le classeur "Base" pour écrire les données, puis le refermer, cela fonctionne, mais idem, super long….

    J'essaye donc de trouver une méthode "plus rapide" : un peut à l'identique de la remarque de Silkyroad dans son tuto :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ='C:\Documents and Settings\mimi\dossier\excel\[ClasseurBase.xls]Feuil1'!$A$1
    , mais "dans l'autre sens" c'est à dire au lieu de lire, d'écrire dans le classeur.

    méthode qui me permettrait de ne pas ouvrir le classeur et donc de "perdre du temps à l'ouverture"…..

    En te remerciant,

    A+

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour,

    peu importe la méthode, le réseau est toujours aussi lent ‼

    Faire le test en local, si c'est plus rapide, pas de solution …

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Problème déclaration variables
    Par Dixies dans le forum IHM
    Réponses: 5
    Dernier message: 03/03/2011, 23h45
  2. Problème déclaration variable
    Par Erazion dans le forum ASP.NET
    Réponses: 9
    Dernier message: 08/04/2008, 18h40
  3. Problème déclaration variable dans "if"
    Par doremib dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 17/07/2007, 12h42
  4. Problème déclaration variable
    Par patou41000 dans le forum C++/CLI
    Réponses: 5
    Dernier message: 25/04/2007, 01h04
  5. problème déclaration variable dynamique
    Par piotrr dans le forum Tkinter
    Réponses: 1
    Dernier message: 24/04/2007, 16h16

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