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

VBA Access Discussion :

[DDE]selection multiple dans un tableau Excel


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 18
    Points
    18
    Par défaut [DDE]selection multiple dans un tableau Excel
    Bonjour,

    Petit souci avec un tableau Excel dans un cadre d'objet indépendant.
    Je n'arrive pas à faire une séléction multiple de cellule.

    Sous Excel, le code suivant marche très bien:
    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
     
    Sub Macro1()
        Dim obj As Range, x As Byte, y As Byte
        With Worksheets(1)
            Set obj = .Range(.Cells(4, 2), .Cells(6, 3))
            For x = 2 To 18 Step 4
                For y = 4 To 28 Step 6
                    If x <> 8 / y Then Set obj = Union(.Range(.Cells(y, x), .Cells(y + 2, x + 1)), obj)
                Next
            Next
            With obj
                ...
                ...
            End With
        End With
    End Sub
    Sous access, le code suivant ne marche pas:
    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
     
    Private Sub macro1()
        Dim x As Byte, y As Byte, obj As Range, exc As Worksheet
        Set exc = cadreindependant.Controls(1).Object.Worksheets(1)
        With exc
            Set obj = .Range(.Cells(4, 2), .Cells(6, 3))
            For x = 2 To 18 Step 4
                For y = 4 To 28 Step 6
                    If x <> 8 / y Then Set obj = Union(.Range(.Cells(y, x), .Cells(y + 2, x + 1)), obj)
                Next
            Next
            With obj
                ...
                ...
            End With
        End With
    End Sub
    Le "Union" ne passe plus lors de l'execution et j'obtient l'erreur :

    Erreur d'exécution '1004':
    La méthode 'Union' de l'objet '_Global' a échoué

    Qu'est ce qui ne va pas?

    Question bonus:
    si je remplace par J'obtient une erreur de dépacement de capacité lorsque x * y dépasse 255. Pourtant je n'attribue rien a ces variables... Comment VBA gère les variables lors des opérations arithmétiques?

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Les références Excel sont-elles actives.

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Oui
    Euh... je crois

    Dans les références, j'ai la case "Microsoft Excel 10.0 Object Library" qui est cochée.

    J'en ai pas besoin d'une autre, si?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjou

    Peux-tu nous mettre le code où tu te lies à ton classeur Excel.

    Starec

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Non.

    Peut-être déclarer l'application Excel dans ton code.

    Jettes une oeil ici

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Je me lie à mon classeur excel avec ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set exc = cadreindependant.Controls(1).Object.Worksheets(1)
    Le tableau excel est en fait dans un cadre d'objet indépendant situé dans un formulaire. J'appelle ce formulaire avec un sous-formulaire dans un autre formulaire. (Je sais c'est compliqué)
    En fait je me suis un peu gouré sur les noms. "cadreindependant" représente le sous formulaire, "Control(1)" représente le cadre d'objet indépendant, "Object" représente le tableau excel qui est dedans.

    J'ai bien essayé de déclaré le tableau avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim monexcel As Excel.Workbook
    Set monexcel = tablomesures.Controls(1).Object
    Set exc = monexcel.Worksheets(1)
    mais l'erreur persiste.
    Je comprend pas...

  7. #7
    Invité
    Invité(e)
    Par défaut
    Re

    A mon avis tu ne dois pas pouvoir avec le cadre d'objet independant, il faut que tu pilotes excel (voir le lien que t'as donné Heureux-Oli), ensuite tu coupes ta connection et là tu peux peut-être affiché ton tableau.

    Je ne suis pas sûr de la méthode à tester.

    Starec

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Après avoir ouvert le fichier Excel, je dois pouvoir faire des copier-coller dedans, et ensuite, à l'aide d'un bouton, pouvoir mettre les valeurs de certaines cellules dans ma base de données. Je ne pense pas pouvoir le faire avec un tableau Excel externe à ma base...
    Ce qui me parait bizarre avec cet erreur, c'est qu'elle ne se produit pas sous Excel. Seulement dans Access.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Ton code marchera si tu pilotes Excel avec Access (voir le lien que t'as donnée Heureux-Oli), et par le même principe tu peux récupérer les données de Excel dans Access.

    Le tuto de Caféine explique les différentes techniques.

    Starec

  10. #10
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    J'ai essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        On Error Resume Next
        Dim xlApp As Excel.Application, xlWkb As Excel.Workbook
        Set xlApp = GetObject(, "Excel.application")
        If Err <> 0 Then
            Err.Clear
            Set xlApp = CreateObject("Excel.application")
        End If
        On Error GoTo 0
        Set xlWkb = xlApp.Workbooks.Add(tablomesures.Controls(1).Object.Worksheets(1)) 'chemin du fichier
    Ca merde a la dernière instruction.
    La méthode 'Add' de l'objet 'Workbooks a échoué

    J'ai essayé de mettre un "s" à "Excel.Workbook" ou de juste mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xlWkb = xlApp.Workbooks.Add(tablomesures.Controls(1).Object) 'chemin du fichier
    ca marche pas non plus. J'ai plus trop le temps de faire des tests dans l'immédiat, et je remercie tout ceux qui ont pris du temps pour essayer de résoudre mon problème. Je creuserai plus en profondeur les diverses solutions qui m'ont été proposée jusque la quand j'aurais a nouveau du temps libre.
    Bon weekend a tous!

Discussions similaires

  1. [XL-2003] Assigner une selection multiple dans un tableau
    Par mathspountz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/12/2014, 11h00
  2. Réponses: 5
    Dernier message: 17/07/2008, 09h18
  3. requêtes dans un tableau excel!? possible?
    Par flower dans le forum Access
    Réponses: 2
    Dernier message: 12/05/2006, 16h43
  4. Réponses: 7
    Dernier message: 02/05/2006, 11h28
  5. [VBA-E] connaitre le nombre de ligne dans un tableau excel
    Par bigbarbe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/04/2006, 10h03

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