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 :

Ecrire une variable tableau dans un fichier fermé [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 129
    Points : 78
    Points
    78
    Par défaut Ecrire une variable tableau dans un fichier fermé
    Bonjour
    Il y a déjà plein de post sur le sujet mais je n’arrive pas à comprendre mon erreur.
    Je souhaite écrire (modifier) une ligne donnée dans un fichier sans l’ouvrir.
    Voici mon code :
    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
    35
    36
    37
    38
    39
    40
    Sub exportDonneeDansCelluleClasseurFerme()
        Dim Cn As ADODB.Connection
        Dim Cd As ADODB.Command
        Dim Rst As ADODB.Recordset
        Dim fichier As String, NomFeuille As String, NomCol As String
        Dim NumLigne As Integer, i As Integer
        Dim tableau(60) As Variant
     
        fichier = "F:\Classeur1.xlsm"
        NomFeuille = "Feuil1"
        NumLigne = 3
     
        For i = 1 To 60
            tableau(i) = i
        Next i
        Set Cn = New ADODB.Connection
        ' pour Xl 2007
        Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & fichier & ";" & _
            "Extended Properties=""Excel 12.0;HDR=NO;"""
     
        Set Cd = New ADODB.Command
        Cd.ActiveConnection = Cn
     
        For i = 1 To UBound(tableau())
            NomCol = Split(Columns(i).Address, ":$")(1)
     
           Cd.CommandText = "SELECT * FROM [" & NomFeuille & "$" & NomCol & NumLigne & ":" & NomCol & NumLigne & "]"
     
            Set Rst = New ADODB.Recordset
            Rst.Open Cd, , adOpenKeyset, adLockOptimistic
            Rst(0).Value = tableau(i)
            Rst.Update
        Next i
        Cn.Close
     
        Set Cn = Nothing
        Set Cd = Nothing
        Set Rst = Nothing
    End Sub
    Et je me retrouve avec ce message d’erreur :
    « Cette table contient des cellules hors de la plage de cellules définie dans cette feuille de calcul. »

    Merci de votre aide

  2. #2
    Inactif  

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Sans garantie.

    En principe, le Select en SQL demande un nom de table. Pour que cela marche en VB.net (et cela pourrait bien être la même chose en VBA), la table dans Excel, c'est en fait une plage nommée qui "couvre" les données et la ligne d'entête. Le nom de la table, c'est le nom de la plage.

    Donc, sauf horreur de ma part, si :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomFeuille & "$" & NomCol & NumLigne & ":" & NomCol & NumLigne
    Couvre bien toute ta plage, tu dois lui donner un nom de plage, et mettre le nom de plage à la place dans ton Select.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 129
    Points : 78
    Points
    78
    Par défaut
    Bonjour
    Merci de vous être penché sur mon problème, mais a bien y réfléchir plutôt que d’écrire dans un classeur fermé, les possibilités son quand même limités et complexes je préfère ouvrir et refermer le fichier.

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

Discussions similaires

  1. Création d'une variable tableau dans un fichier xla
    Par john_mtp dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/06/2011, 12h33
  2. afficher une variable tableau dans une JSP
    Par johnnywalker dans le forum Struts 1
    Réponses: 11
    Dernier message: 04/03/2007, 23h02
  3. [PHP-JS] Récupérer une variable php dans un fichier javascript
    Par zoom61 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/11/2006, 12h00
  4. ecrire une touche directionnelle dans un fichier excel
    Par aA189 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/08/2006, 21h41
  5. Enregistrement d'une variable dynamique dans un fichier
    Par zarbydigital dans le forum Langage
    Réponses: 13
    Dernier message: 24/12/2005, 22h28

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